Submitted by gouki on 2011, October 11, 4:15 PM
妖怪的文章,用作参考:http://dualface.qeeplay.com/index.php/archives/1415
原文如下:
由于 OS X 是 64bit 操作系统,所以默认情况下编译出来的 Lua 是 64bit 的。一般应用不会有任何问题,但使用 luac 编译源代码后得到的字节码就只能在 64bit 操作系统中使用。
我使用 Lua 的主要目的是在 iOS/Android 环境中简化游戏开发,因此必须在 OS X 中编译出 32bit 的 Lua 及相关库。
下载 lua 5.1.4 源代码和 5.1.4-3 patch:
XML/HTML代码
- $ wget http://www.lua.org/ftp/lua-5.1.4.tar.gz
- $ tar zxf lua-5.1.4.tar.gz
- $ wget -O lua-5.1.4-3.patch http://www.lua.org/ftp/patch-lua-5.1.4-3
- $ cd lua-5.1.4/src
- $ patch < ../../lua-5.1.4-3.patch
编辑 lua-5.1.4/src/Makefile,将:
XML/HTML代码
- macosx:
- $(MAKE) all MYCFLAGS=-DLUA_USE_LINUX MYLIBS="-lreadline"
改为:
XML/HTML代码
- macosx:
- $(MAKE) all MYCFLAGS="-DLUA_USE_LINUX -arch i386" MYLIBS="-lreadline -arch i386"
最后:
XML/HTML代码
- $ cd lua-5.1.4
- $ make macosx
- $ sudo make install
然后,就安装到/usr/local/ 下面了。
这是执行make install后显示在屏幕上的,先记录下来,以后可以做参考【膘叔】
- cd src && mkdir -p /usr/local/bin /usr/local/include /usr/local/lib /usr/local/man/man1 /usr/local/share/lua/5.1 /usr/local/lib/lua/5.1
- cd src && install -p -m 0755 lua luac /usr/local/bin
- cd src && install -p -m 0644 lua.h luaconf.h lualib.h lauxlib.h ../etc/lua.hpp /usr/local/include
- cd src && install -p -m 0644 liblua.a /usr/local/lib
- cd doc && install -p -m 0644 lua.1 luac.1 /usr/local/man/man1
下载 LuaSocket 2.0.2:
XML/HTML代码
- $ wget http://files.luaforge.net/releases/luasocket/luasocket/\
- luasocket-2.0.2/luasocket-2.0.2.tar.gz
- $ tar zxf luasocket-2.0.2.tar.gz
- $ cd luasocket-2.0.2
打开 config 文件,修改为(使用 Mac OS X 的设定,并指定 32bit 架构):
XML/HTML代码
- LUAINC=-I/usr/local/include/lua5.1
-
- #------
- # Compiler and linker settings
- # for Mac OS X
- #
- CC=gcc
- DEF= -DLUASOCKET_DEBUG -DUNIX_HAS_SUN_LEN
- CFLAGS= $(LUAINC) -I$(COMPAT) $(DEF) -pedantic -Wall -O2 -fno-common -arch i386
- LDFLAGS=-bundle -undefined dynamic_lookup -arch i386
- LD=export MACOSX_DEPLOYMENT_TARGET="10.7"; gcc
-
- #------
- # Compiler and linker settings
- # for Linux
- #CC=gcc
- #DEF=-DLUASOCKET_DEBUG
- #CFLAGS= $(LUAINC) $(DEF) -pedantic -Wall -O2 -fpic
- #LDFLAGS=-O -shared -fpic
- #LD=gcc
最后编译安装即可:
XML/HTML代码
- $ make
- $ sudo make install
-----EOF--
如果你不是特别需要安装32位的lua,那么妖怪那段增加 -arch i386这一段的内容就可以不需要改动了。嗯。就是这样简单。
但真的这样吗?NND,事实上我在按照上面操作的时候,告诉我wget这个函数不存在,我晶啊,wget居然不是标配。
最后只能用curl解决了这个问题,把wget http://xxxx.xxx/xxx.xxx.gz 改为:curl http://xxx.xxx/xxx.gz -O xxx.gz,OK,就完成了。。
然后利用这样的操作也下载了一份wget,搞定。还是wget更方便,因为它很简单。。。
Tags: lua
苹果相关 | 评论:0
| 阅读:23977
Submitted by gouki on 2011, October 11, 9:51 AM
风雪之隅的博客现在也越来越被很多人知道了,当然这与他加入了php的开发组也有关系。这不,开始内爆了。
前两天我在纠正关于json_decode的问题时,看了一下在线手册,才发现json_decode有了第四个可选参数,把BIG_INT当成STRING来处理。
当然看json_decode的时候里面的参数介绍的不多。这不,昨天雪候鸟更新了N多博客,里面就介绍了两篇与JSON相关的东西:
1、让Json更懂中文(JSON_UNESCAPED_UNICODE)
2、JsonSerializable接口
其中第1篇就是我说的BIG_INT相关的那些附加参数,他这么说了:
XML/HTML代码
- 怎么样, 是不是让大家很开心的改动? 呵呵, 当然, Json在5.4还加入了: JSON_BIGINT_AS_STRING, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES等选项, 如果有兴趣, 大家可以参看: json_encode
所以,比如让中文输出的时候不要变成\uxxxx这种格式就只需要这样:
PHP代码
- <?php
- echo json_encode("中文", JSON_UNESCAPED_UNICODE);
- ,如果没加这个参数,以前输出是:
然后JSONSerialize,则是有点象serialize了,但是只针对数据输出,而不是象serialize可以把整个对象序列化。。有点象这样:
PHP代码
- <?php
- class JsonTest implements JsonSerializable { //看一下这里
- private $a, $b;
-
- public function __construct($a, $b) {
- $this->a = $a;
- $this->b = $b;
- }
-
- public function jsonSerialize() { //也就是说这里要主动实现
- return $this->a + $this->b;
- }
- }
-
- echo json_encode(new JsonTest(23, 42));
- ?>
-
-
在使用的时候就可以这样:
PHP代码
- <?php
- $data = array(
- new stdClass();
- new JsonTest(1,2),
- new JsonTest(3,4),
- array(5,6)
- );
- echo json_encode($data);
- ?>
-
-
雪候鸟也说了:最后提醒一下, PHP 5.4还处于开发阶段, 在最终release之前, 这些特性都可能被调整或者更改. 如果大家有任何建议, 也欢迎反馈, 帮助我们使得PHP变得更好.
------
好吧,第一个功能我喜欢,第二个我短时间内还用不到。。。
Tags: 雪候鸟, json
PHP | 评论:1
| 阅读:17785
Submitted by gouki on 2011, October 10, 11:48 AM
苹果下的ssh工具不是特别的多,所幸老牌的securecrt还是支持MAC版本的。
不过,beta版只有30天的试用期,查了一下的网上资料,发现还是有办法的。
那就是。。。
rm /Users/用户名/Library/Application\ Support/VanDyke/SecureCRT/Config/SecureCRT_eval.lic
这个文件,我最初是想改那个文件里的过期时间 ,失败了,所以还是直接删除吧。。。
最后设了个crontab,每周一次算了。每周一13点删除一次。以防万一,HOHO
Tags: securecrt, ssh
苹果相关 | 评论:1
| 阅读:20027
Submitted by gouki on 2011, October 10, 10:04 AM
介绍这个项目不是因为这个项目很好,主要是其实有一些地址我也不太清楚,但是既然我转载了,那就干脆把原作者的这个项目也介绍一下下喽:
作者主页: http://blog.lyphp.com
项目在:https://github.com/faxiandi/DengLuTong
在项目中需要用微博等帐号登录,便做了此登录通,从最开始只有新浪微博慢慢扩充到现在支持11个网站。 目前只有登录功能,以后会慢慢扩充。 如要与现有系统整合,需根据情况修改lib/local/local.php。
系统需求
php>=5.3 mysql(如需使用其他数据库,请修改自定义相应操作类,参照DBMYSQL.PHP)
安装
DengLuTong\DLTConfig.php中修改数据库信息、app key(对应KEYID)、app secret(对应SECID),根据实际情况修改url地址。 在数据库中添加用户绑定表,结构在DengLuTong.sql中。
演示
index.php,login.php,logout.php,reg.php为示例程序文件。示例用户表结构在DengLuTong.sql中。
API申请地址
天涯 http://open.tianya.cn/
腾讯 http://connect.opensns.qq.com/
淘宝 http://open.taobao.com/
Google OAUTH https://www.google.com/accounts/ManageDomains
开心网 http://www.kaixin001.com/platform/rlink/rlink_create.php
搜狐 http://open.t.sohu.com/
网易 http://open.t.163.com/
豆瓣 http://www.douban.com/service/apikey/apply
MSN https://manage.dev.live.com/
人人网 http://dev.renren.com/
新浪 http://open.weibo.com/
盛大 http://connect.open.sdo.com/
YAHOO https://developer.apps.yahoo.com/projects
支付宝 https://b.alipay.com/order/hot.htm
---------------------
这些API的地址才是我真正想要转载的。
PHP | 评论:1
| 阅读:15112
Submitted by gouki on 2011, October 8, 6:57 PM
今天同事突然和我说,腾讯微博无法访问了。但新浪微博接口却是正常的。
打开指定的URL,发现报错,仔细看了一下代码,居然是
if(!is_array($jsonDecode)){
throw new Exception("xxxx");
}
当发现json解析出来不是数组的时候,直接抛出异常。
可是我把json字符串在decode前输出的时候是正常的,那是为什么呢?为什么我var_dump出来是null?
看了一下手册,居然说var_dump出来null的原因是因为deepth不够,但看了一下手册,好象也就三个取值范围,128,512,1024,于是我设为最大的1024,但仍然失败。
然后,突然发现,居然json_decode有第四个参数,把BIGINT当成字符串。以为是这个问题导致的,兴冲冲的把这个参数加上去,结果报错,看了一下手册,原来这个参数居然是PHP 5.4才有的。。。
----
再测试,把文本拷成字符串,运行json_decode,居然正常了。这时候我就纳闷了。为什么直接处理不正常。拷成字符串就正常了。
仔细检查。居然发现里面有中文被截断的字符串。晶,肯定是这个原因了。。。
于是写正则,把这玩意替换掉,把A\d{3};的字符串都替换成空格。然后再反处理回去。。结果仍然失败,这时候我就在想一个问题,为什么会有这种情况?
最终我确定,绝对是编码,一定是那个不正常的字符串导致了原来的json字符串被错误的识别成了ISO-8900-1,所以我啥也没处理,直接把json字符串mb_convert_encoding($str,"UTF-8","auto"),自动转换成utf-8,果然json_decode,顺利的转换成了数组。
---
纠结了一天的事情,居然就是这样的小,所幸解决了。
Tags: json_decode, 腾讯微博
PHP | 评论:1
| 阅读:17247