Sunday, October 17, 2010

Project "kana50" has created

I've been learning iPhone developing recently.
Finally I created a iPhone App and submitted it to to App store(still waiting to review).

And I decide make this iPhone App project Opensource:
http://code.google.com/p/kana50/

How to fix PROCEDURE can't return a result set in the given context

CLIENT_MULTI_RESULTS enables the client program to process multiple results. This option must be enabled if you execute CALL statements for stored procedures that produce result sets. Otherwise, such procedures result in an error Error 1312 (0A000): PROCEDURE proc_name can't return a result set in the given context.

http://dev.mysql.com/doc/refman/5.0/en/c-api-multiple-queries.html

Sunday, July 11, 2010

eMule one-click AddOn, a new project is created

It's a firefox add-on that I made recently, just because I'm tried to copy/paste a ed2k link from a window to another windows if you have used eMule web interface to remotely control your eMule client.

Project home:
http://code.google.com/p/emule-oneclick-add-on/

Mozilla Add-On install:
https://addons.mozilla.org/en-US/firefox/addon/195536/

Sunday, May 23, 2010

Reading note of 'Real world flash game development'

Chapter 3:
A Quick Review of the Planning Steps
● One- to two-sentence description
● Game screen wireframe and fl ow
● List of game mechanics
● List of assets (art, animation, sound, video, and copy)
● Technical requirements
● UML class diagrams

Chapter 4:
传入任意数量参数到函数/方法

function myFunction (… params):void {
for (var i:int = 0; I < params.length; i + + ) {
if (!(params[i] is DisplayObject)) {
throw new ArgumentError( “ Only DisplayObjects can be used in myFunction. ” );
}
}
}


Getter/Setter

package {
public class MyClass {
protected var _maxNameLength:int = 8;
protected var _name:String;
protected var _lives:int = 3;
public function get name():String {
return _name;
}
public function set name(value:String):void {
name = value.substr(0,maxNameLength);
}
public function get lives():int {
return _lives;
}
}
}
//OUTSIDE CLASS
var myInstance:MyClass = new MyClass();
myInstance .name = “ CHRISTOPHER ” ;
trace (myInstance.name); //OUTPUTS “ CHRISTOP ” ;
trace (myInstance.lives); //OUTPUTS 3;
myInstance .lives = 10; //THROWS ERROR


to be Continued.

Tuesday, April 6, 2010

Using Beyond compare3 as Git diff tool under Cygwin

在Cygwin下使用Beyond compare3(BC3)作用Git的diff工具
分两步走~


step 1.
create new .sh file as Git's diff warpper.
#!/bin/sh
/cygdrive/c/Program\ Files\ \(x86\)/Beyond\ Compare\ 3/BCompare.exe "d:/programs/cygwin$2" "$5"


** please notice here, you need specially make a full path of $2, since BC3 will not find your tmp file under Cygwin path. **
** 注意这里的两个路径,第二个是本地文件,因为是相对路径,BC3可以找到,但第一个是绝对路径指向/tmp/xxx,所以我们要特别指定在windows下的真实路径,而不是cygwin的路径,所以我加上了d:/programs/cygwin。

step 2.
Add this line to .bashrc and run it to configure your Git gloabl variable.
git config --global diff.external /home/z33/git-diff-wrapper.sh


Now you can try git diff whatever your file.

Thursday, March 11, 2010

Wordpress hack tips - Add tags to static pages

I did a lot of wordpress plugin jobs recently. But sometimes clients are not satisfied with what plugins can do. for example there is a client of mine want add tags to any static pages, just like wordpress posts did.

Actually it's very easy to do this(as well as to create a plugin for this).
just paste following lines to page_attributes_meta_bos function in meta-boxes.php:

<h5>Tags</h5>
<div>
<input type="text" name="tags_input" class="tags-input" id="tags-input" size="30" tabindex="3" value="<?php echo get_tags_to_edit( $post->ID ); ?>" />
</div>

Tuesday, March 2, 2010

The most easy way to install geoip php extension note

在网上找了一堆安装geo ip模块的方法,各种方法都很麻烦。现在本尊(无量牛逼最三三尊)来整理一个最简单的安装方法如下。

1.install GEOIP C Library
http://geolite.maxmind.com/download/geoip/api/c/GeoIP-1.4.6.tar.gz
./configure
make
sudo make install

2.Install GEOIP PHP Extension
sudo pecl install geoip

3.Following message from step2, for example:
Build process completed successfully
Installing '/usr/local/lib/php/20060613/geoip.so'
install ok: channel://pecl.php.net/geoip-1.0.7
configuration option "php_ini" is not set to php.ini location
You should add "extension=geoip.so" to php.ini

4.Install GeoIP database
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
gzip -d GeoIP.dat.gz
sudo cp GeoIP.dat /usr/local/share/GeoIP/
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
sudo cp GeoLiteCity.dat /usr/local/share/GeoIP/GeoLiteCity.dat
sudo mv /usr/local/share/GeoIP/GeoLiteCity.dat /usr/local/share/GeoIP/GeoIPCity.dat

5.test
<?php print_r(geoip_record_by_name('125.63.166.38'));

Sunday, February 7, 2010

这两天遇到的某些国内discuz论坛输出的RSS问题解决。

主要遇到了两个问题。
1.GBK编码问题
如果RSS输出是gbk编码,Zend_Feed可以处理(不过会有些警告)。而Simplepie则全部处理成乱码了。
解决这个问题只能是把gbk当成gb2312来处理。
$content = str_replace('encoding="gbk"', 'encoding="gb2312"', $content);


2.半个汉字,或非gb2312内的字符在第一或最后一个的时候,CDATA标签无法识别(Zend_Feed和SimplePie都不行)。
解决办法就是在CDATA与字符之间加一个空格。
$content = preg_replace('/\]\]\>/', ' ]]>', $content);
$content = preg_replace('/\<\!\[CDATA\[/', '<![CDATA[ ', $content);

Saturday, February 6, 2010

Version Control with Git 学习笔记(更新中)

1.当git checkout的时候,如果有一个文件名和一个tag重名,可以用两个中线来指定文件名,比如:
$git checkout main.c  //checkout tag name
$git checkout -- main.c //checkout file name


2.指定log编辑器
setenv GIT_EDITOR vim  //tch
export GIT_EDITOR=vim //bash


3.--author when met some wired message :P

4.比较两个版本
git log
git diff 0f793b8262cbd843e8ad7c75430aab7bebc6522d^1..HEAD wp-content/themes/bugbam/header.php

5.diff stat
git diff master~5 master

Tuesday, February 2, 2010

dante server INSTALL note

1. install dante server

sudo apt-get install dante-server


skip the error message from the output of configure dante-server once installed. that's cause dante configuration was not complete.

2. start editing the config file

vi /etc/danted.conf

--
# log to what file
logoutput: stderr /var/log/danted.log

# listening interface and port
internal: ppp0 port = 80

# outgoing interface
external: ppp0

# method: username requires the client to provide a username and password which match the system password file.

# method: none requires no form of authentication.
method: username

# privileged ports like 80 and 443 must use root permission.
user.privileged: root

# the package seems not complied with libwrap support.
#user.libwrap: nobody

# allowed IPs
client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
}

# allowed protocols with these source IPs
pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
protocol: tcp udp
}


3. run dante-server

sudo /etc/init.d/danted start

Monday, January 25, 2010

Change Joomla default meta info in a Component

In the templates of Component, in view.html.php before display() be called. add following line:


$document =& JFactory::getDocument();
$document->setDescription('you description');
$document->setMetaData('keywords', 'you keywords');

关于对DOM Level 1和2的理解。

参考:
https://developer.mozilla.org/En/DOM_Levels

根据自己的理解总结一下DOM Levels的实现。

DOM Level 1:
实现了文档结构化,就是《a href="xx" target=""》这样的tag以及attribute的定义。
http://www.w3.org/TR/DOM-Level-1/

DOM Level 2:
1.实现了命名空间。
2.实现动态更新以及访问(动态更新后可以看到更新结果)。addChild, removeChild
3.事件,比如addEventListener,来实现响应各种事件,比如EventTarget, MouseEvent(但不包括键盘事件,奇怪,文档上是这么说的)
4.支持CSS的访问了。 比如div.style.display='none';还有一些CSS相关的方法。
5.实现Traversal,比如NodeIterator(我是没用过)。还有Range,这个在online editor里常见,就是TextRange之类的实现。这块不熟,还是看要w3c的详细文档吧:http://www.w3.org/TR/DOM-Level-2-Traversal-Range/

总之现在主流的浏览器基本实现了Level2 小量实现了Level3。

Friday, January 22, 2010

A little example to figure out Javascript scope

function f1() { var a=1; f2(); }
function f2() { alert(a); }
f1();


function f1() { 
var a=2;
function f2() {
alert(a);
}
f2();
}
f1();


Try it.