软硬件使用

Python 3.6 32bit在Win下安装pycrypto的方法(VS 2017)

在测试一个python操作AES加密解密的脚本时,发现需要安装一些依赖package,大部分直接pip install就搞定了,结果到pycrypto的时候,却遇到了pip报错安装失败的问题,仔细看了下发现是编译出错,搜索了下找到了这个:https://github.com/dlitz/pycrypto/issues/218,原来是需要VS Build Tools环境的问题,按照最后的提示(指定32位编译环境):

for Python 3.6 32 bit following set of commands worked:

cd “C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build”
vcvarsall.bat x86_amd64
cd \
set CL=-FI”%VCINSTALLDIR%\tools\msvc\14.14.26428\include\stdint.h”
pip install pycrypto

执行后,提示:
Continue reading…

Win10升级1709后无法匿名访问局域网共享文件夹的问题

今天Win10在一通疯狂硬盘IO后,提示我有重要更新,于是我又愉快的被Win10更新了,更后意识到是近期的1709版被推过来了(之前是1703),多了个“人脉”,别的新鲜还没发现,倒是遇到了个局域网共享访问不了的问题!
博主的路由器上一直开着samba共享,而且是允许匿名访问的,1709更完后突然发现访问出错了,提示的是个0x80004005的错误号(详细信息里),开始以为是这次更新改变了网络设备驱动或是设置,但后来机智的用手机试了下samba访问,发现完全没有问题,于是认定就是这次“重要更新”惹的祸了!
Continue reading…

Ubuntu 16.04 LTS安装MySQL 5.6后无my.cnf配置文件的问题

近日在虚拟机上的Ubuntu 16.04 LTS里测试Smartfox,需要安装MySQL数据库,于是apt-get安装,装的时候也没仔细看log,一路默认后就可以用了,建库建表都没有问题,直到后来发现需要修改MySQL的大小写敏感设置(lower_case_table_names=1),才发现百度到的配置文件修改在/etc/mysql/里并不存在,找了半天只发现这里/etc/mysql/conf.d/mysql.cnf有个类似的配置,而且里面只有[mysql]没有[mysqld],于是尝试添加了配置参数,又尝试手动创建my.cnf,结果不是不生效就是MySQL不能正常启动。最后发现是MySQL安装时出的问题,命令行执行:

dpkg -l | grep mysql

如果看到大部分mysql的包是5.6,但也有像mysql-common等的是5.7版的,这样就会产生这个没有默认配置文件的问题。解决方法如下:
Continue reading…

使用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…