分类: 技术

各种开发心得,包括语言、软件工程、开发工具等

  • PHP通过Sql生成带特定索引的数组

    不明白原理,从别人代码中看到的,蛮好用,不过似乎性能不好:

    SELECT id, sum(rmb) AS rmb, sum(device) AS device
    FROM log_table
    WHERE date>'2012-10-20'
    GROUP BY id

    这样一段Sql,用PHP自带的pdo这样请求:

    $result = $dbh->query($sql)->fetchAll(PDO::FETCH_ASSOC|PDO::FETCH_UNIQUE|PDO::FETCH_GROUP);

    可以得到一个数组,使用sql中第一个字段也就是id为索引,每个元素为一个含两个属性(rmb, device)的对象。换成json写法大概是这样:

    // 以前
    [{id: 1, rmb: 1, device: 1}, {id: 2, rmb: 2, device:2}]
    
    // 现在
    {'1': {rmb: 1, device: 1}, '2': {rmb: 2, device: 2}}

    这样再操作会方便很多。

  • 浅谈Git在Web部署上的运用

    Git是个好东西自不用说,对比SVN来,它有以下好处:

    1. 分支操作速度快,便于制定开发流程
    2. 每个节点都是完整的代码库,可以不受中心版本库的制约
    3. 使用开源类库框架一样可以随心所欲修改并且进行版本管理

    做Web开发的时候,我一直想用Git进行部署。因为之前要么FTP,要么直接在服务器上修改,都会产生各种问题。最近尝试了下,发现还挺简单,记录下来。

    (更多…)

  • 书评:《基于MVC的JavaScript Web富应用开发》

    封面
    基于MVC的JavaScript Web富应用开发一书的封面

    知道这本书源于那篇博客:《旅行,写作,编程》。读完文章后,我忍不住顿足捶胸,尼玛这才是生活啊,这才是程序员应有的生活啊!!最尼玛让人崩溃的是,作者才21啊!!就把我30岁之后的梦想实现了。感叹之后,屌丝的生活还得继续。谁让咱们一出生就是Hard模式呢,老实说我对目前的生活还算基本满意,当然如果我也能环游世界写本书啥的,我可能也觉得洒家这辈子值了。

    (更多…)

  • 使用Ant编译Web应用

    开发只是万里长征走完前半截,测试部署也是很重要的环节。

    尤其是,前端面临着两个很大的问题:

    1. 前端代码是开放的,用户随时可以直接读代码
    2. 代码下载到用户电脑上运行,需要占用带宽

    所以如果我们可以先压缩、混淆代码,再部署给用户使用,就可以大大改善这种情况。这个时候,ant是不二的选择(因为我只会ant……)。

    关于Ant

    下载:http://ant.apache.org/bindownload.cgi

    手册:http://ant.apache.org/manual/index.html

    (更多…)

  • Android笔记

    这篇文章会记录我在Android开发过程中积累的各种知识和技巧。
    (更多…)

  • 吐槽Mac

    全主观不负责吐槽Mac。

    为了能开发iOS app,专门买了一台Mac mini,想着顺便能体验下Mac OS之优雅。结果把我恶心坏了。
    先是慢,不说了,慢的跟屎一样。还是i5的机器,我i3的本子跑起win8来呼呼的。
    快捷键不兼容,这是习惯问题,先不说了。
    字小的跟屎一样,这是为了照顾谁?我双5.2的眼睛,我觉得那些戴着近视镜高喊Mac优雅的人真可怜。
    装软件得把软件拖到应用文件夹里,我想问问这是哪个设计师在生活中遇到的真实体验。
    装软件的第二个问题是得通过AppStore装,但是机器自带系统不是10.7,不能用AppStore,这奇葩的设计绝逼优雅,我想不出第二个词来形容。
    好不容易升级了系统,开始装XCode,开始半天没动静,鼠标放到上面一无进度二无数值,我也不知道是我们家网慢还是干脆已经死了。
    等着下载的间隙想在qq上跟人闲聊几句消磨时间,可~这~字~出~的~也~太~慢~了~吧。

    总之我没觉得Mac OS有啥优雅,或者有啥“生活式”。我甚至觉得,鼓吹MacOS好是一种反人类行为。
    也许我需要一台顶配的机器来改变下观点。

    说到顶配,苹果那帮人太黑了,一根线好几百……

  • Window 8,使用管理员账户启用Chrome,会无法从桌面拖动内容到网页当中去。

  • 在纯AS项目中嵌入swf资源

    近来想要告别Flash Pro编译,因为从效率上和资源占用上来说,FlashDevelop功能齐全又快速方便。不过有些图形资源还是只有用Flash Pro做起来最简单,而且我的早期项目大多是在Flash Pro里做的,所以我需要将他们嵌入到代码当中。

    经过尝试,最符合我要求的操作是这样:

    [Embed(source = '/assets/bannerProducer.swf', symbol = "toolbar")]
    [Bindable]
    public static var TOOL_BAR:Class;

    其中,source后面的路径是项目路径,和嵌入元素的类所在的包无关;symbol属性指向的是希望从swf中取出哪个元件,元件需要事先在属性里选择“为ActionScript导出”。使用的时候直接声明实例就好:

    var toolbar:TOOL_BAR = new TOOL_BAR();

    PS:发现这样做之后,字体会有问题。在Flash Pro里面,文本框设置字体为“微软雅黑”,然后在平滑选项里选择“使用设备字体”,输出的swf会有限使用本地的“微软雅黑”字体;导入再输出的时候,只会保留“设备字体”这个选择。如果在Flash Pro里面嵌入字体,显示就正常了。

  • AS3中的插件模式开发(一)

    本系列文章将在新博客更新,链接在此,请移步阅读。

    (更多…)

  • Flash开发Android应用的一点摸索

    今天早上在小米手机上跑通了Flash Builder开发Android应用的流程,大致经验如下:

    1. 真机测试要求移动设备必须有驱动,能够被windows系统识别
    2. Flash Builder比较傻,只能真机调试
    3. 调试的设备需要安装air,我的xt800系统只有2.1,无法安装air,所以虽然可以识别,但是无法调试,用小米就没问题
    4. 发布的时候可以直接打包运行时,但是体积会膨胀很多(大约8M,应该包含了air运行时)
    5. 发布后的apk能否在机器上运行仍需比照air的系统要求,xt800又败了……

    分析Adobe的现状,我这么认为:

    正如之前宣布的,已经放弃继续开发移动端的Flash Player插件,因为他们认为在移动端,Native App会击败绝大多数的Web App,而且开发者也几乎不会针对移动用户做很好的优化。与此同时他们加大对新开发环境的布局,新版Flash Pro和Flash Builder都支持至少三种Native App的发布(iOS、Android、Blackberry)。不过可惜的是,相对于iOS直接编译成原生应用,Android系统必须附带一个内绑定的air运行时实在让人很不爽,性能和系统要求会给产品发布带来很大问题。而且我相信iOS那种封闭的环境都能搞定,Android这种开放的标准理应更好做才是。

    这可能跟air的尴尬处境有关。相比Flash Player这个事实标准,air从推出到现在始终不温不火,Adobe始终没有公布过它的安装率,估计一定不高。air除了能让我们这些前端工程师能不太费力的开发一些本地应用,似乎并没有起到很大的作用。但是Adobe官方对他寄予厚望,应用市场、开发大赛一直在搞,不过似乎没什么起色。如今,他们将air定位成移动端开发解决方案,试图和Flash Player各自霸占一条业务线。但是AIR对系统的要求使得它无法适用于所有机型,这就更让人心生迷惑了,有谁会选择这样一个解决方案呢?

    或者我只能这样理解,air本身提供了多种成熟的解决方案,比如视频支持、3D支持、绘图API等,这些东西如果使用标准SDK自行开发的话会是很大一笔开支;而系统是可以自己刷的,所以相对起来,我们可以认为用户会比看起来的更多。