2014年3月 ’ 的文章存档

Android 4.4 Kitkat Phone工作流程浅析__UI结构分析

本文代码以MTK平台Android 4.4为分析对象,与Google原生AOSP有些许差异,请读者知悉。

概述

       之前有分析过Android 4.2的InCallScreen结构(传送门),但后面Google发布了Android 4.4即Kitkat,遂决定以之前的文章为模板,重新整理并记录。在4.4中当有来电或去电时,显示给用户的界面如图1,在4.4之前称之为InCallScreen,但在4.4之后叫做InCallActivity。在4.4中我们调出的拨号盘界面,实际为DialtactsActivity并隶属于Dialer应用。4.4 中界面分为3块,CallCardFragment、CallButtonFragment、AnswerFragment,如下所示:
b1eee

InCallActivity布局分析

如何正确配置Nginx+PHP

对很多人而言,配置Nginx+PHP无外乎就是搜索一篇教程,然后拷贝粘贴。听上去似乎也没什么问题,可惜实际上网络上很多资料本身年久失修,漏洞百出,如果大家不求甚解,一味的拷贝粘贴,早晚有一天会为此付出代价。

假设我们用PHP实现了一个前端控制器,或者直白点说就是统一入口:把PHP请求都发送到同一个文件上,然后在此文件里通过解析「REQUEST_URI」实现路由。
阅读全文

在浏览器端用JS创建和下载文件

前端很多项目中,都有文件下载的需求,特别是JS生成文件内容,然后让浏览器执行下载操作(例如在线图片编辑、在线代码编辑、iPresst等)。

但受限于浏览器,很多情况下我们都只能给出个链接,让用户点击打开-》另存为。如下面这个链接:

<a href=”file.js”>file.js</a>

用户点击这个链接的时候,浏览器会打开并显示链接指向的文件内容,显然,这并没有实现我们的需求。
阅读全文

Awk 中变量作用域的问题

本文从两个错误的例程开始,提出 Awk 中全局变量污染的现象,并分析其发生的原因。接下来,针对 Awk 变量作用域的特点,提出两种避免全局变量污染的常用方法,引出 Awk 中定义局部变量的方法,并提出修改过后的代码。然后,通过 Awk 的变量调试功能,提出修改过后代码存在的不足,并引出编写通用函数应注意的地方。最后,通过简单说明 Awk 中包含头文件的方法,倡导大家更科学,更有效的使用 Awk 这一文本处理利器。文章的结尾提供了一些常用的 Awk 参考文档,供大家学习参考。

——————————————————————————————-
阅读全文

Docker:利用Linux容器实现可移植的应用部署

Docker是一种在Linux容器里运行应用的开源工具,一种轻量级的虚拟机。除了运行应用,Docker还提供了一些工具,借助Docker Index或自己托管的Docker注册表对进行了集装箱化处理的应用进行分发,从而简化复杂应用的部署过程。

我将在本文介绍如今在部署复杂系统时公司所面临的挑战,Docker怎样有效地解决这个问题,以及Docker的其他用例。

部署的挑战

服务器应用的部署已经越来越复杂了。把几个Perl脚本拷贝到正确目录就完成服务器应用的安装,这种时代已经一去不复返了。如今的软件有很多类型的需求:

  • 对已安装软件和库的依赖(“Python版本高于2.6.3,使用Django 1.2”)
  • 依赖于正在运行的服务(“需要一个MySQL 5.5数据库和一个RabbitMQ队列”)
  • 依赖于特定的操作系统(“在64位的Ubuntu Linux 12.04上构建、测试”)
  • 资源需求:
    • 最小的可用内存(“需要1GB的可用内存”)
    • 能绑定特定的端口(“绑定80和443端口”)

我们来看一个相对简单的应用的部署:WordPress。Wordpress的安装通常要求:

  • Apache 2
  • PHP 5
  • MySQL
  • WordPress源码
  • 一个Wordpress MySQL数据库,配置Wordpress使用该数据库
  • Apache的配置:
    • 加载PHP模块
    • 支持URL重写和.htaccess文件
    • 指向WordPress源码的DocumentRoot

阅读全文