ImageImagick + PHP + Apache On WINDOWS

今天帮同事安装配置php_imagick,结果装是装上了apache也能正常启动,但是程序一new Imagick()就会导致Apache崩溃。

在google之后从Stack Overflow找到问题原因:

I’ve had the same issue today. You have to install version of Image Magick no higher than 6.6.4.0 – next builds are made using VC10 which seems to be incompatible with Apache VC9 + PHP5.3.x VC9.

 

ImageImagick dll for windows 在6.6.4以后用的都是VC10编译,所以不兼容vc9编译的php,虽然apache能正常启动,但是new Imagick的时候会导致apache崩溃。

解决办法就是安装低版本的ImageImagick

下载地址:http://image_magick.veidrodis.com/image_magick/binaries/

 

参考资料:

http://stackoverflow.com/questions/8608426/imagick-crash-with-php-5-3

http://www.elxsy.com/2009/07/installing-imagemagick-on-windows-and-using-with-php-imagick/

Tags: , , , , ,

Wednesday, May 16th, 2012 PHP 14 Comments

修复zsh svn1.7 自动完成的问题

更新svn(subversion)到1.7后 zsh 的svn自动完成就傻X了。

错误: _arguments:comparguments:312: invalid argument: [--cl]:arg:

修改方法

打开文件:/usr/share/zsh/4.3.11/functions/_subversion

找到35行左右

${=${${${(M)${(f)”$(LC_ALL=C _call_program options svn help $cmd)”#(*Valid options:|(#e))}:#* :*}%% #:*}/ (arg|ARG)/:arg:}/(#b)-([[:alpha:]]) \[--([a-z-]##)\](:arg:)#/(–$match[2])-    $match[1]$match[3] (-$match[1])–$match[2]$match[3]}

改为

${=${${${(M)${(f)”$(LC_ALL=C _call_program options svn help $cmd)”#(*Valid options:|(#e))}:#* :*}%% #:*}/ (arg|ARG)/:arg:}/(#b)(-##)([[:alpha:]]##) \[--([a-z-]##)\](:arg:)#/(-    -$match[3])$match[1]$match[2]$match[4] ($match[1]$match[2])–$match[3]$match[4]}

 

参考资料:

http://www.zsh.org/mla/workers/2011/msg01448.html

Tags: , ,

Wednesday, May 16th, 2012 Linux, Mac No Comments

解决fcitx 4.1 选择候选词后输入框消失的问题

fcitx更新到4.0之后我就一直在用fcitx,但是自2011年9月5日更新到4.1.0-1之后,很多候选词就无法上屏了,尤其是当候选词是处在第二页的时候。具体表现为当选择一个无法输入的词时输入框就会消失。后来我把这个问题报给了fcitx的开发人员,以下贴上问题解决的过程。

Issue地址是:http://code.google.com/p/fcitx/issues/detail?id=429

Reported by hess…@gmail.com, Yesterday (25 hours ago)
如何重现?
1. 输入 shishi
2. 翻页找到"实时"两个字
3. 按下对应数字键

这个时侯你会发现输入框消失了,但是当你再尝试输入其他内容时之前输入的文字又会出现在输入框里。

Fcitx 版本: 4.1.0-1
来源: Archlinux pacman
操作系统:Archlinux
桌面环境:Openbox

Comment 1 by hess…@gmail.com, Yesterday (25 hours ago)

实时是其中一个例子,如果无法重现请尝试其他词组,出现在第二页的字词在我这里基本上都无法输入。
Comment 2 by project member wen…@gmail.com, Yesterday (24 hours ago)

你是不是在用sunpinyin而没有用sunpinyin-git?

Comment 3 by hess…@gmail.com, Today (8 hours ago)

我根本就没装sunpinyin呢,只有fcitx
Comment 4 by project member wen…@gmail.com, Today (8 hours ago)

无法重现你的问题。移除配置能解决你的问题吗?

Comment 5 by hess…@gmail.com, Today (97 minutes ago)

非常遗憾,我将~/.config/fcitx 重命名为 ~/.config/fcitx.bak之后重新启动,问题依旧。

基本上只要选择的是第二页的字词候选框就会消失。
Comment 6 by project member wen…@gmail.com, Today (88 minutes ago)

我这里所有的输入法都没办法重现你的问题(码表,拼音,sunpinyin,googlepinyin)
即使是重新安装源内提供的4.1.0都没办法重现。

我怀疑你对问题的描述有不准确的地方(假设存在这个bug的话)。
如果你能把这个问题录下来就最好了。

Comment 7 by hess…@gmail.com, Today (67 minutes ago)

非常感谢你的耐心回答,我刚才又测了一下,如果我pkill fcitx,然后再从命令行通过fcitx&来启动,居然就一点问题也没有。

不知道是不是跟什么变量之类的有关系呢?

还有我再次pkill fcitx之后X就挂掉了,点啥都没反应。

我把fcitx启动的输出导了出来,你看看是否有异常?
fcitx.log
3.2 KB   View   Download
Comment 8 by project member wen…@gmail.com, Today (49 minutes ago)

其实我应该再问问你具体输入的程序是什么……按照我的推测,如果是输入很诡异的话,很可能是这个程序本身输入支持的问题,但是在某种情况下这个问题可以由fcitx绕过或者怎么样。

不过即使我用xim的话在gtk或者qt程序(甚至开启了新加入的xim的on the spot支持,这个选项默认关闭),也都没有试验出问题。

输出里面有一个dbus相关的问题,不过fcitx那个问题会进行数次连接尝试,看起来是绕过了这个问题才对。

有个相关的你也不妨参考,虽然和fcitx无关,但是也是dbus的启动问题。
https://bbs.archlinux.org/viewtopic.php?id=115474

既然你已经升级到4.1.0了
不妨把 fcitx-gtk2 ( fcitx-gtk3 fcitx-qt 如果你有需要 ) 装上,并且设置
GTK_IM_MODULE=fcitx ,而不是你以往设置的xim。

当然你更加不妨用openbox的自动启动来启动fcitx(也许这样就解决了),而不是写自己的~/.xinitrc

Comment 9 by hess…@gmail.com, Today (moments ago)

我照你的方法做了之后依然没有效果。

不过好消息是我尝试加上参数 -s 把delay设成5之后就正常了。

我现在的配置:
安装了 fcitx-gtk2 + fcitx-qt
变量写在 ~/.xprofile
export XMODIFIERS="@im=fcitx"
export GTK_IM_MODULE="fcitx"
export QT_IM_MODULE="fcitx"

启动写在 ~/.config/openbox/autostart.sh
fcitx -d -s 5 

现在看来没有发现什么问题。

非常感谢你的帮助

Tags: , , ,

Wednesday, September 7th, 2011 Linux 80 Comments

WEB开发的福音阿,再也不用为频繁切换host苦恼了

刚刚发现一个霸气的 Firefox 插件 HostAdmin,地址在下面有
https://addons.mozilla.org/zh-CN/firefox/addon/hostadmin/

这个插件可以分析你的hosts文件,自动在firefox中提供给你选择你需要指向的IP地址,你也可以手工修改hosts文件,安装了这个插件之后hosts的修改是实时生效的。

另外说一下,因为Firefox 4以上默认隐藏了扩展工具栏,所以安装后可能需要按CTRL+/才能在底部把它显示出来哦。

如果不会用,可以看我下面的实例:

我们有一个网站 www.test.com

我们有2个测试的ip地址

那么我们在hosts里可以这么写

#192.168.18.1 www.test.com
#192.168.18.2 www.test.com

这样当你访问www.test.com的时候,你通过点击HostAdmin就可以方便的在两个IP之间进行切换,如果不希望通过hosts直接走DNS解析的话直接再点一下当前选中的条目,去掉选中状态可以了,这时候插件会显示为“In Hosts”。 对于在hosts文件中没有的域名,插件会显示Not in Hosts。

另外附上让WIN7/Linux开放修改hosts权限的方法:
http://code.google.com/p/fire-hostadmin/wiki/GAIN_HOSTS_WRITE_PERM

Tags: , , , ,

Tuesday, September 6th, 2011 Programming 48 Comments

JavaME常用小技巧集合[持续补充中]

1. 绘制图像缓冲区

Image img = Image.createImage( width, height );
canvs.paint( img.getGraphics() );

 


 

2. 绘制透明图案、色块

int [] argb = new int[width * height];
for ( int i = 0; i < argb.length; i++ ) {
argb[i] = 0x99000000; // ARGB
}
graphics.drawRGB(argb, 0, width, 0, 0, width, height, true);

 


 

3. Netbeans中Java(TM) Platform Micro Edition SDK 3.0的存储目录在哪里?

DefaultCldcPhone1:

C:\Documents and Settings\[USERNAME]\javame-sdk\3.0\work\6\appdb\filesystem\root1

Tags: , ,

Tuesday, August 23rd, 2011 JavaME(J2ME) 48 Comments

[转]Linux 中的键盘映射

原文地址:http://www.linuxidc.com/Linux/2011-04/35197.htm

 

对于英语来说,键盘上的字母键直接和英语字母表中的字母对应,但是对于非英语的语种来说,情况就不太一样了。例如,德语中的“ß”字母就没有直接的键和它对应,为此,Linux 提供“键盘映射”或“键盘翻译”,利用键盘映射可将某些键转换为特殊键。

前面提到,X Window 直接处理了键盘的输入输出端口,因此,在 Linux 虚拟控制台下和 X Window 下使用不同的键盘映射方法。在 Linux 虚拟控制台上,可利用 loadkeys 命令将特殊按键映射为特殊字符;而在 X Window 中,必须使用 xmodmap 命令完成键盘映射。这些命令均按照字符映射表文件(文本文件)中的规定完成相应的转换。在 X Window 启动时,它会参考 Linux 文本模式下的字符映射表,因此可获得某些一致的键映射。

字符映射表文件保存在 /usr/lib/kbd/keytables 目录下,defkeymap.map 是默认的字符映射表文件。利用命令:

$ loadkeys fr.map

可装入 fr.map 所规定的字符映射表。这时,按下“.”会显示“:”。命令

$ loadkeys –d

可装入默认字符映射表。对于非默认的键盘映射,可在启动时在 shell 脚本中装入特殊的映射表。

对X Window 而言,它对键盘的处理过程分如下两个步骤:

1.X Server 首先将键码转换为键符号名(keysym)。文件 /usr/include/X11/keysymdef.h 中包含所有的符号名。X Server 能够区分修饰键带来的不同,因为 keysymdef.h 中区分了两种不同的键,例如对“a”和“A”,分别用“KS_a”和“KS_A”定义。

2.X Server 将键符号翻译为 ASCII 字符串。对于大多数的键来说,该字符串只包含一个字符,而对于功能键等特殊按键来说,则包含多个字符。例如,F5 键对应的默认 ASCII 字符串为 “5~”。

利用 xmodmap 工具可修改键盘和键符号名之间的对应关系。例如,X Window 中“A”的键码为 30,而“Q”的键码为16。如果建立文件 maptest:

keycode 38 = A

keycode 24 = Q

在 xterm 中运行

$ xmodmap maptest

之后,将发现“A”键和“Q”键交换了过来。

上述的 maptest 文件实际就是一个简单的 X Window 映射文件。但需要注意的是,文件中的 keycode 和 Linux 内核对键值的定义是不一样的,一般而言,X Window 中的键码要比内核的键值大 8。利用 showkey 命令可以查看内核对键值的定义。例如,运行 showkey 并前后按下“A”和“Q”后,程序的输出为:

$ showkey
kb mode was RAW

keycode 30 press
keycode 30 press
keycode 16 press
keycode 16 press
该程序给出的是“A”和“Q”的内核键值。
在 XF86Config 文件中,Keyboard 段用来指定键盘参数,一般而言,这些参数不需要特殊设置:
Section “Keyboard”
Protocol    “Standard”
AutoRepeat 500 5
EndSection

Tags: , ,

Tuesday, August 23rd, 2011 Linux 64 Comments

[译]如何在Linux下禁用键盘、触摸板、鼠标等输入设备

原文地址:http://blog.yjl.im/2010/12/using-xinput-to-disable-keyboard-mouse.html

我最近发现可以用 xinput 来禁用/启用输入设备。我经常用 synclient 来关掉我的触摸板, 或者用 xinput 来关闭我的笔记本键盘。

第一步我们需要先拿到设备的名字或者ID:

$ xinput list
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ USB Optical Mouse                         id=8    [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=7    [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Sleep Button                              id=9    [slave  keyboard (3)]
    ↳ Power Button                              id=10   [slave  keyboard (3)]
    ↳ Video Bus                                 id=11   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=6    [slave  keyboard (3)]

在这里触摸板的名字是 'SynPS/2 Synaptics TouchPad' ID是 7;
键盘的名字是 'AT Translated Set 2 keyboard' ID是 6.

下一步我们要知道设备都有什么属性:

$ xinput list-props 'AT Translated Set 2 keyboard'
Device 'AT Translated Set 2 keyboard':
        Device Enabled (127):   1

键盘只有一个属性 'Device Enabled' 他的值是 1,意思就是说键盘是打开状态的。

我们来尝试关掉它:

sleep 0.1 ; xinput set-prop 'AT Translated Set 2 keyboard' 'Device Enabled' 0 ; sleep 5 ; xinput set-prop 'AT Translated Set 2 keyboard' 'Device Enabled' 1

开头 sleep 0.1 的目的是要留出时间让你执行当前命令时所敲的回车的按键(keypress)事件能够完成, 我猜测当你按下回车时命令就会执行并把键盘禁用,但是按键弹起(keyup)还没有被发送,所以X会以为你一直按这回车键。

另一个更简单的用法是用ID来进行操作,这样你就不需要输入一大长串的名字了:

sleep 0.1 ; xinput set-prop 8 127 0 ; sleep 5 ; xinput set-prop 8 127 1

键盘的ID是8, 属性 'Device Enabled' 的ID是127。 当你用 list-props 列出设备属性时, 在属性名后面的数字就是属性的ID。 像 'Device Enabled' 的ID总是 127,但是设备的ID就不一样,它跟设备的连接时间有关,一般越先连接的设备ID越小,之后会越来越大。

PS:设置设备属性不需要root权限。

Tags: , , , , ,

Monday, August 22nd, 2011 Linux 29 Comments

又想烧键盘了。。。Noppoo Choc Mini 84

最近又想烧个新键盘了。。。

当然现在老婆卡的比较紧。。。也就烧点便宜的了。。。。

现在看中了Noppo 的 Mini84, 65%的键盘,84键,比较适合作为笔记本键盘的替代品,准备搞一个放公司敲代码用

某北京卖家地址:http://item.taobao.com/item.htm?id=9176159258&

 

Tags: ,

Sunday, August 21st, 2011 Life 66 Comments

怎么在Netbeans里修改默认@author的内容

怎么在Netbeans里修改默认@author的内容

 

1. Tools -> Templates

2. 点击 Template Manager 窗口右下角的Settings按钮

3. 去掉 #user….. 的注释,把他改成你想要的内容

 

搞定

Tags:

Sunday, August 21st, 2011 Programming 65 Comments

星际Online (Planet Side) 终于回归了

星际2终于出视频了。。。

瓦努瓦努!!! 我要开海盗,我要开电磁!!

星际OL 2 PlanetSide 2 Trailer

视频源地址:http://v.game.sohu.com/v/2/2/99/OTkwNzU5

Tags: , ,

Friday, August 19th, 2011 Game 202 Comments