2011-12
24

热爱摔角那几个人的首次碰头

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

今天是个永远值得纪念的日子!

从左到右:Single,GreenC,xrspook,King2008,华D,Y2Jericho(更多照片

今天是2011-12-24,顾名思义,平安夜!但更重要的这是我第一次参加摔迷聚会的日子!是xrspook的debut,虽然在某种程度上我已经是小有名气的main event选手。今天,在一个月前定下这个活动的时候就已经注定不平凡!

但今天的开局其实并不顺利,首先,我醒来的时候已经是早上9点多,虽然我昨晚没到12点就睡觉了。起来先是看本周Smackdown,然后等官图。我那个去!modem神经病了!不时的自动断线自动连接,网页开着开着不能开就是因为这个原因!然后,我继而发现YARK失效了!!!!是“us”和“www”的问题,修改了,在XAMPP里行得通,用Dropbox同步,但网页却还是囧,然后明白到Dropbox的确和我电脑同步了,但Dropbox大概没有和服务器那边同步过来,看来要找xinca了!接着,看到今天新闻说Alberto Del Rio已经从下周的所有录影和现场演出的名单中删除!原因显而易见,首先,可能是他的伤势其实没有之前的乐观;或者,领导实在太关心他了,一定要他100% OK;再或者,heel骨子里的coward成分发作了,他申请休假。理性地,我不希望是第一个原因;感性地,我不希望是最后一个原因;但,老麦就这么的在乎他?一定要如此坚持的为ADR着想?还是老板要借这个机会彻底地让ADR退出一线剧情让新人上位?乐观悲观都在弦上,我在这里干着急毫无用处。“即便你去了马戏团我都会支持你的!”这是石头的话,对我来说也如此。不安心不淡定根本不能解决问题。

N多的事导致我无法在合适的时间出门口,准备出门口的时候才记得要带上SD,然后发现MP3的传输速度严重坑爹!我赶时间,只好取消传输,抓紧出门。公交驳脚到地铁,公交上人很多,貌似撞到了某中年大叔,他一直盯着我,要我把灭掉的样子。地铁,好不容易挤上3号线这人间炼狱。3号线换1号线时,我快下完楼梯列车到了,但却发现要走上起码20米才能上车,当我冲到那里的时候已经关门了,但门突然打开,且在闪灯,我犹豫了不到1秒钟,在门开始正在关上的时候,跳进了列车。从来没有试过这般玩命,但在那一刻,肾上腺素让我豁出去了,因为我知道,那个时间,我已经迟到了,我不能再拖延!当我出站的时候,我大概迟到了5-10分钟。

刚出体育中心B出口,就看到3个男的站在那里,我的第一感觉默认就是他们了,但他们视我不见,我又不好意思先开口。于是我也站在出口附近张望,接着,Single走了过来,他只能是Single!就这样,我,Single,King2008和Y2Jericho相遇鸟。又过了一些时候,GreenC来了,最后是华D。

在转角咖啡厅看的WWE PPV TLC 2011,那里的环境很赞!我们也算挺放得开吧,气氛很好,虽然只有6个人,但我们有时的确能把那个小地方high爆。

在川国演义解决晚饭问题,幸好我们在包间,否则我们的音量肯定会把全场人都骚扰到,今晚在那里等大厅饭桌的人超级多!!!

在石牌桥附近的M记解决统计的技术问题,估计附近的人被我们的音量影响得不轻。

没有什么动机,我们只是一群爱摔角的人!女的,留学的,东莞的,佛山的,大学城的,刚上大学的,能在平安夜这天凑在一起,这是缘分,这是destiny!destiny,真的!在今天,我确信destiny这玩意的存在!!!!!!没有之前,往后也不能重复,因为这是Single,King2008和我的第一次。当我们这几个喜欢摔角的人在一起,火花理所当然。

期待下一次,对吧,少年们!

2011-07
9

变了

By xrspook @ 22:18:50 归类于:烂日记

很聪明地,昨晚折腾出了YARK – P25,但昨天的blog我没有在昨天写,因为我深知那篇东西肯定得花很多时间,用Word小测试了一下,3000字+字符数达到了8000+。今早8点多起来就开始写,写到下午2点多,真变态。除了写作时间,还有截图时间以及在WP发布时调整代码的时间。因为有太多的HTML符号,div一度让我的抓狂,因为在预览里我发现网页歇菜了,只能很机械地一个个搜到底哪里出了问题,最终得出结论,在<和div、a之间都加上“空格”就能解决问题,囧。贴代码本来是很愉快的事情,但代码来到网页,容易影响到别的东西,哪怕那只是正则语句的一部分,一个不完整的代码,不得不说,浏览器们太聪明了。 昨天回来,发现很多事都变了,我只离开了一周而已嘛。 路过翻版DVD地摊,惊讶地认出了Randy Orton、John Cena和一个某人为封面的WWE DVD。 赤岗路塞车塞了几百米。 小区开始铺设管道煤气的管道。 无论我用多少个不一样但差不多的变压器尝试,那个该死的电子琴还是不理会我。 关掉了RAMBoostMaster,同时开Firefox、QQ、微博AIR表示压力不大,看来让我机子卡死的还有那个整理软件自身的频繁内存、CPU压缩。 今天又玩走着去外婆家,用了约1个半小时,我走得一点不快,所以如果走快的话说不定1小时就够了,但为什么我却感觉如此痛苦呢?大概是因为吃过一根玉米棒一只鸡蛋的早餐后我再没有摄入更多的食物和水分吧。觉得我是饿了而不是累了。广州真小,一个半小时就能从20年前算海珠区很东的地方走到较西的地方。 近期看书太少,完全不知道该怎么写题目这玩意了。 人啊,不读书还真不行。

2011-07
8

双龙出海

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

今天是个伟大的日子,今天我做了两件貌似简单但实际上都不容易的事情:一、用电子琴录制了Realeza(WWE Alberto Del Rio Theme 2010)并用WIDI生成了MIDI版本;二、努力奋战、冥思苦想2天后,我终于达到了我的目标,完成了大名鼎鼎YARK系列的P25 PHP小程序。

所以,对我来说,这是划时代的一天,心情大好!

一、音乐部分

几个月前我就已经挖出家里的古董电子琴(小学时期的产物)来折腾Realeza了。一般熟练,但我只会右手,和弦对我来说是浮云,正如听音乐我只能辨别出主旋律一样。我一直在奢望自己能学会哪怕一点点左手,但电子琴的变压器不行,大号电池的电量也快没了,我得在电子琴还有声音之前赶快完成录制。

以下是xrspook极其简陋的两个自创版Realeza,请凑合着欣赏:

Realeza(WWE Alberto Del Rio Theme 2010)电子琴版[mp3]

Realeza(WWE Alberto Del Rio Theme 2010)WIDI转化MIDI版[midi]

说明:mp3就是拿着个mic对着电子琴录制的,没啥好说,请原谅我的古董电子琴没有跟电脑对接输出的玩意,毕竟那是1998年以前的产物啊,还只是386、486时代呢。midi嘛,不是我自己写的,是用WIDI把mp3转出的,因为是毋庸置疑的“独奏”,所以捕捉到的绝大多数音都是我的意图,但有几个高音电脑识别出来时一个变2个,没搞懂原因,但错有错着,恰逢那是高潮部分,出现这些我意想不到的小变动反而让音乐更丰满。

二、PHP程序部分

从有思路到PHP完全成型,我用了2天,超过15个小时!累着并快乐着!我这个喜欢折磨自己的人……这不能算折磨,这应该说是定下目标然后努力实现,I’m proud of myself.

先说说这个YARK – P25的整体思路,昨天已经说过,也就是“用正则提取,table输出,然后直接Excel粘贴保存”。昨天傍晚说到,我被正则难住了,但昨天晚上,我却突然惊醒地想出了正解。在WWE P25层层div的网页里成功提取出我需要的排名部分。用的是这条正则,针对的是我需要提取信息的开头和结尾部分做筛选。

1
preg_match_all('/< div class="row(.|\n)*?<div class="clear">/', $data, $log);

这条规则是很有针对性的,可以把WWE P25页面我需要部分嵌套的div全部提取出来,但对其他嵌套div网页无效。这条规则的重点是“(.|\n)”意思是“除换行符以外的任意字符或者换行符”,也就是全包围了。从前提取img的时候“.*?”也就足够了,但提取div不一样,因为换行是习惯性的,之前我正是在换行这个问题上被卡住,看到某个网页的时候被这句很创意的“(.|\n)”激发,最终,琢磨出我的第一次正则。

筛选出的排名部分网页源代码包括神马呢?以下是详细说明:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<div class="row none"> /* WWE P25页面里,一个选手的所有信息的开始,这里的class可能是row none、row fire、row ice或row (注意row后的空格)*/
	<div class="info dir-up"> /*这里的class可能是info dir-up、info dir-dn或info dir-nm,升降平,你懂的*/
		<div class="direction"></div> /*配合升降平的一个说明*/
		<div class="thisweek"></div> /*本周排位,我需要的第一个信息点*/
		<div class="lastweek"></div> /*上周排位,如果我把每周排位都收集了,某一周的上周排位对我来说当然没啥意义*/
	</div> /*info dir-up结束*/
	<div class="thumb"> /*小头像部分,这里没有我需要的信息*/
		<a href="***"></a><a href="***" class="imagecache imagecache-98x105_thumb imagecache-linked imagecache-98x105_thumb_linked"><img src="***" alt="" title=""  width="98" height="105" /></a> /*用了两层超链接,没搞懂为什么,外层没有class,内层有class,核心部分是小头像图片img,注意,有些选手是没有超链接的,比如说那些Tag Team*/
	</div> /*thumb结束*/
	<div class="thumb_none"> /*这里可能是thumb_none、thumb_ice、thumb_fire或thumb_,对应头像无特效、冰、火以及无头像状态*/
	</div> /*thumb_none结束*/
	<div class="details"> /*选手信息*/
		<h2 class="double-arrow-title"> /*二级标题开始*/
			<a href="***">***</a> /*选手名字+超链,选手名字是我需要的第二个信息点*/
		</h2> /*二级标题结束*/
		<div class="text">***</div> /*这周发生了神马事,我需要的第三个信息点*/
	</div> /*details结束*/
	<div class="clear"></div> /*纯粹的网页需要清浮处理 */
</div> /*row none结束*/

这段内容重复25次就是一个P25的完整排名信息。

第一次正则只是个开始,是把偌大一个网页的信息进行初步挖掘。其实也不能算一个网页,自从WWE 2011年头改版后,网页构成发生了巨大变化,比如说到处都有“LOAD MORE”的标志,你必须点击才能看更多内容,以P25的页面为例,我们看到的是:

http://us.wwe.com/inside/power25

但实际上,一共需要载入5个页面才能看到全部25个排名:

http://us.wwe.com/inside/power25
http://us.wwe.com/inside/power25?page=1
http://us.wwe.com/inside/power25?page=2
http://us.wwe.com/inside/power25?page=3
http://us.wwe.com/inside/power25?page=4

每个页面只有5个排名。这也就能解释为什么浏览WWE网页的速度会比从前快了,因为一次性加载的信息减少,信息加载随着浏览进程的推进而逐步增加,对于那些纯粹路过的人来说省事多了。

这5个页面的结构是一样的,对我这个需要提取信息的人来说WWE的这个“改进”完全是件坏事!一开始,我是这样提取页面信息的:

1
2
3
4
5
6
7
8
9
$data0 = get_content($_POST['url'])$data1 = get_content($_POST['url']).'?page=1'$data2 = get_content($_POST['url']).'?page=2'$data3 = get_content($_POST['url']).'?page=3'$data4 = get_content($_POST['url']).'?page=4';
 
/*经历N步操作,N步操作的工作量都是×5,我甚至都在考虑要不要来个for语句来减轻修改数字的压力了*/
 
$data = array_merge($data0[0], $data1[0], $data2[0], $data3[0], $data4[0]);

但后来,我发现完全可以这样嘛:

1
$data = get_content($_POST['url']).get_content($_POST['url'].'?page=1').get_content($_POST['url'].'?page=2').get_content($_POST['url'].'?page=3').get_content($_POST['url'].'?page=4');

如此一来,5个页面的信息也就能一次性地聚合到一起,快、准、狠!

我好像扯远了,回到第一次正则提取的内容。我昨天的思路是对其进行XML数组化,但很遗憾,XHTML网页不是XML,当信息传入外包的XML数组化程序时失败告终。于是,我就只能靠自己继续正则了。

上文已经提到,在第一次正则后的内容里,我有3个需要提取的信息点,它们分别是:

1
2
3
<div class="thisweek"></div> /*本周排名*/
<h2 class="double-arrow-title"><a href="***">***</a></h2> /*选手名字*/
<div class="text">***</div> /*发生事件*/

一次正则后选手名字里有超链,头像里也有超链,“h2”本是选手名字的唯一标记,但由于中间多了个超链,万恶,所以,我也很万恶地一句正则把我不喜欢的东西全部干掉。

1
$log[0] = preg_replace('/< a [^>]*>|< \/a>|<img [^/>]*>|\t|\r|\n/', '', $log[0]);
1
2
3
< a [^>]*>|< \/a> /*干掉所有超链*/
<img [^/> /*干掉所有图片*/
\t|\r|\n /*干掉所有制表符、回车和换行符*/

二次正则过后,提取内容变得简洁。

必须提醒:在PHP里正则针对的都是字符串,所以,如果源数据已经是数组的话,请自行拆解。否则会报错,并且会暴露出当前运行脚本的完整路径,这可是安全性的问题啊,详见这里

然后呢,因为一次正则我只提取到< div class="clear">显然后面仍应该有< /div>< /div>

才能让这个提取内容闭合完整。所以我加了这么一句:

1
$log[0] = str_replace('< div class="clear">', '<div class="clear"></div>< /div>', $log[0]);

到此为止,经过2次正则,1次字符串替换后,那坨东西符合我要求了,我可以进行第3、4、5次正则完成我的最终提取。

1
2
3
preg_match_all('/< div class="thisweek">([^< ]*)/', $log[0][$i], $rank[$i]);
preg_match_all('/<h2[^>]*>([^< ]*)/', $log[0][$i], $name[$i]);
preg_match_all('/< div class="text">([^< ]*)/', $log[0][$i], $text[$i]);

好吧,到此为止,整个分析、剥离过程完满结束,就只剩下按要求的规范化输出。就是把我提取到的东西table化,略。

整个过程的部分源程序如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
function get_content($url) /*网址转化为网页内容*/
{
	$ch = curl_init();
	curl_setopt ($ch, CURLOPT_URL, $url);
	curl_setopt ($ch, CURLOPT_HEADER, 0);
	ob_start();
	curl_exec ($ch);
	curl_close ($ch);
	$string = ob_get_contents();
	ob_end_clean();
	return $string;
}
 
/*数据传入开始*/
 
$_POST['url'] = str_replace("www.wwe.com", "us.wwe.com", $_POST['url']);
$data = get_content($_POST['url']).get_content($_POST['url'].'?page=1').get_content($_POST['url'].'?page=2').get_content($_POST['url'].'?page=3').get_content($_POST['url'].'?page=4');
 
/*数据传入结束*/
 
/*正则提取及替换开始*/
 
$data = str_replace("&amp;", '&', $data);
preg_match_all('/<div class="row(.|\n)*?<div class="clear">/', $data, $log);
$log[0] = preg_replace('/< a [^>]*>|< \/a>|<img [^/>]*>|\t|\r|\n/', '', $log[0]);
$log[0] = str_replace('< div class="clear">', '<div class="clear"></div></div>', $log[0]);
 
for($i=0;$i < count($log[0]);$i++)
{
	preg_match_all('/<div class="thisweek">([^< ]*)/', $log[0][$i], $rank[$i]);
	preg_match_all('/<h2[^>]*>([^< ]*)/', $log[0][$i], $name[$i]);
	preg_match_all('/<div class="text">([^< ]*)/', $log[0][$i], $text[$i]);
}
 
/*正则提取及替换结束*/
 
/*table格式化开始*/
 
echo '< table>< col>';
for($i=0;$i < count($log[0]);$i++)
{
	echo '<tr>';
	echo '<td>'.$rank[$i][1][0].'</td>';
	echo '<td>'.$name[$i][1][0].'</td>';
	echo '<td>'.$text[$i][1][0].'</td>';
	echo '';
}
echo '';
 
/*table格式化结束*/

截图是必须的

这就是YARK – P25的威力!你或许会问,就那么一大坨东西有神马用呢?呵呵,真正用法需要把它们贴到Excel。

关于复制那一大坨信息的Excel粘贴也有讲究。

首先,打开Excel,然后选择“编辑 – 选择性粘贴”,然后在“方式”里选择“文本”,按“确定”。最后简单调节表格列距以及单元格格式后,你就能得到如下图的效果:

你一定会问,为神马要如此折腾“粘贴”而不用“Ctrl+V”?呵呵,这和我的用途有关,你完全可以在“选择性粘贴”里用默认的“HTML”方式,结果跟直接用“Ctrl+V”一样,所有粘贴数据都全部挤在1个单元格里,这显然不符合我的设想,如果最后得出这样一个结果的话,我之前所做的事情都白费了。

为什么一定要以现在这个各信息分离的Excel形式呈现呢?因为,我做这么多事情的目的就是能更快更直接地提取我需要的信息,做P25的每周统计。

统计!统计是我的目的!!!!

还记得2天前我做的“ADR前46周的WWE P25”?那可花费了我半天的时间打开一个个网页,一段段信息复制粘贴并最终形成图表。如果,我要对WWE所有选手都这般干的话简直是天方夜谭,但我的确想获取那些信息,知道那个趋势,该怎么办呢?所以我有了弄YARK – P25的念头,并付诸行动,最终华丽地成功了!

YARK – P25在此!聪明的你肯定知道怎么用的。

往后,随着icon化的日益加剧,我真的可能不再看WWE的摔角而转投其他联盟,但我会记住WWE的,不单是因为他们把我引入摔角门,更重要的是为了提取信息,我从他们的网页我自学到了很多,他们的网页严谨规范,虽然可能不是最好的,但我已经从中领会到很多,难道这还不够么?!

哇咔咔,今天的blog很技术,有心人,你们会懂的。

2011-04
9

加班幌子中

By xrspook @ 22:39:27 归类于:烂日记

周末,加班也好,不加班也好,一个样,反正我是习惯周末粘电脑的了。

今天完成了YARK的小升级,实现了对http://www.wwelivetour.com/的兼容,虽然呢,这个地方放出来的图片大多是WWE的官图,但有些虽然角度和光线不太好,显然是摔迷上传的照片是重点,纯粹凭直觉去判定那是不是官图,但管它呢,全部贴出啦就得了。正则是神仙,神马鬼东西都不怕,只要是规则的,不是用随机码遮遮掩掩的。但即便是遮遮掩掩的也会有解决办法,比如说Flickr遮遮掩掩的原图还不是有人能读取出来,呵呵呵。

两个星期后,我再次开始写19977的摔角统计报告,2011年第12周Single版的debut不错,第13周,也就是WrestleMania前的一周,WWE的摔角周赛简直让人掩面,所以绝对应该让看Impact!的Single去报告的,其实呢,我还想继续酱油下去,但这周Smackdown再次回到了25min以上,我是得兴奋一下的。喜不喜欢是个很主观的东西,心情很重要,精彩不精彩就是建立在这两个因素之上了。我越来越对吹得很厉害的PPV表示不敢恭维了,先是Royal Rumble,然后是WrestleMania,所以,对往后的Summerslam我不打算抱太大希望,更不用说明年的WrestleMania了。

还有Smackdown观后感没写。

还有WrestleMania的外国统计报告没翻译。

只剩下一个周日了,我能干完么?

2011-04
1

用Dropbox做文件中转

By xrspook @ 17:29:19 归类于:烂日记

一直很小心对待的WordPress升级原来只需点击后台,升级过程不超过10秒就好了。不得不说,我一直以来都太小心了……但其实我一直没有对WP的核心程序做修改,我修改的只是插件和主题,恰好那两样东西都是核心WP程序所没有的,所以,即便升级,新程序覆盖上去,也是没有丝毫问题的。为什么从前我脑袋瓜里想到的是删除并重新建立而不是覆盖替换呢?!显然,我想过头了。

有xinca在一切问题都不是问题,即便有再大的问题,他老人家也一定可以解决。

自从我们搬到新服务器后就没有安装后台,所以当我向他要后台登录方式的时候他无法拿出。那怎么更新呢?没有后台,也没有FTP。今天我们用了一种全新的更新方式——Dropbox,利用Dropbox的同步实现读写!!!!太牛了!因为我要修改更新的只是些几KB的小php,转眼间Dropbox就同步完成,同步完成后,网页也就能显示了。我们利用Dropbox实现从前FTP的功能,但FTP,你懂的,那东西有多慢,而且Dropbox还能自动保存你不同版本的东西1个月,这种优势FTP无法与之相比。有什么比我们系统文件夹内操作更可视化的呢?

不得不说,利用Dropbox的同步技术,实现单机和服务器之间的数据交换真的爽!但唯一可能有缺陷的就是无法设置文件的各种读写权限,暂时,我还用不着那个。Dropbox同步是高超的,但同时也可以是致命的,如果某天某坏人删掉你电脑的那些东西,虽然Dropbox有后悔药,但还是很恐怖的。

今天偶尔发现WWE改版后的图片展示页出现了图片说明,但不是每张图片都有,通过href里的title或img里的alt体现,没搞懂,为什么img的引用地址居然用ref开头而不是src开头呢?不是说每个img必须有alt才能符合W3C的要求吗?显然,WWE改版后一些图片有alt一些没有,汗。首先我使用2个正则获取到图片地址及不是每个图片都有的描述,然后,再用2个for语句实现图片数组和描述数组的统一,这样做有点笨,希望有高手指点改进,源程序如下:

1
2
3
4
5
6
7
8
9
10
11
12
preg_match_all('/(?< =href="\/f)(.*?)" title="(.*?)">/', $data, $alt);
preg_match_all('/(?< =href="\/f).*\.jpg/', $data, $log);
for($m=0;$m<count($log[0]);$m++)
{
	for($n=0;$n<count($log[0]);$n++)
	{
		if($alt[1][$n]==$log[0][$m])
		{
			$alt2[$m]=$alt[2][$n];
		}
	}
}

感觉周赛图片WWE都没放描述,只在一些WrestleMania Axxess活动里放了,希望呢,那些做网页的勤快点,描述是很重要的啊!

今天是GA的musical drama集,兴奋呢!

Page 1 of 3123»
COPYRIGHT @ 我的天 | Theme by xrspook | Power by WordPress | Valid XHTML 1.1 and CSS 3 Go to top