所有由罗佳(博主)发布的文章

改装大红黑

大红黑是我的台式机,由于之前的机箱插口坏了,于是我想顺便改装一下。

这次换了机箱,主板,电源。加了显卡(上一篇文章的),pci-e接口的无线模块(wifi-bluetooth),一个排气风扇。

 

本来这篇文章应该半个月前就能发了,结果出了不少状况。显卡被我撞坏了一次,找修的办法折腾了好久。主板因为我选择不买新的,于是在一家店耗了很久,因为拿到的板子总是有各种问题,寄来寄去好几次,一寄就是三四天。然后陆续买了风扇和冷排。

继续阅读改装大红黑

[Javascript]获取触发message事件的源iframe

翻了翻message事件的属性,没找到可以直接获取事件源iframe的属性,想想也没毛病,毕竟事件也可以是其它窗口post过来的。于是想了个曲线方法。

先让发送源获取焦点,然后获取焦点元素。

window.addEventListener('message',function(msg){
	//做一些事来判断是不是某个iframe发送的消息
	msg.source.focus();
	var sourceFrame=document.activeElement;
});

如果不想影响焦点的话,可以遍历一遍所有的iframe

function findIframe(win){
	var fs=document.querySelectorAll('iframe');
	for(var is=fs.length;is--;){
		if(fs[is].contentWindow==win)
			return fs[is];
	}
}

window.addEventListener('message',function(msg){
	var iframe=findIframe(msg.source);//获取消息源
});

 

三维笛卡尔坐标系转换为二维笛卡尔坐标系

在三维坐标系画一些不需要z轴坐标的二维内容的时候,和直接在二维画布上画有些不一样,因为三维坐标系原点在画布中间,并且Y轴朝上,而且xyz轴的值范围都是-1~1,所以按照二维坐标系的坐标来绘制的话,需要在顶点shader里给顶点坐标最后乘一个转换矩阵,把它转换为三维坐标系中对应的点。

过程也很简单,把坐标系先移到左上角,把横纵坐标按照实际的像素数缩小,然后上下翻转一下,顺便把它喂给二向箔。

用我做的这个矩阵库举个例子的话就是(只写了关键步骤,省略了部分内容)

var to2dCoord=Mat.Identity(4).//新建一个单位矩阵
		translate3d(-1,1,0).//移到左上角
		scale3d(2/canvas.width,-2/canvas.height,0);//上下翻转,缩放坐标,喂给二向箔(去掉z轴)
gl.uniformMatrix4fv(u2dUniform,false,to2dCoord);//丢给shader

到顶点shader里这样乘一下

attribute vec3 aVertexPosition;

uniform mat4 u2dCoordinate;//转换矩阵

void main(void) {
	gl_Position = u2dCoordinate * vec4(aVertexPosition, 1.0);//最左边乘上转换矩阵
}

这样就可以当canvas2d画布用了。

解决Pixel无法连接2G网络的问题

如果你是和我一样手贱点了手机信息里的United States频段而导致的无法连接到2G网络,可以尝试升级到7.1.2,并再次进入*#*#4636#*#*菜单,选择无限频段为Automatic,即可恢复频段设置。

写这篇文章时Android7.1.2还没发布正式版,可以在https://www.google.com/android/beta开通测试版计划,并从系统信息里更新系统。如果当你看到这篇文章的时候已经有7.1.2的系统了,那么直接升级到此版本或更高版本并修改设置即可。

由于Pixel目前并不支持天朝的VoLTE,所以在你只能连接4G网络的情况下是无法接打电话的,原本通话之前会回落到2G网络,所以如果你发现你无法接打电话了,也可以尝试这个办法。