1. Cordova/Phonegap应用构建环境搭建

    混合(Hybrid)移动开发将Web开发与原生开发优势互补,之后应该是一个不错的方向。Phonegap是混合移动开发的一个方案, 开发者可以使用标准的Web技术进行开发,然后使用Phonegap打包成原生APP,也可以为Phonegap开发插件来扩展APP功能。 Cordova是Apache的顶级项目,起于Adobe贡献给Apache基金会的Phonegap源码,之后Phonegap官方貌似则专注于提供Phonegap应用的云构建服务。 Phonegap官网提供的文档与Apache Cordova文档是相同的,所以从技术上可以将Phonegap与Cordova视为同一个东西。

    虽然Phonegap官方提供免费的开放(public)应用以及一个私有应用构建服务。但对于应用调试或插件开发来说, 使用云构建服务上传源码下载APP还是挺耗时间的,不太方便,所以搭建本地的应用构建环境是必要的。

    依据Cordova文档的The Command-Line Interface 部分,针对Android应用,在Ubuntu上搭建Cordova应用构建环境的步骤如下所示:

    1. 安装Node.js和git客户端

    • NodeJS官网下载Linux二进制压缩包,解压缩后将bin路径加入PATH环境变量,即可从命令行执行node、npm命令。
    • sudo apt-get install git

    2. 安装Cordova:

    • sudo npm install -g cordova

    3. 下载JDK …

    Tagged as : 笔记 Cordova Phonegap
  2. 读书笔记:演讲之禅-一个技术演讲家的自白

    大大小小的技术会议参加过不少,关于演讲,从一个听众的角度也有一些心得;随着技术积累能力提升,也希望能够在一些正式场合做技术演讲。年轻的技术人应该学会经营自己,show出你自己。

    我并不是一个擅长表达的人,虽然私底下在朋友技术圈内做过一些技术分享,但对于正式场合的技术演讲却没什么经验。

    演讲是个经验活,但总归有一些可事先准备、能够提高成功概率的方法和注意事项吧?所以找来《演讲之禅-一个技术演讲家的自白》一书,看看是否能从别人的经验中学到点什么。


    毋庸置疑,这本书非常实在,值得一读。根据该书内容以及自己的一些想法,按照时间顺序整理出技术演讲相关的注意事项:

    演讲前

    一个成功的演讲毫无疑问是需要提前准备的,这里的“准备”不仅仅是准备幻灯片这么简单。

    首先,你需要搞清楚-举办方对会议或者活动的定位,与定位直接相关的即是听众-是哪些人,他们想知道什么,需要听到什么,根据这个定位来选择主题; 与主题相关的是你需要考虑自身是否有能力驾驭这个主题-待分享的技术你是否真的懂?这方面经验是否足够?不要试图分享那些自己还一知半解的技术点,否则就注定是在给自己挖坑!

    从听众情况和自身情况两方面来选择主题,另外还得根据演讲的时间来调整主题的范围大小。从小老师就告诉我们作文题目得小而具体,立意要新。个人认为对于演讲的题目也应如此。

    在确定演讲的具体题目后,个人建议可以先篇文章,在文章中将演讲题目相关的问题细节都搞清楚讲清楚,然后根据文章内容确定要分享内容中哪些方面(通常由于时间限制很难面面俱到,所以要有所选择), 定下演讲的提纲,即明确了演讲的整个大致的思路 …

    Tagged as : 笔记 演讲
  3. Yii源码阅读笔记 - 应用模块化

    概述

    Yii框架有个“模块(Module)”的概念,与“应用(Application)”类似,模块必须归属于一个父模块或者一个应用,模块不能单独部署,一个应用不一定要分模块。

    由此可以看到,Yii的“模块”和“应用”类似于Django框架中的“应用(App)”和“项目(Project)”。

    当一个应用的规模大到一定的程度 - 可能涉及多个团队来开发,就应该考虑分“模块”开发。“模块”通常对应应用的一个相对独立的功能。

    一个模块化的Yii框架应用的工程目录结构大致示例如下:

    Yii-WebApp-Modules

    上图所示项目有一个名为“forum”的模块,该模块下也有自己的componentscontrollersmodelsviewsextensions目录,与一个普通的/不分模块的Yii框架Web应用的项目结构非常相似。

    Yii框架模块化应用的所有模块默认都是放在protected/modules目录下,每个模块的内容又各自放在以模块ID(如forum …

    Tagged as : PHP Yii 笔记 总结
  4. Yii源码阅读笔记 - 缓存

    概述

    从之前的文章Yii源码阅读笔记 - 路由解析Yii源码阅读笔记 - Model层实现可以看到Yii框架对于解析好的路由规则数据表的schema都会根据条件尝试读写缓存 来提高应用性能。

    但缓存组件并非核心组件,需要额外的配置,默认ID为cache,如果不使用该ID,那么就得注意同时配置好框架中使用缓存的组件。

    恰当地使用缓存组件,能明显地提高应用的性能。

    针对不同的缓存后端(backend),Yii框架提供了多种缓存组件,如文件缓存(CFileCache)、Memcached缓存(CMemCache)、Redis缓存(CRedisCache)等。这些缓存组件(除CDummyCache外,CDummyCache并不是一个有效的缓存组件)均直接继承自抽象类CCache(见文件yii/framework/caching/CCache.php)。

    下面以使用Memcached缓存为例,分析Yii框架缓存组件的实现。

    分析

    CMemcache所在的整个继承树(CMemcache -> CCache -> CApplicationComponent …

    Tagged as : PHP Yii 笔记 总结
  5. Yii源码阅读笔记 - 模板引擎集成

    概述

    通常我们会使用模板引擎来渲染HTML页面,而不是使用HTML代码中插入PHP代码的方式来编写动态页面。Yii框架中模板引擎也是作为组件引入的,默认ID为viewRenderer, 但从Yii源码阅读笔记 - 组件集成可以看到Yii Web应用加载的核心组件中并没有viewRenderer,所以需要自己配置。 Yii提供了一个直接可用的模板引擎组件类CPradoViewRenderer(见文件yii/framework/web/renderers/CPradoViewRenderer.php),该模板引擎类让开发者可以使用类Prado框架的模板语法。

    如果你想使用Smarty这种第三方模板引擎,有两种方式将模板引擎引入Yii中使用(以Smarty为例):

    1. 将Smarty封装成一个Yii的普通组件,然后配置加载到Yii::app()。假设组件ID为smarty,那么就可以通过Yii::app()->smarty来调用组件。
    2. 参考CPradoViewRenderer类的实现,将Smarty封装成一个模板引擎组件,并以ID为viewRenderer进行配置加载。

    相比而言,第二种方式更好。原因是:第一种方式由于每种第三方模板引擎的接口不一样,如果应用要替换模板引擎,就需要修改控制器类中的代码。而第二种方式由于第三方组件统一封装成Yii框架定义的模板引擎接口形式, 所以如果要替换模板引擎,只需修改自定义模板引擎组件类的接口实现就可以了。这样调用模板引擎的代码逻辑就只依赖接口形式,而不是依赖于接口实现,从而实现解耦。

    本文主要分析第二种方式的实现。

    分析

    Yii中对页面模板进行渲染可以调用 …

    Tagged as : PHP Yii 笔记 总结
  6. Yii源码阅读笔记 - Model层实现

    概述

    Yii中,对Model层的使用,有两种方式:

    1. 通过类CDbConnection和CDbCommand来操作
    2. 使用ORM形式:编写model类继承自抽象类CActiveRecord

    第1种方式的示例如下:

    <?php
    $connection = Yii::app()->db;  // 或者Yii::app()->getComponent('db');
    $queryResult = $connection->createCommand($sql)->queryRow();
    

    第2种方式中编写的model类可能需要实现方法getDbConnectionmodeltableName

    在实现上,第2种方式是基于第1种方式的,即第2种方式的抽象程度更高。Yii没有屏蔽第1种方式,这样能让开发者按需选择。 但我个人并不喜欢这样,两种方式同时存在,会导致应用的model实现稍显混乱。

    分析

    Yii框架model层的入口为CDbConnection类,该类有很多public的属性可供配置,如connectionStringusernamepassword等。

    根据Yii源码阅读笔记 - 组件集成一文可知,组件初始化时会调用init方法。 类CDbConnection的init类实现如下:

    public function …
    Tagged as : PHP Yii 笔记 总结
  7. Yii源码阅读笔记 - 组件集成

    概述

    Yii框架将各种功能封装成组件,使用时按需配置加载,从而提高应用的性能。内置的组件又分为核心组件与非核心组件,核心组件是任何Web应用和Console应用都需要的。 此外,应用开发者还可以按照一定规则封装配置使用自己的功能组件。Yii会把应用需要的组件都加载到应用容器Yii::app()中,使得组件的使用方式一致方便。

    基于Yii框架开发应用需要理解如何配置组件、如何开发自己的组件,对应着需要理解Yii是如何注册加载组件的。

    分析

    Yii源码阅读笔记 - 请求处理基本流程一文可知,Yii加载组件的入口为抽象类CApplication构造方法中的以下两行代码:

    $this->registerCoreComponents();
    $this->configure($config);
    

    registerCoreComponents方法定义于类CWebApplication中,用于加载Web应用的核心组件,组件列表如下:

    array(
        // 核心组件
        'coreMessages'=>array(
            'class'=>'CPhpMessageSource',
            'language'=>'en_us',
            'basePath'=>YII_PATH.DIRECTORY_SEPARATOR.'messages',
        ),
        'db'=>array(
            'class'=>'CDbConnection',
        ),
        'messages'=>array(
            'class …
    Tagged as : PHP Yii 笔记 总结

Page 3 / 6