这里所展示的是我近期很喜欢的B站视频,可以通过提交BV号变更视频
新版Edge的标识

当我们现在又提起微软浏览器的时候,往往也就笑笑。IE早就已经退出历史舞台,继任者Edge也没有力挽狂澜。我猜微软这么多年都没有搞明白到底发生了什么。要知道10多年前的IE市场占有率还在60%以上,而在2008年Chrome也才刚刚发布。所以,微软在今年推出的Edge应该是他试图重回市场主流的一次新尝试。

让我们先说说上一版Edge,采用微软自家的EdgeHTML引擎。清注意,这个EdgeHTML引擎本身是来自IE的引擎Trident,只不过做了大面积的优化和重写。虽然兼容webkit,但表现并不好。这就是我为什么在上面说微软没整明白的原因。这一版Edge虽然表现出比IE强大的性能,但它的发布已经是在2014年。此时的市场已经是Chrome的了,虽然性能相比IE是强大了不少,但和Chrome相比还是差一截。于是结果可想而知,这个并不被大众所熟知的浏览器在2019年的市场占有率甚至还没IE高(IE是2.73%,Edge是2.07%)。

基于以上的情况,我想微软应该是痛定思痛了,于是在2018年宣布下一代Edge直接基于Chromium。我想微软是终于决定适应市场潮流了,自家的引擎被人家吊打了十多年了。市场份额被chrome一步步蚕食到今天,一个随windows自带的浏览器都能混到市场边缘的角色。那么现在想要迎头赶上,最有效的方法就是应该彻底放弃老旧的核心,甩掉面子的去拥抱新事物。以上都是我的YY,但无论如何新版的Microsoft Edge,我想应该是微软在浏览器这方面,这么多年做的做的最正确的决定。

初步使用下来,我的感觉很奇妙。这NM不就是个Chrome吗?!甚至版本号都差不多,只不过加入了一下自己的特色内容。恩,还是内个味。总的来说就是,如果你是和我一样一般都使用chrome的话,使用新版Edge几乎不会感觉到差异(它甚至直接支持chrome插件)。我想这并不会帮助微软重回浏览器霸主的地位,但是一个好的开始。至少它提供给用户一个不会差的选择。至于日后谁输谁赢,也许从现在开始,都不好说了。

左半红印发表于2020.05.3rd

在CSS3中,有个新属性是animation,当然了如果你了解的话,transition也是一样的道理。这两个CSS3中的新属性可以让元素在页面中完成你想要的一些动画效果。但是,background-image不支持这两个属性。说实话这很扯淡,background-image也是CSS3中新增的属性,自己不支持自己还行?!

https://www.w3.org/TR/css-backgrounds-3/#the-background-image

W3有明确的显示Animatable:no,但就是不说为啥。

Name:	background-image
Value:	<bg-image>#
Initial:	none
Applies to:	all elements
Inherited:	no
Percentages:	N/A
Media:	visual
Computed value:	as specified, but with URIs made absolute
Animatable:	no

这个问题网上有个很麻烦的方法,简单说就是用backgrond-position属性,把整个动画过程切成N帧,然后把这N帧拼接成一张图,再利用CSS3定位这张图中不同位置的帧来造成动画的效果。超级麻烦好吗,先不说这个方法还要利用插件或者第三方工具来拼图,录制动画成N帧就没法弄。算了,自己来。

这里我用自己的实际情况来说明,本站的文章标题就是这个效果的完成品,鼠标移进移出的特效。红色渐变效果是用background-image中的渐变(background-image: linear-gradien)效果实现的。我无非需要它淡入淡出而已,所以很自然的可以想到利用jquery或者jqueryui,后者更方便,一个toggle方法既可以满足。

而需要调整的其实是html和css。首先是HTML,文章标题是一个简单的a链接,a后面接一个div作为背景。CSS如下:

#title a {
    z-index: 10;
    position: relative;
}

.title_background{
    background-image: linear-gradient(to right, rgba(88, 199, 238, 0), rgba(255, 0, 0, 0.5), rgba(88, 199, 238, 0));
    height: 40px;
    z-index: 0;
    position: relative;
    top: -40px;
    display: none;
}

需要注意的是div的position要设置成relative,这个属性的意义在于依据父元素定位。所以通过设置top或者left为一个负值,就可以使这两个元素重叠。我们发现a链接的属性也有position:relative,这个目的在于使z-index生效。我们希望a链接能够显示在div的上层。请注意,z-index是在position设置除了static以外的属性下才能生效的,而position的默认属性就是static,所以必须给position一个其他的设定值,这里卡了我很久。

还有一点需要说明,我们能不能将背景div放在a链接前面呢?看起来没啥区别,只是调整位置的变成了a链接而已,但是在下面的jquery动画中会出现问题,toggle方法的本质其实是将动画层的display属性最终设置为none或者block,但是背景div的display属性会影响到a链接的position定位,所以这导致在执行jquery动画后a链接的位置发生偏移,这不是我想要的。

然后是js代码,这里不多讲了,懂得自然懂。

function title_hover() {
	let title_button = document.querySelectorAll(".title_content");
	for(let i =0; i < title_button.length; i++){
		$(title_button[i]).mouseenter(function () {
			let title_b = this.querySelector('.title_background');
			$(title_b).toggle("fade",500);
		})
		$(title_button[i]).mouseleave(function () {
			let title_b = this.querySelector('.title_background');
			$(title_b).toggle("fade",500);
		})
	}
}

其中的title_content是用于包裹a链接和背景div的div,主要用于判断鼠标进出的边界。

左半红印发表于2020.04.19th
Tifa Lockhart

一个很老的游戏了,当年的话题性作品。到了后来,几乎年年都有传言FF7要重制了,然后一直到了2015年,SE终于宣布FF7重制版正在制作中。万众期待……

5年过去了,今天我也终于通关了这款游戏。说实话,我接触的第一款FF是FF8,最喜欢的是FF9和10。对于FF7来说,并没有太大的情节,但是最爱蒂法!!所以在玩了FF7的DEMO之前,并没有预购。但是通过DEMO,到现在通关游戏,我还是觉得这次的重制相当不错。

OK,我试图客观的,以一个虽然并不最喜欢但也算接触过原作的老玩家的角度来聊聊它。接触过最终幻想的人应该都知道,这个系列的游戏的剧情说实话格局都非常大,不是几千上万年的纠葛就是整个星球的生死存亡。特别是在那个年代,整个游戏力求给玩家带来一种史诗般的冒险感受。所以对于野村来说,你说重制版在剧情上他要一点不改,我都不信。毕竟几十年前的老游戏,不做点更改不与时俱进一下,怎么迎合现在的市场。所以这也是现在这款游戏被讨论最多的地方,剧情到底被改了吗。野村在第一章的作法还是很聪明的,在游戏的各种剧情中夹着各种诡异的镜头来让玩家猜。

除了剧情以外,另一个最大的讨论点就是游戏分章节发售。我想不是野村故意的,而是真做不完。不然赤红十三也不会沦落到连让玩家操作都做不到。我个人认为这也是前面所说的,游戏的布局太大,以当年的表现形式没什么问题,但放在现在,确实是个太过于庞大的工程。加上野村本身的毛病,总是想弄个大动作,又做不完。我只能说这确实算是野村的毛病,不好好讲故事,各种故弄玄虚,让人有种很酷的错觉。这样不说人话导致的结果就是,要把故事讲完,花费的篇幅会多很多。所以结果就是这样了。

左半红印发表于2020.04.18th

说道部署php环境,现在win系统下最方便的方式应该是就是利用xampp部署apache了。但是,国内用户应该都知道,xampp官网的下载渠道非常不友好。所以才有了国内大量软件网站在提供xampp各种版本的下载。出于无奈吧,在上次升级win后,用了较早版本的xampp,部署了apache 2.3.17。

本来也没啥问题,但是在前天,服务器在某个时间点突然CPU被沾满,然后无法访问。重启后恢复正常,查找log后发现在问题发生时间点有如下报错。

[Mon Mar 30 11:04:03.905588 2020] [ssl:error] [pid 1708:tid 1676] [client 52.80.254.107:56510] AH02042: rejecting client initiated renegotiation
[Mon Mar 30 11:04:04.413411 2020] [ssl:error] [pid 1708:tid 1632] [client 52.80.254.107:56504] AH02042: rejecting client initiated renegotiation
[Mon Mar 30 13:21:27.467767 2020] [mpm_winnt:error] [pid 1708:tid 3428] AH00326: Server ran out of threads to serve requests. Consider raising the ThreadsPerChild setting

先说最后那个报错,这个很简单,就是线程满了,溢出了。apache对win系统的线程设置位于conf/extra/httpd-mpm.conf

以前的版本中,需要再httpd.conf中启用,现在默认应该是开启的。设置下面两个参数,每个子线程最大数写到1000,总共数写到10000

<IfModule mpm_winnt_module>
    ThreadsPerChild      150
    MaxRequestsPerChild    0
</IfModule>

上面那两个就比较烦人了,目前我能查到的原因竟然是apache 2.4.37的bug

https://bz.apache.org/bugzilla/show_bug.cgi?id=63052

https://blog.qualys.com/ssllabs/2019/01/23/mod_ssl-bug-and-ssl-labs-renegotiation-test?_ga=2.230200031.259520135.1585749703-39262125.1585657218

没办法了,只能升级了。不过说实话,xampp的升级策略真的够呛,说白了根本就是没有升级。xampp甚至无法安装在已经有文件的文件夹里,于是能做的就是尽量备份所有资料和配置文件。这里说的所谓的尽量备份,其实意思反而正相反。只备份配置文件,别的文件能不用的完全别用。包括apache、mysql在内只要一点文件不对,就启动不了。最后再说一下mysql的简单备份方法,用cmd。

mysqldump -h localhost -u root -p mydb >e:\mysql\mydb.sql
mysql -h localhost -u root -p mydb2 < e:\mysql\mydb2.sql

-p后面输密码不要加空格,导入时需要现在数据库里建立db才能往db里面导入。

弑神发表于2020.04.1st

这款游戏是我昨天刚刚通关的,回过头仔细想想我到底玩了些什么呢?一个文字冒险游戏还是一个策略+战略游戏呢?香草社这次玩的相当另类,打算好好讲一个故事,但是不打算按套路出牌,再加上现在流行的“视点人物写作手法”(POV),能在剧情这方面玩的地方多了去了。这也是为什么一款主机游戏玩完后让人感觉是不是玩了一款GALgame。

当然这些还不够,你说香草社这么多年就折腾一个文字冒险游戏是不是太亏了。所以策略战斗方面也加了进来。但是前面讲了,POV和庞杂的故事结构,和叙事方法。我个人估计是实在很难把战斗部分夹杂进去,所以直接分开成两个部分,两个部分分开也完全没有问题。

十三机兵防卫圈

接下来让我来说说剧情吧,由于是刚刚结束游戏。对剧情只能说是理解到一个大概,所以这里我并不打算详细的全部叙述一遍,挑主要的讲吧。

Read more
弑神发表于2020.03.26th

对 Windows Server 2008 和 2008 R2 的支持已于 2020 年 1 月 14 日结束。这意味着定期安全更新也已终止。

终于收到通知,server2008算是正式退出历史舞台。当时选择实例配置时,图便宜选了server2008。没想到过了没多久,就得升级了。server2008不是不能继续用,而只是不再得到微软支持,这意味着未来得不到任何安全升级。现在这个网络环境,这个风险不好说不大。

好在腾讯云还算有点良心,2008升级到2012免费。但免不了折腾一番,大量配置要重新来过不说。本来我觉得自己已经有了足够的备份,竟然还是把SSL证书给忘了。翻了老久的邮件,重新下回来,翻来覆去弄了一下午,总算恢复网站。

说到网站,目前Blackhack的版本是2.4.2,在github上的发行版本是2.4.1。除了修复了几处BUG外,还新作了网页图标。不过这里还有个问题,当时在修复BUG的时候,因为失误导致丢失了微博API的Access token。按理说,继续使用微博的PHP SDK应该能找回来,但死活不行,不知道为什么。最后还是参照文档,post到指定地址后才弄回来。是这个SDK不能用了吗。

左半红印发表于2020.03.18th