Unity Android DLL 热更
2018/4/8 技术探讨

是的,没错,前两篇(《如何在Debian中编译Unity Mono生成Android版的libmono.so》《如何在CentOS/RHEL中编译Unity Mono生成Android版的libmono.so》)中说的需求其实就是Android中Unity的DLL热更新。热更新可以说一直都是游戏(特别是手游)必不可少的功能之一。目前由于苹果对JIT的限制,我们无法在IOS上直接的热更新DLL(最多也只能采取一种曲线救国的方式使用Lua之流的脚本语言调用C# API的方式来实现“热更新”,但也只能某种程度上),但安卓却完全不受此限制。此外,不少的游戏商(特别是中小型寨厂)上线一款游戏都会先上安卓版,然后去各大平台、渠道买量,再根据当前的市场环境以及收到的反馈进行程序上与数值、玩法上的修改和调试,等改得差不多了再上Apple store,上线前期会出现比较多的更新需求。如何热更新Android的DLL?使用反射的方式从外部Load程序集?听起来可行,但这却有着一个致命性的缺点,那就是IOS用不了,这就意味着需要分别对Android和IOS分别进行处理,这只会徒然增加工作量。好在Unity是使用Mono作为运行时并且Mono是开源的,这提供了一种“非官方”的解决方案,那就是改掉Mono的源码,让它可以实现Android的DLL热更。

如何用C#写一个Daemon(守护进程)
2016/12/2 技术探讨

无论是守护进程还是NT服务,我相信这都是开发中经常用到的技能,像譬如如何用C#写一个NT服务之类的,网上有许多使用简单的框架,你也可以采用直接继承BaseService这种比较原始的方式来写,这里我就不作任何介绍。本篇中,我打算说说怎么使用C#在Linux中写一个简单的守护进程(可以使用Mono或者.NET Core)。

tmpfs文件系统介绍
2016/11/28 技术探讨

tmpfs是泛Unix操作系统中的一种文件系统,它的最大特点是基于内存而不是块设备,创建时也不需要执行mkfs等命令。

tmpfs是一种基于内存的文件系统,但这里的内存并不单单指RAM,还适用于虚拟内存(swap分区之类的)。

由于tmpfs是基于内存的文件系统,因此它的速度是相当的,不过其优点也是其缺点,只要电脑发生断电,整个文件系统中的数据也会随即销毁,读者们需要特别留意这一点。

当前大部分的发行版Linux操作系统已经可以直接支持这一文件系统,如发现不支持,请在编译内核的时候勾选“Virtual memory file system support”选项。

如何搭建自己的ngrok server服务
2016/5/14 技术探讨

很多时候,我们希望能从公网中访问个人电脑中挂载的网站、数据库、WebService等服务;又或者为了与第三方接口(譬如微信)调试的方便,希望对方能够直接从公网中回掉开发机中的接口。这些情况,或许不少读者会使用一些譬如花生壳之类的服务。在本篇文章中,我们将介绍另外一款能够满足以上需求的“动态”反向代理软件——ngrok的搭建与使用。