使用chrome下载资源

以前一直不清楚怎样方便地下载网页上的资源。假如是图片自可以另存为啦。但如何下载一个flash呢?往往只能跑到缓存里面去慢慢找,很麻烦。或者用ie和迅雷的flash感知功能配合。不过总不至于为了下载个flash就非要开ie开迅雷吧。。

今天发现chrome的审查元素功能的“资源”项非常强大。无论看得见看不见的,无论藏在网页的什么位置,无论是img, 是div背景还是嵌入的富媒体(如flash或video),只要浏览器加载了,都可轻松下载。

方法自然是先打开审查元素界面啦

打开资源界面,可以看到所有加载的资源列表。假如是流媒体的话,请开始播放流媒体,让网页将缓存加载完毕。你会发现流媒体的总大小和已传输大小都已清楚地被chrome标明。

当缓存加载完毕,这里就有个小trick啦。。要双击左边显示的资源名称。。浏览器就会开始下载这个资源啦。。
注意假如同时下载多个资源的话,可能会弹出对话框,需要确认一下才行。

希望这个对大家有帮助~~

单汇图的环的处理

最近还在搞 SC AI。

由于每个单位仅能攻击敌人,所以其攻击链类似一个树(其每一个节点都是多源单汇的,类似于树的有一个父亲但有多个儿子的情况)。唯一不同的是这个树的树根也可能攻击一个敌人,从而形成环。但是由于一个单位只能攻击一个敌人,所以在一个独立的联通分量里面,最多只有一个环。

现在我在考虑使用递归来遍历这个图,然后得出每个单位在目前情形下再有多少轮会被消灭的报告。之所以要遍历,是因为有这种情况:a攻击b。c和d都攻击a。b攻击a。c和d又各自同时被两个单位攻击。在这种情况下,表面上看a遭受的攻击最多,他应该选择撤退。但是假如考虑到c和d的血量,或许c和d会在a之前被消灭。之后a遭受的攻击就不比b多了。所以在某种情况下,a应该采取的策略是继续进攻而不是撤退。

以上是我决定计算攻击链的理由。

于是在采取递归遍历这个图的时候,关键问题是怎样避开这个环。首先是如何发现这个环,然后是如何处理他。关于发现,我现在采取了一种非常低级的办法。我使用了一个静态的数组,记录每一次递归遍历到的节点。假如下一次递归遇到了这个数组里面的节点,则表示发现了环,并开始调用处理环的函数。我相信关于发现环一定有更好的算法。可惜暂时没有时间做了,加上问题都是节点数量在20以下的,所以也没有必要做得很复杂。
至于处理环的方法,我决定在这个环上寻找最早被消灭的节点。由于仅可能有一个环,所以先把除了环之外的分支计算完毕,之后将这些分支的贡献都先计算掉。此时得出的最先被消灭的单位,在环贡献也计算的情况下一定也是最先被消灭的。因此此时可以先计算这个节点的消灭轮次,然后在这个位置将环打开,并按照无环的逻辑去计算每一个节点。

这个问题抽象出来是个很有趣的图论问题,今后应该可以继续深入思考他的意义,并跟其他图论问题做一些比较,不过暂时先放在这里吧。

关于太阳耀斑的一些不负责任的谣言

前一阵子看到NASA的关于太阳耀斑的警告。。。一直在胡思乱想。。。

我发现我特别擅长把一件大不了的事情胡思乱想成一个世界灾难。。。

假如耀斑足够猛烈,离子束击毁卫星是不可避免的事情了。之后就是全世界通讯瘫痪。没有卫星导航,长途航班可能都会受阻。重新发射卫星完成原有信息网可能需要长达几年时间。这之间手机业深受打击。同时给了有足够规模的硬件商和软件商重新发明轮子的时间和机会。当然同样也是机会主义者和黑客的再造天堂。终于又有机会可以大显身手了。

据信耀斑爆发时期将会是2013年左右,同样是传说中的地球磁极南北倒转的时间。地球磁场是地球大陆的保护膜。假如由于磁场南北掉转而形成地球磁场的极弱期,地球抵抗太阳风暴的能力就会大大减弱。以至于太阳风暴对人类的影响侵入到大气层以下。所有没放入铅罐中保存的电子存储设备都会被抹去。假如被抹去了BIOS, 计算机甚至无法开机。自动化工厂停业。发电厂故障以致大面积停电。电子钥匙的汽车甚至可能无法发动。假如没有妥善保存,被抹去的软件就一去不复返了。很可能软件业又会重新回到黑客纵横的战国时代。互联网、操作系统以及表层应用和服务全部都得重新建造(当然只要妥善保存,例如刻录成光盘应该就能躲过打击,所以这一点应该没有那么严重)。最可怕的是一旦攻击了银行财务数据库还有股票交易信息数据库,将会对世界经济造成不可估量的恐怖打击。富人一夜之间倾家荡产,纸币瞬间沦为废纸。世界重新倒退回以物易物和金本位的时代。当然银行如果认真应对,将数据信息在打击之前固化(例如打印为纸质资料,或者刻录为光盘),就应该能够确保无虞。而就个人而论,在打击之前寻求将纸币换为实物当为智举。投机商们,放血本买房子买黄金买石油吧!并且一定要拿在手上。账单上的虚拟财富,一夜之间就可能化为乌有。。。

好吧。。早就说了是胡思乱想啦。。不过也希望政府还有业界能确实重视这个事情吧。对个人而言,则是一次投机的好机会。。

关于许愿

零碎的一个想法,关于许愿。

假如你可以实现一个愿望,但只能是一个,应该许个什么愿呢?

“我希望我能实现三个愿望。”

无限循环。。你就可以实现无穷多个愿望了。。哇哈哈。。

sc ai 估值ANN初步完成,计划作战模块的GA

连续熬了几天夜,SC AI的估值函数神经网络和训练架构终于搭建完成了,现在就是还有一些代码中的小问题需要小修小补一下,然后就是再做一个自动反复启动的程序让他自己跟自己反复对战就行了。不过要自我对战的话,需要借老爸的电脑连成局域网才行。。那之前先让他和电脑AI练练再说吧。。

这部分只做了估值函数,也就是说只是不断预测比赛谁的胜率更大,而没有让他参与到决策之中(所以决策模块仍然是最基本的“勇气值”模型)。这里我为了能够将各个单位的位置信息形成输入放到神经网络中去,花了很多时间。。直接把横纵坐标放进去肯定是没有意义的。需要一些能够更好的刻画战场情形的特征值才能有效的训练神经网络。结果是我没有采用经典的ANN三层模型,而是使用了一种动态更改的模型。

现在我使用最小生成树来刻画战场特征,并将每一个最小生成树的边当作一个输入,这个边是一个复杂输入,包含对方的hp,护盾值,是否处于攻击状态,与自己的距离等信息,对每一个信息,都需要给定一个对应的权值用于训练。因此这个神经网络的神经元就是每个单位。我再将攻击和锁定目标也作为这个神经网络的输入边,来增加刻画战场状态的特征值。为了防止神经网络出现回路,我将神经元复制一遍,分别作为输入层和隐藏层,将前面介绍的最小树边和攻击边由输入层的对应单位连接到隐藏层的目标对应单位。这样做就保证了没有回路。最后我在输出层放了两个神经元,分别代表玩家0的胜利期望和玩家1的胜利期望。最后,由于所有的单位目前都是zealot, 因此他们的特征权值应该是共享的。我参照《机器学习》上介绍的方法,每次反响传播之后将其权值求平均值再一次赋值,使其能够更快的学习和避免过度耦合。

我使用了我自己同电脑对战的一个录像用于训练。首先写了一个解析录像的小程序,将每一帧的特征信息提取出来写入文件中。之后利用另外一个程序依次将这些特征信息进行计算和处理,将简单的坐标信息转换为最小生成树和攻击边等信息。然后将这些信息作为输入来训练神经网络。目前遇到的障碍是在比赛结束之前,无法给出比赛谁胜谁负的准确信息。如果一次比赛只能根据结果训练一次,则训练周期过长,是不可胜任。我采取《涌现》一书中提到的说法,认为根据估值函数求出的估计值,越接近比赛胜利时估计值越为准确。因此可以利用后面一帧的估值作为前面一帧估值的参照量,并依此进行反向传播。为了能够得到更快的训练速度,我设置当单位数量超过敌军,或单位数量相等而总血量大于敌军时,就认为本方处于优胜状态。这或许并不完全准确但已经是非常保守的估计了。我根据书中提到的标准,设置0.9为优胜,0.1为失败(前述神经网络中所有输出均通过sigmoid函数挤压到(0,1)区间)。至少在昨晚的几次实验中,这套方案得到了较好的成效,接下来的就是要继续训练他直到稳定为止了。为此我还需要再做更多录像,然后就是要想办法让他自己跟自己对战了。

接下来要做的就是决策部分了。这部分我准备使用GA, 即遗传编程。可以根据士兵处于不同情形时(危险/安全,接敌/后方,被包围/被保护,是否接触边界等等)分别设定不同的行为(攻击,攻击移动,移动,原地不动等等),然后通过遗传编程来找到最好的组合。当然好与不好的估值,则通过前述神经网络得出。

现在最愁的一部分就是如何决策移动。因为移动是一个几乎是非离散的量。不可能去考虑地图上的全部点。一定要给出合适的特征值来刻画好的和不好的移动目标。这包括了是否被包围,是否阻碍了友军等等。然而这样的特征值仍然没有找到。前面提到的最小生成树似乎有些意义,但对整体有意义的东西用在局部上有些困难。目前还在思考对策。。。

SC II rocks!

Firstly, they’ve got an awesome installer, built with flash which they enjoy the most.

Secondly, I really like the post… Reminds me of… whatever…

网页设计的人性和反智

今天正好又看到同学share了关于UCD的文章,就忽然想把肚子里早就有的想法说出来。

http://ucdchina.com/snap/7536 这篇文章是讨论例如展示blog的某篇内容时,给出的前后链接往往是“上一篇,下一篇”,是否改成“新一篇,旧一篇”更好,甚至还不够清晰,是不是“较新一篇,较旧一篇”更好。

其实我似乎已经在什么地方见识过“较新一篇,较旧一篇”了。不过我认为这些尝试的方向已经完全错误了。确实,网页设计应该以尽可能清晰,让用户的误操作尽可能少为原则。可是过度的注释只会导致更多的混乱。

之前就有人在讨论这个问题,说UCD的目的是让用户更少思考,随便怎么点都不会犯错。于是结果是网页变成了反智的东西。他是把人变得更傻的东西。因为在网络上你根本不需要思考,只需要按照那帮设计师给你安排好的路线去点就行了。感觉像是捕鼠夹上的一块奶酪。根据本能,你一定会这样点击那样点击。网络假如按照这种方式去设计,并没有遵循这个自然界的本来面目,也不会是最合适的。

所谓人性化的设计,应该是更加符合人性的设计,而不仅仅是把顾客当成傻逼然后随意摆弄他们(当然这句话的前提是针对相当的网络人群而言了,对老年人和小学生,采取更加亲切的界面当然是合理的)。人所处的自然界,原本就是没有那么多注释和描摹的,是留给人自己去探索的。而人,尤其是青少年,拥有的极大的好奇心,正好与这个世界的特性相适应。同样的道理,网页设计也应该在方便清晰的基础上保持简洁,额外的注释完全可以去掉,让人去想。这样反而能够给人带来足够的空间。以“上一篇,下一篇”为例,用箭头同样能得到不错的效果,当然具体还是看整体网页的布局和格调而定。

又比如搜索引擎的搜索框,是不是需要在前面加一个注呢?“搜索框:”

假如网页的安排更加合理有序,网页的功能本身就应该是自解释的,甚至达到看不懂本国文字的外国人根据网页布局的形状颜色也能猜到差不多,那么就不需要过多的文字解释啦。当然能否做到这一点也要看网页的功能类型不同而定。

因此我一直不喜欢淘宝的首页界面,改了那么多次版,只感觉一次比一次糟糕。过多的功能一次性展示在首页,繁冗的文字纠结就像电线杆上密密麻麻的小广告。不过回头想找个网站跟他对比,忽然发现不太可行。虽然国外有eBay,不过国人性格不相同嘛,无法类比。我是确实知道中国人就喜欢热热闹闹密密麻麻的那种感觉。假如页面搞得过于清冷,肯定会被人鄙视的。但就使用的方便程度上来说,我还是认为不应该把所有的内容展示在第一页,稍微分一下层次不会让用户完全没有耐心的,并且ajax的存在也完全可以在分层的前提下避免跳页。话又说回来,把所有的内容放在第一页反而耽误了整页加载的速度。其实很多用户上来想做的事情不多,可能最主要的就是登录支付宝和用那个搜索框搜索了吧,其他的东西都可以往后放。

就好比,百度把他的图片搜索mp3搜索等等都单独跳页,也没有降低其他服务的使用率嘛(当然baidu是学google的但是人家不是自称懂中国来这么。。)

于是完全没有设计过网页的人随便吼几句啦,到此为止啦。。。

近况以及草原上的巧遇

这次草原旅游还有一个奇妙的巧遇,就是居然在随团旅游的时候碰到了我的高中老师们的旅游团!第一天的傍晚在马场就看到他们了,尤其是当年教我辩论的语文老师,一米九十几的个头以及自信的大步一眼就认出来了,当时都觉得不可能,结果再往后面一看,浩浩荡荡的全是当年的老师们。太兴奋了正想跟他们打招呼,可惜我们的旅游团开车走人了,就这么擦肩而过。

自然就会认为我们的旅游团和他们的团应该是正好差前后脚,估计行程都是一样的,应该还能在其他的景点碰上。激动了一整天,可惜第二天却完全没碰上。本来都不抱希望了,没想到第三天在山上居然听到另外一个旅游团的导游喊了句“大连的游客请这边走”,让我又产生了希望。在人群里面找了半天一直都没有看见。直到最后快要发车了,只得上车。却在旅游车刚起步掉头的时候,又看到老师们的身影。我拼命招手,老师们却没有看到。又是差了一点。

最后抱着失望的心情回了家,隔天上火车。在火车上却听到老师熟悉的声音。我想我可能是想他们想疯了,听错了。可是听那声音听语气怎么听怎么像。毕竟搞辩论洪亮声音和锱铢必较的犟脾气不是每个人都有的。假装出去上厕所,回头一看,果然是!这种巧合确实难碰到第二次了。

跟辩论老师聊完了,知道了自己的班主任还有语文老师也在车上的另外一个车厢,急不可耐的冲过去见他们。果然大家都感到错愕不堪,也感慨时光飞逝。一晃四年过去了。 班主任是化学老师,还是那么严厉,希望我能更进一步。语文老师还是那么和蔼可亲,拉着我的手唠家常,夸我是她的得意弟子,让我诚惶诚恐,非常惭愧。还有政治老师,是年纪大的校领导,大家都争着让给她下铺,她却要表率师范,坚决要住在上铺。还有很多我不太熟悉,没教过我,我几乎不认识的老师,居然能认出我的脸能叫上我的名字,时隔四年还记得一个小屁学生,这一方面让我感动,一方面也让我不得不赞叹老师们的细心和记忆力。

那几天右眼皮一直跳个不停,我一直迷信的认为肯定是有什么坏消息要发生,没想到是这件事情。结果晚上吃饭的时候吃得太急,一口咬在了叉子上面,把门牙差点硌掉了一颗。这几天痛得够呛,看牙齿晃动的情况,是不太可能再让他长回去了,估计再过两天真的要去医院看牙医,去拔牙了。。

真是糟糕啊,都二十出头的人了,居然还在掉牙。我真的还是小孩子吗。。啊啊啊。。。

SC AI设计的强力纠错

昨天熬了一夜之后,在非常兴奋以及脑袋糊掉的状态下写了最近的工作进展和思路。。可惜大多数都是语无伦次。。
今天在仔细读过之后,发现,大多数的想法,都是在写前面几个段落的时候和快要写完的时候不一样,结果导致前后很多矛盾,再加上使用了很多似是而非的术语,让整篇文章几乎没有说对的地方。。

这里也不可能把所有的毛病都改掉了,不过也好上一篇文章成了只有我自己才能看懂了胡言乱语。。。

先说说神经网络吧。上一篇文章多次提到神经网络,其实是指的几个不同的东西。并且这几处都没有给出神经网络的构造。而真正给出构造的一处,即采取各单位相连以广播行为等的那个构造,其实不是神经网络,最多只能说是一个参考神经网络而设计的通信模型。在Holland的一本叫做emergence的书中曾经提到过一种称之为元胞结构的构造,可能这个设计更近似于那个构造,但也还是有很多不同之处。应该说这是一个实验性的构造,也只是我的一时想象,暂时不能说他能够给AI设计起多大的帮助。

而至于使用神经网络结构来学习几项重要的特征,比如是否被封闭(能否逃离),目标健康程度能否在一击内消灭(计算护甲、hp、shield等),同理也可用上述原理计算自身是否安全。这些特征采用神经网络学习是有可能的。神经网络是一个相对静态的结构,必须用于学习能直接得到结论的结果。当然这里我说的神经网络是指没有环路的单馈三层神经网络了。这是一种成熟的技术,可以在AI学习中有很多应用。但也正是这个原因,使得他无法应用于博弈模型这样的无法立即得到反馈的机器学习中来。

昨天文章中说到的“估值函数”也是笔误,其实我想说的只是找到了几个重要的特征值,而没有希望直接设计估值函数。其实我昨天的想法是,通过设置神经网络或者类似于神经网络的其他模型,只要找到了估值特征值,令模型自行学习权值,则估值函数可以通过机器学习得到。这点也是昨天没有说清楚的。。

总之目前的状态是初步的想法有了,但是很多具体细节还没有想清楚。并且前面提到的最重要的部分,也就是类似于“元胞结构”的部分,还有很多没有明确定义的东西。这些地方还需要继续想清楚。

以上