Luss Village
2014年8月11日星期一
安卓上的拼音输入法
Google输入法自带语音输入,识别率高,在2G网络下的识别速度也还可以,流量也不大。全键盘布局合理,标点符号输入方便,联想词库、热词都很全面准确。一个键上通常都有两个字符或者标点,可以通过“按下-拖动-放开”来选择希望输入的字符,向上拖动就是输入上面的,向下拖动就是输入下面的。唯一的缺点是在GalaxyNote上速度太慢,调出键盘后输入第一个字母后会卡好久。
Go输入法的速度快,但是没有语音输入(可能需要额外安装插件?),没有热词、地理词库等,需要输入这些词语的时候就很纠结。全键盘要按“数字标点”按钮才能输入标点符号。
2014年4月18日星期五
2013年5月25日星期六
firefox结合foxyproxy模式订阅功能让浏览更顺畅
http://autoproxy-gfwlist.googlecode.com/svn/trunk/gfwlist.txt
注意格式选择autoproxy,编码选择Base64,再把代理加入这个订阅中。
2013年5月19日星期日
2012年5月2日星期三
关于多用户远程桌面的实现(WIN7 版)
首先需要安装工具包,从微软下载(远程服务器管理工具http://www.microsoft.com/downloads/zh-cn/details.aspx?displaylang=zh-cn&familyid=7d2f6ad7-656b-4313-a005-4e344e43997d),安装升级后,在控制面板-程序和功能-打开或关闭WINDOWS功能-远程服务器管理工具-角色管理工具-远程桌面服务工具,选中前面的选择框。
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日星期四
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://localhost或http://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管理器->处理程序映射->添加模块映射”对话框,依次
在请求路径中填写*.php;
从模块的下拉列表中选择FastCgiModule;(1)
在可执行文件中填写php-cgi.exe文件的完整路径,例如:C:\PHP-5.2.6\php-cgi.exe;
在名称中随便填写,例如PHPCGI。
测试
添加c:\inetpub\wwwroot\index.php,内容为
打开浏览器输入http://localhost/index.php或http://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”
用于清理项目。
测试
把php_mytest.dll复制到C:\php-5.2.6\
修改c:\php-5.2.6\php.ini,找到extension_dir = "./" (3)
添加一行extension=php_mytest.dll
编辑c:\inetpub\wwwroot\index.php的内容,改成
重启IIS服务
打开浏览器输入http://localhost/index.php或http://127.0.0.1/index.php。
执行正确时会显示一条Congratulations!的话。
此外也可以用php.exe在Windows终端窗口中进行测试。
同样需要把php_mytest.dll添加到php.ini配置文件,以及把该动态库复制到指定目录。
执行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 |
参考文献
- 在Win32下用VS2008编译PHP扩展 (http://jz123.cn/text/3033828.html)
- Windows7 IIS7下以FastCgi和ISAPI方法安装配置PHP5教程(http://www.leapsoul.cn/?p=753)
- msdev & devenv 的命令行用法(http://www.cppblog.com/rise-worlds/archive/2009/07/23/90892.html)
- Extension Writing Part I: Introduction to PHP and Zend(http://devzone.zend.com/303/extension-writing-part-i-introduction-to-php-and-zend/)
- Extension Writing Part II: Parameters, Arrays, and ZVALs(http://devzone.zend.com/317/extension-writing-part-ii-parameters-arrays-and-zvals/)
- Extension Writing Part III: Resources(http://devzone.zend.com/446/extension-writing-part-iii-resources/)
备注
如果下拉列表中没有FastCgiModule,请参考章节 安装IIS7 重新确认已安装了“Internet信息服务->万维网服务->应用程序开发功能->CGI”。
ext_skel_win32.php中说要使用Cygwin,实际上只使用到了sh,所以可以用其它sh替代,入MSYS。
extension_dir = "./" 指定了PHP-5.2.6为扩展存放的路径。