Using Hyper-V (Windows Phone Emulator) and VMware Workstation parallel.

Windows Phone 8 的模拟器是运行在 Hyper-V 平台上的,但是开启 Hyper-V 以后 VMware 虚拟机却无法使用了,虽然可以修改启动参数临时关闭 Hyper-V,但是每次都要重新启动,体验真的号差,因为这个原因我好久都没有开发和更新 Windows Phone 应用了。今天看到一个方法可以让 VMware 虚拟机运行在 Hyper-V 环境之下。

Since I’m working on some Windows Phone 8 Applications, I’ve installed Windows Phone 8 SDK which is shipped with the Windows Phone Emulator. The Emulator runs as Hyper-V virtual machine.
My (Linux)-Developing Servers are VMware machines. I’ve googled some hours to let both virtualizing systems run parallel (and booted up parallel the vms!).

Here’s a Step-by-Step List to let you run both together on the same host system:

You have not installed VMware and Hyper-V on the host yet

  1. Install VMware Workstation first.
  2. Install the Windows Phone SDK which enables the Hyper-V Role on your host
  3. Go to your Virtual Machine Storage place and open the *.vmx File
  4. Add the line: vmx.allowNested = "TRUE" 

You have already installed Hyper-V, but not VMware

  1. Deactive the Hyper-V Role
    1. open PowerShell or console and stop the Hyper-V role with:
    2. bcdedit /set hypervisorlaunchtype off
    3. Restart your computer
  2. Install VMware Workstation
  3. Activate Hyper-V role again
    1. run bcdedit /set hypervisorlaunchtype auto on console or PowerShell
    2. Restart your computer
  4. Add the line vmx.allowNested = "TRUE" to your VMware virtual machine *.vmx File

After this steps you can run the Windows Phone 8 Emulator and VMware virtual machines at the same time on the same host.

References

Windows 下在 PhpStorm 中集成 PHP-CS-Fixer

为了让 PHP 代码更加规范,FIG 组织制定了一系列的规范,现在主要有5个规范,分别是:

  1. PSR-0 自动加载 [中文版]  推荐使用 PSR-4 取代
  2. PSR-1 基本代码规范 [中文版]
  3. PSR-2 代码样式 [中文版]
  4. PSR-3 日志接口 [中文版]
  5. PSR-4 自动加载

一般我们都是使用 PHP_CodeSniffer 来检查代码并手动更改, 显得比较麻烦,PHP-CS-Fixer 这个工具可以在不破坏代码相容性的情况下,自动帮我们把 PHP 代码修改为符合 PSR-1,PSR-2 规范的代码。

下面我们就来说一下怎么在 Windows 下面的 PhpStorm 里面集成 PHP-CS-Fixer 这个工具,首先先下载 php-cs-fixer.phar 这个文件并保存到 PHP 的安装目录,然后打开 PhpStorm 的 Setting,新建一个 External Tool,如图:

里面的参数可以参考下图我的设置进行即可:

 

设置完成后,可以在任意目录或者文件或者项目里面运行 PHP-CS-FIX。更多的定义大家可以看 PHP-CS-Fixer 的文档。

升级 yii2-bootstrap 正式版本的 bootstrap 到 3.3 版本

yii2-bootstrap 的 composer.json 定义了依赖 bootstrap 3.2.* | 3.1.*,那么怎么可以在不升级到开发版本不修改第三方库文件的情况下把 bootstrap 升级到 3.3.* 呢,yii2-bootstrap 使用 fxp/composer-asset-plugin 插件来管理 asset 依赖的,那么我们根据这个插件的文档就可以达到我们要做的效果,我们可以在项目的 composer.json 文件里面的 require 段落里面增加一行:

"bower-asset/bootstrap-3.3.x": "3.3.*"

把 bootstrap 3.3.* 版本安装到其他目录,然后再定义 Yii2 的配置文件,修改 assetManager 组件的一些配置:

'assetManager' => [
	'bundles'    => [
		'yii\bootstrap\BootstrapAsset'       => [
			'sourcePath' => '@bower/bootstrap-3.3.x/dist',
		],
		'yii\bootstrap\BootstrapPluginAsset' => [
			'sourcePath' => '@bower/bootstrap-3.3.x/dist',
		],
	],
],

把 yii2-bootstrap 的 asset 源路径指向新版本的目录即可!