2019年4月14日
摘要: Undefined symbols for architecture x86_64: 这里是说链接器找不到符号的定义。代码改改就好,但实际上整个编译链接的过程可以了解一下。 编译: 得到a.o目标文件,看看编译后的代码段: 可以看到对应test的调用指令为: e8 00 00 00 00 由于a.c 阅读全文
posted @ 2019-04-14 18:58 万事屋madao 阅读(396) 评论(0) 推荐(0) 编辑
2015年4月1日
摘要: 昨天有位同事跟我说,我们的手游客户端(cocos2d-x lua binding)代码没有看到lua的特殊技巧,用起来跟其他语言差不多。《Programming in lua》毕竟有将近400多页,他想知道lua的语言特性都用在哪了。当其时回答不上来,现在来思考一下。要解答他的疑问首先要解答的却是另... 阅读全文
posted @ 2015-04-01 02:21 万事屋madao 阅读(1745) 评论(1) 推荐(1) 编辑
2014年1月8日
摘要: 协程,简单来说就是新创建一个协助程序(co = coroutine.create(func)),然后需要手动去启动它(coroutine.resume(co)),在它最终退出之前,它有可能暂停多次返回阶段性的结果(coroutine.yield(co)),每一次暂停之后都必须手动去恢复它(coroutine.resume(co))。协程在lua源文件中对应lcorolib.c,数组co_funcs中定义了c暴露给lua的接口。从上面的描述看和c函数调用有点相似,只不过c函数只有一个出口,所以不可能返回多次。题外话,为什么c函数只有一个出口?我自己粗浅的理解是因为c函数的所有信息都放在栈上,而c 阅读全文
posted @ 2014-01-08 23:48 万事屋madao 阅读(5135) 评论(0) 推荐(0) 编辑
2014年1月1日
摘要: Begin at 2014.1.make的内置规则可以能过make -p来查看make的内置规则,改变一些内置的变量值,Makefile就不用写那么长了,例如LDLIBS表示要连接的库,CFLAGS表示一些编译选项(头文件搜索路径之类的),LDFLAGS表示链接选项。但要注意的是这些变量是全局的,如... 阅读全文
posted @ 2014-01-01 23:35 万事屋madao 阅读(576) 评论(0) 推荐(0) 编辑
2013年10月9日
摘要: 本地下载工具的磁力链下载速度不给力,而百度云盘有提供离线下载服务,相当于就是直接到服务器取个链接而已。但这需要bt文件,而我只有链力链。网上搜了一下,可以从磁力链构造一个bt文件的下载地址,用python实现了一下。#!/usr/bin/python#coding=utf-8"""magnet:?xt=urn:btih:B298DD7E3BF7B300FF1F235B90FD5441002FE440magnet:?xt=urn:btih:506F4F0BE4D982E2E45711B7FA9BD4B03D3908CFmagnet:?xt=urn:btih:2F2D 阅读全文
posted @ 2013-10-09 01:31 万事屋madao 阅读(26915) 评论(1) 推荐(0) 编辑
2013年9月19日
摘要: python是一门动态解释型语言。为了理解"动态"和"解释",前几天都在看《Python源码剖析》,以下是自己的一些总结。先说解释,除开py2exe等不说(因为我不了解),python脚本需要交由python虚拟机去解释执行,当然大家都知道里面还有一个编译的过程,python虚拟机解释的只是编译后的字节码,而源代码的解释工作由python的编译模块完成。那么字节码是怎么解释执行的呢?我以为会很优雅,但实际上只是一个很长的switch-case,有1711行那么长(Python-2.7.5,参见ceval.c)。python虚拟机简单模拟了x86的堆栈模型 阅读全文
posted @ 2013-09-19 02:51 万事屋madao 阅读(1636) 评论(0) 推荐(0) 编辑
2013年6月14日
摘要: 端午在家看了一下apache的内存池,具体的实现现在也想不起来了,涌上心头的是,为什么要实现这么一个内存池?简单的malloc有什么错呢?这篇文章把很多问题都解答了:http://rdc.taobao.com/blog/cs/wp-content/plugins/glibc%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86ptmalloc%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%904.pdf(glibc源代码分析)目前比较赞同的一点是,过多的malloc,后面确实会忘记free,又或者在所有的地方free太麻烦了。然后文中的经 阅读全文
posted @ 2013-06-14 00:44 万事屋madao 阅读(222) 评论(0) 推荐(0) 编辑
2013年6月1日
摘要: 刚刚看了一篇文章:http://www.wumii.com/topbar/10u9ZbiEB,又再扯到了万年的哀思——像素。以往都是懂了一两天然后又不懂了,希望这回真的不会忘记了吧。举个例子,我的手机,SamSung I9070,分辨率是800x480,也就是宽有800个像素点,长有400个像素点,仅此而已。所有图像、图标都有自己的像素大小,例如一个图标大小是32x32,那么在我手机上大概可以横排800/32也就是25个这样的图标。而我的手提,宏基Aspire,分辨率是1366x768,那么大概可以横排1366/32也就是42个这样的图标。好像的确没怎么见过有人写代码直接以距离为单位的。那么图 阅读全文
posted @ 2013-06-01 02:24 万事屋madao 阅读(2269) 评论(1) 推荐(0) 编辑
2013年4月17日
摘要: 从代码开始吧:epoll_ctl(clifd, EPOLL_CTL_ADD, EPOLLIN | EPOLLOUT);epoll主循环将使用水平模式(默认,EPOLLLT)监听clifd的读写状态,在水平模式下,只要clifd的内核读缓冲区存在未读的数据,每一次的epoll_wait()返回针对clifd的epoll_event都会设置EPOLLIN;只要clifd的内核写缓冲区存在可写空间,每一次的epoll_wait()返回针对clifd的epoll_event都会设置EPOLLOUT。通常来说,读光内核缓冲区不难,写满内核缓冲区就有点扯了。通常的解决方案是:Don't inclu 阅读全文
posted @ 2013-04-17 01:31 万事屋madao 阅读(3855) 评论(0) 推荐(0) 编辑
2013年4月7日
摘要: 为了破某人某个手机游戏的纪录,终于买了一台安卓智能手机,好高级啊!在破纪录之余,我也想试着搞一下手机开发,虽然不太实际。首先要解决的问题当然是开发环境。好习惯,先找官方文档。直接google一下android,跑进去安装到开发基本上全都有写了。环境搭建主要是:Download the Android SDK.Install the ADT plugin for Eclipse (if you’ll use the Eclipse IDE).Download the latest SDK tools and platforms using the SDK Manager.基本上我是按照上面所写的 阅读全文
posted @ 2013-04-07 01:26 万事屋madao 阅读(1427) 评论(0) 推荐(0) 编辑