安卓模拟器、HAXM、Hyper-V

刚才打算用 Android Studio 配套的模拟器测试一个 apk,谁知启动虚拟设备的时候遇到 “Unable to open HAXM device: ERROR_FILE_NOT_FOUND” 这样的报错。

有人在 Windows 10 上通过禁用 Hyper-V 并重装 HAXM 解决了该问题。此法在我的环境中有效。简单查了一下,Hyper-V 和 HAXM 都是虚拟化技术。前者是微软提供的,Windows 10 自带。后者是英特尔提供的,专门用于加速安卓模拟器。看上去这两者不兼容。如果不禁用 Hyper-V,直接重装 HAXM 的话,在安装过程中就会报错。

然而我将 Hyper-V 禁用之后,Docker 又用不了了。

各种软件之间的兼容还真是个问题。

东京电玩展2018(多图)

虽说我是个老玩家,进入游戏行业也有几年了,但从未参加过游戏展会。在国内那么多年也没参加过 China Joy 。不过来到东京将近一年之后,托公司的福,竟第一次有机会参加游戏展——而且还是全球游戏行业知名游戏展东京电玩展(Tokyo Game Show)。

公司为我买的门票

这次展会最让我开心的是很多知名老牌日系厂商都有出展。像卡普空、万代南梦宫和史克威尔艾尼克斯这些一线日本大厂就自不必说,连 Falcom 和工画堂这两个我很喜欢的虽然已不活跃但却是 “百年老店” 的小厂商也有参展。

卡普空的展位

因此我也得以试玩到很多小时候就玩过或是虽没玩过但时常耳闻的经典作品系列,这让我非常期待。目前为止我最喜欢的日本游戏是 Falcom 的《双星物语》,可是 Falcom 的更为经典的轨迹系列却一直没玩过,不得不说是一个遗憾。于是当我看见 Falcom 的展台时恨不得马上就奔过去玩一把。

Falcom 的展台

继续阅读东京电玩展2018(多图)

权限问题导致 git 服务器无法使用

这两天在公司的 Synology NAS 服务器上搭建了一个 git 服务器。其实 Synology NAS 服务器是自带 Git Server 包的,可以一键安装,非常方便。但是我没有将权限设置好,这就导致 git 服务器一直无法使用。

先是按照 NAS 文档的说明,我需要 ssh 到服务器上创建一个 git 仓库文件夹。然而我 ssh 登录之后却被提示 Could not chdir to home directory: Permission denied。尝试 cd 到任何一个文件夹都被提示没有权限。可是 ls 打印出的文件夹权限明明都是777。最后发现原来是在 NAS 的 管理系统中,我将用户组对文件夹的访问权限设成了 No Access。原来管理系统设置的权限优先级比操作系统层面的文件夹权限还高,也不知是怎么做到的。

git 仓库创建好后,能够正常 pull。但是 push 的时候一直在 writing objects 这一步卡住。依然是因为权限问题。这回就是操作系统层面的文件夹权限没设置好——我的 git 用户账号对 git 仓库文件夹没有写权限。后来我在用户主目录下重新创建了一遍仓库才解决了该问题。

顺便吐槽一下 Synology NAS 的 Git Server 文档。原文档让我在 /volumeX 目录下用 git init  创建 git 仓库,并且在客户端用 ssh://用户名@服务器地址/git仓库文件夹名  形式的 URL 访问 git 服务器。然而实际上要用  git init --bare --shared 命令来创建仓库, 用  ssh://用户名@服务器地址/git仓库绝对路径 形式的 URL —— URL 末尾应该是 git 仓库的绝对路径,而不是 git 仓库文件夹名。

List<A>转型为List<B>

假设现在有两个类—— A 和 B ,其中 A 是 B 的子类。将 A(子类)的引用转换为 B(父类)的引用是很普通的事,在任何编程语言中都不存在问题。但是将 List<A>(子类的容器)转换成 List<B>(父类的容器)就不是那么简单的事情了,因为List<B>并不是 List<A> 的父类。

不过从 .NET 4.0起,我们已经可以在 C# 中写

这样的代码了。这是因为 .NET 4.0 支持 C# 的变体范型(variance for generic type parameters)特性。关于其具体信息可以在网上搜索 “C# 协变 逆变” 。协变的英文是 Covariance,逆变的英文是 Contravariance。

如果想在 Unity 中使用这个特性的话,就要将 Unity 用的 .NET 运行时改为4.0以上。方法是将 Project Setting -> Player -> Scripting Runtime Version 改成 Experimental (.NET 4.6 Equivalent)。