软硬件使用

使用Android Studio 3.0+调试任意环境生成的APK中的Java和Native C/C++代码(APK调试debug)

自从Google抛弃Eclipse ADT转投IntelliJ IDEA搞出Android Studio后,Android的开发调试环境可以说是日臻完善,先是Android Studio 2.x加入了调试原生C/C++代码的功能,一解Android NDK开发调试不方便之困(想当年可是拜ndk开发调试所赐才熟练掌握了gdb命令行的各种操作…),现在的3.x又加入了直接调试任意apk中Java和native .so的功能:

测试了下,虽然过程中遇到了个小问题,不过最终还是成功了,基本能和AS开发的带C++ Support项目原生调试体验一致。下面记录下这个”小问题“的解决方法:
先说明下这个小问题是用AS调试任意apk中的.so时找不到调试符号,且无法定位到源码并命中断点的问题,也就是说是有源码调试!无源码调试理论上应该也可以,但不在本次研究范围之内。
Continue reading…

Flash Builder 4.7在2017年的win10下开发调试的可用打开方式

首先在1703的win10下装好flash builder 4.7,然后新建个as项目,然后调试运行,发现默认的chrome 版本 61.0.3163.100(正式版本) (64 位)打开生成的html页面后根本没有加载flash控件,eclipse的调试部分也完全没有反应,又尝试了非调试运行,结果也是一样加载不了flash。于是更改设置中的浏览器为IE,再试,结果弹出的IE11倒是显示了flash控件,但提示“影片未加载”,显示一片黑!
随后修改运行配置,改为直接执行swf文件,也就是用standalone player的方式运行,结果一切正常!随即想到以前研究fb早期版本时,貌似需要将浏览起的flash插件替换为debug版本,于是17年这个新时代的各种浏览器对flash的恶意就显现出来了…
Continue reading…

找回Visual Studio 2017的Advanced Save Options…

在用旧版VS时,File菜单中有一项叫做高级保存选项的功能,可以选择源码文件的文本编码格式,升级到2017后(全新安装全部默认设置),发现这个选项没了(Community社区版)!其实只是默认不显示了,通过自定义菜单项功能还是可以找回来的:

依次Tools->Customize…->Commands->Menu Bar: File->Add Command->File->Advanced Save Options…然后托到你习惯的位置即可!感觉这个选项应该是比较常用的,不知为何默认不显示了。

用Chrome看Youtube视频高分辨率60fps时卡顿、丢帧问题的解决方法

在博主的Core 2 Duo老爷机上看Youtube高清60fps视频时会出现明显的丢帧情况,通过视频详细信息(stats for nerds)可以看到1080p 60fps时dropped frames不断增长,同时cpu占用率双框齐满,很明显这html5视频播放器并没有使用硬件解码视频!开始以为是Chrome本身设置问题,开关了下硬件加速相关选项,重启再试问题依旧。后来搜索了一下发现貌似是由于Chrome本身的什么原因(很多人说firefox和高版本IE都没问题),导致Youtube发送的视频是vp8、vp9编码格式的(同样在详细信息中可查到),而这两种格式是不支持硬件解码的,所以既占满了CPU,又疯狂丢帧!
于是,解决这个问题的方法就是想办法让Youtube传输可以硬件解码的视频格式,所幸有人提供了这样的Chrome插件:h264ify: https://chrome.google.com/webstore/detail/h264ify/aleakchihdccplidncghkekgioiakgal,安装上以后再开Youtube视频就会发现发来的是avc编码格式的数据了,同时CPU占用骤减,丢帧现象明显改善。

CentOS 7 yum update中断重启后提示kernel panic-not syncing:VFS:Unable to mount root fs on unknown-block

今天更新VMWare上的CentOS 7时,不小心手滑在安装进行到一半左右时关掉了ssh连接,结果再回来时yum就不好了,显示提示有中断的操作,然后又是multilib,一通cleanup之后yum是不提示异常了,结果reboot后直接kernel panic异常,系统无法启动!

好在bootloader里的rescue还是可以进的,搜索了一下测试了下,最简单的解决方法是先

sudo yum remove kernel

sudo yum install kernel

然后再重新启动正常的kernel就可以进系统了,不过感觉由于yum update时中断导致的某些软件丢失或是版本不对的问题还是存在,等到用时再逐一解决吧。

内网Visual Studio Code通过XDebug远程调试linux服务器PHP脚本

开发环境是这样:一台位于内网环境下的Windows机器使用VSCode作为IDE编写PHP脚本项目,一台位于公网的linux服务器运行lighttpd、fastcgi PHP用于部署调试。开发机所在网络环境不允许或不方便进行端口映射来打开XDebug所需的本地调试监听端口(默认9000),同时也不想安装本机PHP服务器来调试,于是采用本机编写PHP,然后上传linux服务器直接远程调试,记录环境搭建过程如下:
首先配置好开发机的IDE环境,我用的是VSCode 1.6.1,然后安装PHP Debug扩展,完成后选择一个指定文件夹作为项目根目录并在调试页中新建PHP调试配置,这时会在项目文件夹中生成.vscode/launch.json配置文件,按照PHP Debug的说明,加入serverSourceRoot与localSourceRoot,参考如下:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9000,
            "serverSourceRoot": "/var/www/lighttpd/phpproj",
            "localSourceRoot": "${workspaceRoot}"
        },
        {
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 9000,
            "serverSourceRoot": "/var/www/lighttpd/phpproj",
            "localSourceRoot": "${workspaceRoot}"
        }
    ]
}

其中serverSourceRoot为项目位于服务器端的存储位置完整路径,localSourceRoot为本地项目存储位置完整路径,一般用环境变量${workspaceRoot}即可表示项目根目录。
Continue reading…

关于PS4手柄(DS4)通过蓝牙连接的小问题(Win7,Win10 1703)

前几天修理了一个左模拟摇杆癫痫了的PS4手柄,换掉3D摇杆后问题解决,然后测试手柄时发现了这个神器:DS4Windows http://ds4windows.com/,用usb线连接手柄后可以检测手柄的大部分功能,比如光条(能改颜色哦)、重力感应、加速度等,还可以将PS4手柄模拟成Xbox 360的手柄,完美支持所有可用360手柄的PC游戏。另外,本人非常喜欢这次的DS4手柄改进,第一次拿在手里时就有一种说不出的舒适感(之后就再用PS2、PS3的就感觉有些不爽了,哈哈),再加上这个神器软件的存在,比当年PS3手柄的那个ScpServer要方便的多了!
后来发现神器作者的主页上还提到了可以支持蓝牙,正好手里有个N年前买的一个Broadcom 2046芯片的usb小蓝牙适配器,拿出来试试看无线效果如何,结果,问题来了:用PS+Share键开启DS4的强制配对后,蓝牙设备中可以看到Wireless Controller,连接后就是让确认了一下设备,也没让输什么0000的默认配对码,然后一瞬间手柄的光条从配对状态的短促快闪变成了已连接状态的常亮,然后Win端开始给设备安装驱动,再之后手柄光条灭掉,驱动装好后也没有连接上的无线手柄设备了,单按PS键后,Win端提示有设备请求连接,确认后就又断开了。
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…