2015

使用StartSSL(Let’s Encrypt)的免费SSL证书为Windows远程桌面RDS服务指定受信任的证书

首先,简单说明一下这个大标题所要解决的问题,就是这个:
QQ截图20150807221006
经常使用Windows远程桌面(AKA: mstsc3389RDP…)的朋友对这个截图的画面一定不会感到陌生,记不清从哪个版本开始的,迈克尔索芙特公司为这个远程桌面服务加入了SSL (TLS 1.0)加密功能,而且是默认开启的,这就导致了这个连接时需要“验明正身”的过程。而正式可信的SSL证书都是需要缴纳一定的“保护费”来获得的,安全级别越高,费用也就越高,所以这里默认启用的加密证书是以自签名的方式颁发的,因此自然会弹出这个不可信的警告了。
对于一般用户而言,这个不可信的证书其实也没什么大不了的,无视它,在mstsc里关闭服务器身份验证失败警告,信任它,直接添加自己为可信的证书颁发机构,又或者直接在组策略里关掉加密,都可以直接pass掉这个问题,但如果是正规应用的话(或者是像我这样有强迫症的一般用户),当然还是要加上正规身份证的好了。
这里介绍的方法就是如何用当下提供免费SSL证书的StartSSL.com,为Windows RDS(主要针对非服务器版操作系统)添加一个受信的正规远程桌面RDS服务加密证书:
Continue reading…

PS2港版90006安装Mars Pro GM-816HD直读的总结(bios 230主板GH-072-42替换Super-7 E17)

之前一直怀着对PS2的敬仰之情,在最末期的时候入手了全新的港版9W,既是为了收藏,也是为了怀旧一些经典游戏(包括PS1游戏,虽然有PSP吧,但总是没有感觉,一个人玩,没有震动等等…)。最近盘算着入手PS4的时候又想起了把吃了很久灰的PS2拿出来怀旧一下,偶然发现a9上关于PS2的黑科技一直在进步,比如OPNPS2LD+SMB这个新科技,基本已经很好的解决了9W没法做硬盘机的问题了,不用刻盘还是非常方便的!后来又发现论坛上一致认为9W最具性价比的直读:Mars Pro GM-816HD,主要看中的是能让9W支持记忆卡启动这点,否则为了用SMB得先用工具盘引导,进ulaunchelf,再运行OPNPS2LD,然后进游戏,进入的游戏可以用IGR的话还好,不可以的话换个游戏可是要等上一段时间的。

说是安装816HD,其实购机的时候还是装过直读的,当时的JS称装的是Pro7-III,由于购自某宝(店铺现已消失…),外加当时也不太懂直读的各种功能,拿到后试了几个送的D版游戏没问题就放心了,虽然之后想看DVD的时候没有成功,但也没太在意。

各处查资料后发现PS2的大部分直读焊接点都是差不多的,也看到有人说Pro7-III和816HD焊点都是一样的,结果拆开确认时发现直读装的是Super-7 E17:

IMG_0724

接着又找了很多816的接线图,发现还是有几个点位不太一样的(PS:9W的结构实在是太简单了,拆之前还找了很多7W的拆机视频,看着还觉得有点门道,结果拆自己的9W时,发现上盖一开,拿掉电源,拿掉光驱,拿掉风扇就剩主板了…不过要注意光驱的、电源开关等的排线,插拔时要小心,看起来就很薄脆的样子),不过觉得难度比较大的几个点位都一样,最终还是20几块入了816HD,准备打造个完美的90006,经过大概快10次左右的拆装、重新焊接、测试操作,最终实现了心愿,这里记录下过程中遇到的一些问题,因为发现虽然816的各种图纸、评测、改机资料不少,但是是GH-072-42型号主板的资料确实不多,改造期间遇到问题时主要也是四处找相关参考资料,比如别人焊好后的照片,看各种有疑问的点位等。
Continue reading…

Cocos2d-X lua binding C++类的RTTI

在用Cococs2d-X的lua binding时,遇到了需要RTTI的时候,也就是运行时类型识别,这点对于lua类来说还是很容易做到的,可以参考引擎lua framework中cocos/cocos2d/functions.lua中的function iskindof(obj, classname),不过,这个函数的递归实现函数iskindof_有些小问题,这里是修正方法:

local iskindof_
iskindof_ = function(cls, name)
    local __index = rawget(cls, "__index")
    if type(__index) == "table" and rawget(__index, "__cname") == name then return true end
    
    if rawget(cls, "__cname") == name then return true end
    -- By K-Res: should use __index instead of cls!
--    local __supers = rawget(cls, "__supers")
    local __supers = rawget(__index, "__supers") 
    if not __supers then return false end
    for _, super in ipairs(__supers) do
        if iskindof_(super, name) then return true end
    end
    return false
end

然而,当遇到需要对binding到lua的native class进行RTTI就有些麻烦了,可以看到借助tolua过去的lua对象是usertable挂metatable实现的,而metatable中也没有可以用lua类(确切的说是模拟class行为的table)的RTTI方式,因为需要查找的一些__cname等meta成员并不存在,作为class标识的只有一个.isclass的bool值,看了下binding实现的原生代码,发现在不添加额外元表信息的前提下获取class名称是需要用到LUA_REGISTRYINDEX这个只能由原生代码获取到的lua全局信息注册表,于是放弃了通过lua代码实现绑定类类型识别的想法,转而使用原生函数实现了个简单的获取binding时设置的本类class名方法,暂时实现了本对象所属类识别的功能:
Continue reading…

最近多说评论框架有些不稳定

最近本博用的多说评论框架有些不稳定,先是被各种发广告的骚扰,然后又是本人回复评论后不显示(最近评论中能看见,博文下面的评论看不见),不知是否有来访的朋友们回复时也有类似的情况。去多说论坛看了下都是吐槽的,官方倒是也在修复这个问题,看看最近是否能修好吧。

UPDATE1: 刚发现还是有后台能看到但前台看不到的评论,然后换一下评论展示方式、主题貌似就正常了…

64bit Linux CentOS 7下编译32bit程序的方法

本文记录的方法理论上适用于所有RedHat系Linux发行版!
一般在64位Linux下(安装好gcc等相关编译工具后)编译出的执行程序都是针对64位环境的,如果想编译为针对32位环境的(当然,64位系统环境下也可以兼容运行),只需要在执行gcc时加上-m32编译即可(ld的话也有对应参数-melf_i386),虽然编译时只是加参数即可,但仍然有c、c++标准库等需要首先安装好32位相关版本。
如下,如果直接-m32编译的话,会收到如下错误提示:

[kres@localhost test6432]$ gcc -m32 test.c
In file included from /usr/include/features.h:399:0,
from /usr/include/unistd.h:25,
from /usr/include/usb.h:28,
from test.c:1:
/usr/include/gnu/stubs.h:7:27: 致命错误:gnu/stubs-32.h:没有那个文件或目录
# include ;
^
编译中断。

Continue reading…

PS2 DS2 H柄760020主板BU6370AK主控导电膜替换修复

朋友的两个H柄,其中一个故障严重,除了左右摇杆、L3、R3以外其余按键全部失灵(原因是N年前进了可乐…),另一个L1、L2、十字上左失灵,其余按键正常。打开看了下:

IMG_0756 IMG_0755
后盖看到是H柄、主板左上角有白色丝印的760020,查了下是H柄的第二版型号,按键胶垫下的导电膜上的型号是03-0241,看了下TB有卖相貌型号相近的,2块左右一张。观察了一下主板和导电膜的链接方式,发现如查到资料一样,导电膜插口与插槽是一体的,插槽排针直接焊接在电路板上,打开对比了下自己的A柄,导电膜是直接压在电路板上的。对比了下TB没有卖这种原版带插槽的导电膜的,不过好在有一家卖类似可插拔19pin插槽的。
对着电路板看了下走线,结合之前查到的资料说PS2的DS2手柄是带压感的,导电膜上的触点碳膜会根据按钮下导电胶压力大小改变阻值,再有主控芯片转为对应数字信号发送给主机,仔细看导电膜上触点两边线路的走向,可以看出除选择、开始和analog键外、其余碳膜触点均有一端是互通的,而这一端对应的是排针上左起第9针,于是用万用表一端接第9针,另一端接对应按键的针,可以看到再对应按键按下时,会有0-几k ohm左右电阻值变化(具体数值记不清了,当然,是用大部分按键可用的那支手柄测试的),而量到有故障的按键时,发现是断路状态,再对照导电膜上的走线,可以看出,L1、L2、十字上、左这4个键分别是最左边的几个针脚对应,而没问题的十字下正是十字左的下一端,所以判断应该是那4个键在导电膜上的线路出现老化断路了,另外一支手柄就更别提了,全都没有正常阻值,也不会根据压力而变化,唯有通过导电膜的左右摇杆还可以正常工作,感觉虽然进了可乐,但是主控芯片应该还能正常工作,于是TB进了替换膜和排插,开始更换。
Continue reading…

关于PS2无法识别部分PS1记忆卡问题的深究

之前给吃灰很久的PS2换上了816HD直读后,功能上算是进入了230 BIOS的9W完美状态,PS1游戏也算是可以完美支持了(目前没发现两次reset对功能有什么影响)。在重温一些PS1经典游戏时自然是少不了要存档的,于是翻出了封存15年的PS1记忆卡(当时是拿着记忆卡去游戏厅玩时用):
IMG_0744
插到PS2上发现开机的浏览器中无法识别,于是百度了一下,发现关于这个问题的论坛讨论还真不少,简言之就是说PS2对PS1的记忆卡兼容性不好,对于一些组装卡、杂牌卡无法识别等(很明显我这个就是组装卡,所谓的“牛屎”廉价芯片),但也有网友提到说组装卡没问题反而原装卡不行的。另外还有提到Sony当年出过的带液晶屏的Pocket Station是100%没问题,看了一下TB上还真有不少,当然也有直接卖号称可以在PS2上正常使用的PS1原装记忆卡的。就在差点买个原装PS1记忆卡的时候,我惊讶的发现我这个有年头了的组装记忆卡,虽然在PS2的记忆卡管理界面中不能识别,但是在引导进PS1游戏后是竟然是可以识别的,会提示记忆卡已满,读取存档的时候会提示无可用存档等,于是,猜测这个记忆卡应该没坏,可能是遇到了所谓的“兼容问题”。
再后来偶然玩起汉化的日版生化3时,发现这个记忆卡中居然有一个当年的日版生化3存档,又测试了一下发现读取正常,玩了一会存个档,发现覆盖存入也正常,也就是说这个卡只是不能在PS2的记忆卡管理界面中识别(后来也试过uLaunchElf等工具,也无法识别),在PS2运行PS1游戏时功能时完全正常的!
Continue reading…

关于Cocos2d-x Lua Binding中ActionTimeline的setLastFrameCallFunc不可用问题

在使用Cocos Studio制作游戏UI等元素时,一定会使用到“动画”功能:
QQ截图20150731104206
这种“动画”反应到代码中会被作为Cocos2d-x的ActionTimeline处理,而在应用过程中免不了要进行一些时间轴上的事件监测处理,其中最常用的莫过于动画结束时的侦听。
简单看下源码可以找到很明显的回调设置函数:

    /** Set ActionTimeline's frame event callback function */
    void setFrameEventCallFunc(std::function<void(Frame *)> listener);
    void clearFrameEventCallFunc();

    /** Last frame callback will call when arriving last frame */
    void setLastFrameCallFunc(std::function<void()> listener);
    void clearLastFrameCallFunc();

上面的setFrameEventCallFunc是用来配合编辑器中设置的帧事件用的,可以用来实现比如UI打开到指定位置时播放特定音效等效果,下面的setLastFrameCallFunc则是刚刚提到的更为常用的动画播放结束后的回调函数!
不过,很遗憾,在不使用原生方式开发而使用lua脚本作为主要编程语言时,发现setLastFrameCallFunc的Lua Binding代码并没有实现实际功能(最新3.7版本也是):
Continue reading…

从Win8.1升级到Win10后WOL网络唤醒失效的解决方法

之前的Win10各种预览版泄漏版的,虽然也有下过的但一直没来得及安装,最近Win10正式版发布了,而且符合条件的Win7、Win8Win8.1等都收到了更新推送,终于还是强迫症发作,点了下载更新到Win10,更新过程很顺利,但是还没来得及体验就发现了问题:升级之前Win8.1下没问题的WOL网络唤醒功能不能用了!
一度怀疑是路由器上的唤醒设置出错了,但转念一想最近也没修改过设置…后来在关掉Win10后仔细观察了下路由器上的LAN口提示灯发现:原本会有一个低速待机状态的连接提示现在没有了!本来开机的时候是千兆连接的提示灯,关机时是100/10速度连接的提示灯,也就是网卡并没有完全关闭,这是受到唤醒广播包时是可以顺利开机的,而现在连接提示灯是完全熄灭的!
于是开始找原因,发现果然有很多类似案例,升级Win10后WOL不能用了,但大部分是说从Win7升级后出现的,解决方法有关闭“快速启动”、睡眠关机等等,想想我又不是从Win7升级的,解释之前那些解决方法的原因是说Win8以后关机状态的电源模式从S4改成了S5什么的(没记错的话),所以影响了WOL功能。但我升级前在Win8.1下WOL是完全正常的,也没改过什么快速启动等等的设置。最后在远景论坛上看到有人说是Win10更新的“最新驱动”问题,恍然大悟,看了下设备管理器里网卡驱动被更新成了15年4月的一个版本,于是找回主板原配驱动,更新了回去:
QQ截图20150806223752
再次关机,LAN指示灯恢复了低速待机状态,尝试WOL唤醒成功!

主机IP遭到攻击,导致本乡下小博下午出现无法访问的情况

很久没写日志分类的内容了…今天下午(大概17:00左右开始)发现我的小博无法访问了,赶忙联系主机提供商客服,被告知是所在IP遭到攻击,被屏蔽掉了…不知是不是邻居得罪人了,这也算是城门失火殃及池鱼啊。好在客服的处理速度还算快,更换了IP更新了DNS马上又可以访问了,希望不要对我那可怜的搜索引擎排名造成什么影响…