idle

从 xlsx 读取翻译后的文本,对比旧的 XML 替换翻译,生成翻译后的 XML

记录:

using libxl;
using System.Collections.Generic;
using System.Xml.Linq;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            var textData = new Dictionary<string, string>();
            var doc = XDocument.Load("Old.xml");
            foreach (var item in doc.Root.Descendants("text"))
            {
                textData[item.Attribute("t").Value] = item.Attribute("value").Value;
            }
            var dic = new Dictionary<string, string>();
            Book book = new XmlBook();
            book.load("new.xlsx");
            var sheet = book.getSheet(0);

            for (int i = 0; i < 4886; i++)
            {
                var a1 = sheet.readStr(i, 0);
                var a2 = sheet.readStr(i, 1);
                dic[a1] = a2;
            }

            var newXml = new XElement("GameTextSet");
            foreach (var node in textData)
            {
                string str;
                if (dic.TryGetValue(node.Value, out str)){}
                else if (dic.TryGetValue(node.Value.Trim(), out str)){}
                else
                    str = node.Value + "   没有翻译";

                newXml.Add(new XElement("text", new XAttribute("t", node.Key), new XAttribute("value", str)));
            }
            newXml.Save("New.xml");
        }
    }
}

还是回来写代码了

毫无准备的情况下成了游戏 lua 脚本,然后就写了自己的第一段代码。

	-- begin 加速表现
	local tBuilderDate = GetBuilderDataMgr():GetBuilderList()  -- 获取建筑的数据
	for i, v in ipairs(tBuilderDate) do
		if v.nSpeedTime ~= nil and v.nSpeedTime > 0  then 
			local id = v.idBuild
			local SpeedFlag = false
			if tSpeedID ~= nil then  --begin 防止重复添加光效
				for j,k in ipairs(tSpeedID) do
					if k.idBuild == id then
					SpeedFlag = true
					break
					end
				end
			end	 --end 防止重复添加光效
			local oBuiler = g_sPlayerManager:getBuilder(v.idBuild)	--处理光效
			if SpeedFlag == false and  oBuiler then
				SpeedEffectID = oBuiler:getModel():addEffect("heroLottery", -1, -1) --添加光效
				v.nSpeedTime = v.idBuild * 10  --临时测试数据,服务器上的数值太大不便测试
				local tSpeedInfoInfo = {idBuild = v.idBuild, nSpeedTime = v.nSpeedTime, FormatTime = nil, SpeedEffectID = SpeedEffectID}
				table.insert(tSpeedID, tSpeedInfoInfo) --tSpeedID 初始为空,是 tSpeedInfoInfo 的集合
				g_sEventManager:registerTimeoutEvent(1000, true, "SpeedBuilder_ProgressBar_Callback")	--计时器回调 参数 间隔时间,是否循环,回调函数名
			end
		end
	end	
	--end 加速表现

类似这种,一写就是半年多(去年打的草稿,现在翻出来),接着又是 C#。这一年多来过得比以往感觉都快,两点一线式的生活,上班-加班-下班。

最近因为工作遇到,再去看了一下 Bezier 曲线,发现网上广为流传的一段代码貌似有问题

using UnityEngine; 

[System.Serializable] 
public class Bezier : System.Object
 
{
 
    public Vector3 p0;
 
    public Vector3 p1;
 
    public Vector3 p2;
 
    public Vector3 p3;
 
    public float ti = 0f;
 
    private Vector3 b0 = Vector3.zero;
 
    private Vector3 b1 = Vector3.zero;
 
    private Vector3 b2 = Vector3.zero;
 
    private Vector3 b3 = Vector3.zero;
 
    private float Ax;
 
    private float Ay;
 
    private float Az;
 
    private float Bx;
 
    private float By;
 
    private float Bz;
 
    private float Cx;
 
    private float Cy;
 
    private float Cz;
 
    // Init function v0 = 1st point, v1 = handle of the 1st point , v2 = handle of the 2nd point, v3 = 2nd point
 
    // handle1 = v0 + v1
 
    // handle2 = v3 + v2
 
    public Bezier( Vector3 v0, Vector3 v1, Vector3 v2, Vector3 v3 )
 
    {
 
        this.p0 = v0;
 
        this.p1 = v1;
 
        this.p2 = v2;
 
        this.p3 = v3;
 
    }
 
    // 0.0 >= t <= 1.0
 
    public Vector3 GetPointAtTime( float t )
 
    {
 
        this.CheckConstant();
 
        float t2 = t * t;
 
        float t3 = t * t * t;
 
        float x = this.Ax * t3 + this.Bx * t2 + this.Cx * t + p0.x;
 
        float y = this.Ay * t3 + this.By * t2 + this.Cy * t + p0.y;
 
        float z = this.Az * t3 + this.Bz * t2 + this.Cz * t + p0.z;
 
        return new Vector3( x, y, z );
 
    }
 
    private void SetConstant()
 
    {
 
        this.Cx = 3f * ( ( this.p0.x + this.p1.x ) - this.p0.x );
 
        this.Bx = 3f * ( ( this.p3.x + this.p2.x ) - ( this.p0.x + this.p1.x ) ) - this.Cx;
 
        this.Ax = this.p3.x - this.p0.x - this.Cx - this.Bx;
 
        this.Cy = 3f * ( ( this.p0.y + this.p1.y ) - this.p0.y );
 
        this.By = 3f * ( ( this.p3.y + this.p2.y ) - ( this.p0.y + this.p1.y ) ) - this.Cy;
 
        this.Ay = this.p3.y - this.p0.y - this.Cy - this.By;
 
        this.Cz = 3f * ( ( this.p0.z + this.p1.z ) - this.p0.z );
 
        this.Bz = 3f * ( ( this.p3.z + this.p2.z ) - ( this.p0.z + this.p1.z ) ) - this.Cz;
 
        this.Az = this.p3.z - this.p0.z - this.Cz - this.Bz;
 
    }
 
    // Check if p0, p1, p2 or p3 have changed
 
    private void CheckConstant()
 
    {
 
        if( this.p0 != this.b0 || this.p1 != this.b1 || this.p2 != this.b2 || this.p3 != this.b3 )
 
        {
 
            this.SetConstant();
 
            this.b0 = this.p0;
 
            this.b1 = this.p1;
 
            this.b2 = this.p2;
 
            this.b3 = this.p3;
 
        }
 
    }
 
}

不知作者处于何种目的考虑 SetConstant 中那些可以化简的式子一个都没化简,而且写的非常绕,例如 

this.Cx = 3f * ( ( this.p0.x + this.p1.x ) - this.p0.x );

不能化简成如下结果?

 this.Cx = 3f *this.p1.x;

不过好像大家都不在意这些,这段代码网上到处可见,也用得“好好的”。

自己化简了下,应该可以写成下面这样。

Func<Vector3, Vector3, Vector3, Vector3, Func<float, Vector3>> GetBezierPoint = (a, b, c, d) => t => a + (-3 * a + 3 * b) * t + (3 * a - 6 * b + 3 * c) * t * t + (-a + 3 * b - 3 * c + d) * t * t * t;

Eee PC 900A 记录

一年前把那台 Acer 4741G 借给一亲戚后,就没有自己的电脑了。正好前些天一客户正好想卖掉他的两台电脑,笔记本卖二手电脑的收去了,就是这 Eee PC 900A 没人要.为什么没人要?看一下它的配置就知道了:

继续阅读

一年总结(一)

离职手续正在办理中,第一份工作就要结束了。尽管我很珍惜这份工作,可公司、领导太过分!一年多来先后做了三个项目,现在还是三个项目同时在做。懒人一个,平时没时间、没心情写总结。就要走了闲来无聊,写点东西打发时间。

PTN 传输、WLAN、7750 路由器,一年多来做的都是粗活没什么技术含量。在 WLAN 上面花的时间比较多,总结就从这个开始吧。

继续阅读

Gentoo 更新至 Gnome 3.2

今天更新系统时

emerge --sync && emerge -avuDNl --with-bdeps y @world

一下子出来 108 个包。仔细一看原来是 Gnome 3.2,更新。
编译、安装过程一切顺利,重启的时候出问题了,进程循环等待,死锁了!Alt+SysRq+k 用 root 登陆

mount -o remount /
nano /etc/rc.conf

注释掉 rc_parallel="YES",正常启动后 lsmod 列出已加载的模块,把它们写入 /etc/conf.d/modules,然后去掉 rc_parallel="YES" 的注释,重启正常。

虽然还是有诸如 delete 键不能删除文件,虚拟终端等程序异常(出现过两次)退出,等问题,感觉 Gnome 3.2 比原来的好用多了。

另外 emerge --depclean -a 还是问题很多,某些有用的包还是会被删除。

I569 root 记录

1.安装好手机的 USB 驱动,跟多数人一样直接用了豌豆荚,然后让它自动搜索安装;
2.把USB调试打开(设置--应用程序--开发--USB调试 全部勾上)
3.下载 root 工具 SuperOneClick 解开运行 SuperOneClick.exe,然后点击那个Root,重启;

继续阅读

NetworkManager 配置

前天在调试设备的时候,需要手动设定 IP 却发现 NetworkManager 手动设置 IP 保存选项不可用。临时用

ifconfig eth0 169.254.1.2 

设置。

回去后按照 NetworkManager on Gentoo 添加

USE net-misc/networkmanager connection-sharing 

后更新系统,自动安装 iptables 意外解决无线共享的问题,可选项依然不可用,最后发现是子网掩码、网关没填写才不可用。到保存时候提示要输入 root 密码,可输入窗口却不能输入。提示 org.freedesktop.network-manager-settings.system.modify。修改 /usr/share/polkit-1/actions/org.freedesktop.network-manager-settings.system.policy 中的 <action id="org.freedesktop.network-manager-settings.system.modify"> 把 auth_admin_keep 为 yes 可以保存,但 ifconfig eth0 没显示 IP 估计也不能用,待验证。

 

 

更新 xorg,nvidia-drivers 后输入设备不能用

临睡前更新了一下 gentoo,也就是更新了 xorg ,nvidia-drivers。重启后键盘、鼠标、触摸板都不能用,却可以用 Alt-Print(Sys Rq),R-E-I-S-U-B 重启,添加内核 single 进入字符界面,想用 nano 写改一下 xorg.conf 却提示未找到 nano!(肯定是之前 emerge --depclean 时被删除了,以后慎用 emerge --depclean,revdep-rebuild,使用时最好多加一个参数 -p,看清楚了再执行。)只能再次重启。摁到 Alt-Print(Sys Rq) R-E 时出现字符登陆提示符 login,重启后进入 gdm 界面用 Alt-Print(Sys Rq),R-E 登陆字符界面,重新编译安装 xf86-input-evdev,xf86-input-synaptics 终于正常了 原来的睡意都被这个给弄没了

gentoo 已解决、未问题(续)

1.挂载可读写 ntfs 分区

 

配置 Gentoo 内核时在 ntfs 配置下有一项“NTFS write support”:

File systems  --->

DOS/FAT/NT Filesystems  --->

<*> NTFS file system support
[*]   NTFS debugging support
[*]   NTFS write support

继续阅读

gentoo 已解决、未解问题

官方的手册、wiki 上都写着

rc-update add net.eth0 default

提示不存在 net.eth0  没有 /etc/init.d/net.eth0 每次开机都要运行一次 dhcpcd eth0.

最后发现可以用

 rc-update add dhcpcd default

继续阅读




Host by is-Programmer.com | Power by Chito 1.3.3 beta | © 2007 LinuxGem | Design by Matthew "Agent Spork" McGee