2014年8月11日星期一

安卓上的拼音输入法

最近从Google输入法换到Go输入法,陈述一下各自的特点。

Google输入法自带语音输入,识别率高,在2G网络下的识别速度也还可以,流量也不大。全键盘布局合理,标点符号输入方便,联想词库、热词都很全面准确。一个键上通常都有两个字符或者标点,可以通过“按下-拖动-放开”来选择希望输入的字符,向上拖动就是输入上面的,向下拖动就是输入下面的。唯一的缺点是在GalaxyNote上速度太慢,调出键盘后输入第一个字母后会卡好久。

Go输入法的速度快,但是没有语音输入(可能需要额外安装插件?),没有热词、地理词库等,需要输入这些词语的时候就很纠结。全键盘要按“数字标点”按钮才能输入标点符号。

2013年5月25日星期六

firefox结合foxyproxy模式订阅功能让浏览更顺畅



1.         装上foxyproxy扩展
2.         设置好代理
3.         foxyproxypattern subscriptions中新增一个,订阅链接中设置为
http://autoproxy-gfwlist.googlecode.com/svn/trunk/gfwlist.txt
注意格式选择autoproxy,编码选择Base64,再把代理加入这个订阅中。
如图:

完工。

2012年5月2日星期三

关于多用户远程桌面的实现(WIN7 版)


首先需要安装工具包,从微软下载(远程服务器管理工具http://www.microsoft.com/downloads/zh-cn/details.aspx?displaylang=zh-cn&familyid=7d2f6ad7-656b-4313-a005-4e344e43997d),安装升级后,在控制面板-程序和功能-打开或关闭WINDOWS功能-远程服务器管理工具-角色管理工具-远程桌面服务工具,选中前面的选择框。
在开始-命令框输入cmd,在弹出的Dos界面输入netstat /na,如果出现3389端口,就说明远程终端已经启动了。
然后:
1, 下载 补丁UniversalTermsrvPatch,功能就是去除单用户登陆的限制,允许多人多用户同时并行访问登录。

2, 根据你的系统运行对应的程序:
   32位系统请运行 UniversalTermsrvPatch-x86.exe;
   64位系统请运行 UniversalTermsrvPatch-x64.exe。
3, 需要管理员权限。右键点程序,选择以管理员身份运行。
4, 破解后需要重启生效。
5, 备份文件: \windows\system32\termsrv.dll.backup.(如果想还原设置 请将备份文件改名为termsrv.dll替换破解的文件即可)

远程桌面的其它可能的设置:
  运行gpedit.msc打开组策略,计算机配置-管理模板-Windows组件-远程桌面服务-远程桌面会话主机-连接-“限制连接数量”,如果将状态设置为“禁用”或“未配置”,则在“组策略”级别上不强制限制连接的数量。

* Google找到的下载中,若下载到.wa后缀的文件,可用7zip打开解压缩。

2012年3月8日星期四

How to increase the VMWare boot screen delay
If you’ve wanted to try out a bootable CD or USB flash drive in a virtual machine environment, you’ve probably noticed that VMWare’s offerings make it difficult to change the boot device. We’ll show you how to change these options.

Find the .vmx file that contains the settings for your virtual machine. You chose a location for this when you created the virtual machine – in Windows, the default location is a folder called My Virtual Machines in your My Documents folder.

In VMWare Workstation, the location of the .vmx file is listed on the virtual machine’s tab.

Open the .vmx file with any text editor.

Somewhere in this file, enter in the following line… save the file, then close out of the text editor:
bios.bootdelay = 20000

Original page: http://www.howtogeek.com/howto/16876/how-to-increase-the-vmware-boot-screen-delay/


2012年3月6日星期二

如何用VC编写PHP5的扩展 2012/3/5更新

如何用VC2008编写PHP5的扩展


安装IIS7

以Windows 7为例,在光驱中放入和系统匹配的Windows安装光盘,依次打开“控制面板->程序->打开或关闭Windows功能”,选中 “Internet信息服务”。为了让IIS支持PHP,记得勾选中“Internet信息服务->万维网服务->应用程序开发功能 ->CGI”。

测试

打开浏览器输入http://localhosthttp://127.0.0.1

安装PHP5

下载PHP5的同时,一并把源代码取下来,分别解压缩到C:\PHP-5.2.6 和 C:\PHP-5.2.6-src。把C:\PHP-5.2.6\php.ini-dist 并另存为 php.ini。

打开“IIS管理器->处理程序映射->添加模块映射”对话框,依次

  1. 在请求路径中填写*.php;

  2. 从模块的下拉列表中选择FastCgiModule;(1)

  3. 在可执行文件中填写php-cgi.exe文件的完整路径,例如:C:\PHP-5.2.6\php-cgi.exe;

  4. 在名称中随便填写,例如PHPCGI。

测试

添加c:\inetpub\wwwroot\index.php,内容为

打开浏览器输入http://localhost/index.phphttp://127.0.0.1/index.php

安装Cygwin

只要安装sh即可。(2)

生成扩展到源码框架


使用PHP源代码目录下的 ext/ext_skel_win32.php来生成扩展的骨架类。

配置环境变量

需要用到c:\php-5.2.6\php.ini和Cygwin,所以把C:\PHP-5.2.6和C:\Cygwin\bin添加到环境变量PATH中。

生成框架

执行cmd打开一个终端,进入php源代码的ext目录

C:\>cd \php-5.2.6-src\ext

执行php脚本,生产一个名为mytest的扩展到框架

C:\php-5.2.6-src\ext>php ext_skel_win32.php –extname=mytest

编译扩展

用 VC2008打开c:\php-5.2.6-src\ext\mytest\mytest.dsp,确认转换工程,选择编译目标为Release_TS, 这个时候编译会报一个找不到.lib的错误,在C:\PHP-5.2.6\dev中找到php5ts.lib并添加到项目的依赖中即可。重新正确地编译 后,生成的目标库文件会自动保存在c:\php-5.2.6-src\Release_TS\php_mytest.dll。

用命令行编译

VC2008转换.dsp文件后会产生一个解决方案.sln文件。

从开始菜单中打开“Visual Studio 2008 命令提示”,输入“devenv /?”查看帮助。

在本例中,在扩展的源代码项目目录中敲入

devenv mytest.sln /build "Release_TS"

就等同于打开VC2008 IDE进行编译。

devenv mytest.sln /clean “Release_TS”

用于清理项目。

测试

  1. 把php_mytest.dll复制到C:\php-5.2.6\

  2. 修改c:\php-5.2.6\php.ini,找到extension_dir = "./" (3)

添加一行extension=php_mytest.dll

  1. 编辑c:\inetpub\wwwroot\index.php的内容,改成

  2. 重启IIS服务

  3. 打开浏览器输入http://localhost/index.phphttp://127.0.0.1/index.php
    执行正确时会显示一条Congratulations!的话。


此外也可以用php.exe在Windows终端窗口中进行测试。

  1. 同样需要把php_mytest.dll添加到php.ini配置文件,以及把该动态库复制到指定目录。

  2. 执行CMD命令打开一个Windows终端窗口,在终端窗口中敲入
    php -r "echo confirm_mytest_compiled('hello');"


编程参考

函数参数

Types and letter codes used in zend_parse_parameters()

Type

Code

Variable Type

Boolean

b

zend_bool

Long

l

long

Double

d

double

String

s

char*, int

Resource

r

zval*

Array

a

zval*

Object

o

zval*

zval

z

zval*


变量类型

基本变量

Int, Long, Double, Boolean, Null, String(char*)

ZVAL

使用下列宏可以取得ZVAL的类型:

返回值
Z_TYPE(zval), Z_TYPE_P(zval*), Z_TYPE_PP(zval**)IS_NULL, IS_BOOL, IS_LONG, IS_DOUBLE, IS_STRING, IS_RESOURCE, IS_ARRAY, IS_OBJECT


使用下列宏可以取得ZVAL的值,也可用于赋予ZVAL新的值:

Z_LVAL(zval), Z_LVAL_P(zval*), Z_LVAL_PP(zval**)

返回LONG值,可当作BOOLEAN

Z_DVAL(zval), Z_DVAL_P(zval*), Z_DVAL_PP(zval**)

返回DOUBLE值

Z_STRVAL(zval),Z_STRVAL_P(zval*), Z_STRVAL_PP(zval**)

返回字符串char*

Z_STRLEN(zval),Z_STRLEN_P(zval*),Z_STRLEN_PP(zval**)

返回字符串长度 int


* Boolean值和LONG共用同一套宏


转换ZVAL的类型:convert_to_string, convert_to_long等

zval *temp;

为zval*申请内存:ALLOC_INIT_ZVAL(temp)

为zval赋值:ZVAL_LONG(temp, 1234);

Array

需要返回一个Array时,首先把return_value初始化,array_init(return_value);

然后下列函数添加item(s);

函数返回

定义

举例

说明

RETURN_LONG(int)

RETURN_LONG(42);


RETURN_DOUBLE(double)

RETURN_DOUBLE(3.142);


RETURN_BOOL(bool)

RETURN_BOOL(1);


RETURN_NULL(void)

RETURN_NULL();


RETURN_TRUE

RETURN_TRUE;

RETURN_FALSE

RETURN_FALSE;

RETURN_STRING(char*, int)

RETURN_STRING(“ABC”,1);

RETURN_STRING(pStr,0);

扩展DLL会被unload,所以返回的字符串指针可能失效。如果第二个参数为1,RETURN_STRING会自动动态分配一个空间保存字符串;如果第二个参数为0,则不会,这时候第一个参数务必指向一个动态分配的内存,参考emalloc,estrdup。



返回RESOURCE,ARRAY,OBJECT



参考文献


备注

  1. 如果下拉列表中没有FastCgiModule,请参考章节 安装IIS7 重新确认已安装了“Internet信息服务->万维网服务->应用程序开发功能->CGI”。

  2. ext_skel_win32.php中说要使用Cygwin,实际上只使用到了sh,所以可以用其它sh替代,入MSYS。

  3. extension_dir = "./" 指定了PHP-5.2.6为扩展存放的路径。