预装编译环境

在ubuntu中执行下面命令安装编译依赖软件

> sudo apt-get install \
    libxml2-dev \
    libcurl4-openssl-dev \
    libjpeg-dev \
    libpng-dev \
    libxpm-dev \
    libmysqlclient-dev \
    libpq-dev \
    libicu-dev \
    libfreetype6-dev \
    libldap2-dev \
    libxslt-dev

More

php中有三个函数与捕捉运行错误有关,分别是:

set_error_handler:运行错误处理函数,php内核执行代码出错时一般是触发error,而不是抛异常,抛异常是面向对象编程中用的

set_exception_handler:运行异常信息处理函数,当代码中throw的异常没有被try-catch捕获时,就会调用该函数。php中error和exception的区别可以看这篇回答:php-exceptions-vs-errors

register_shutdown_function:脚本关闭执行函数,会在php脚本每次执行完成退出前运行。

为了保证运行错误能被顺利捕捉到,必须保证在有错的程序执行前先注册了错误处理函数。 一般错误处理代码结构如下:

More

由于国内网络的原因,在安装ruby相关软件时,经常会在请求rubygems.org下载时一直卡着不动,这时可以切换到淘宝的镜像源,速度嗖嗖的。

http://ruby.taobao.org/

详细的更改方法可以访问上面的网址,假如项目下有GemFile文件,还需要更改GemFile文件的配置源地址。

More

软件环境

继续下面的示例前,需要保证安装了下面的软件:

  • JDK 1.6
  • Android SDK
  • IntelliJ IDEA 12
  • Scala 2.10.2
  • Maven 3

IntelliJ IDEA 12正常也可以换为Android Studio,不过因为Android Studio是基于IntelliJ IDEA 13 EAP开发的,当前scala plugin还不支持13 EAP,所以还是建议使用IntelliJ IDEA 12,等scala plugin支持最新版后,再换为Android Studio进行开发。

示例项目

hello-scaloid-maven是一个完全使用maven编译的示例项目,借助android maven plugin插件可以把代码编译为android的apk文件。

More

工作用电脑将会切换到ubuntu上了,记录下ubuntu常用操作。

===升级到php5.4===

For Ubuntu 11.10/12.04:
sudo add-apt-repository ppa:ondrej/php5
sudo apt-get update
sudo apt-get install php5
For Ubuntu 10.04 LTS, run the following commands (Thanks to Ivan Castellanos for the extra tip):

sudo echo "deb http://ppa.launchpad.net/ondrej/php5/ubuntu lucid main" >> /etc/apt/sources.list
sudo echo "deb-src http://ppa.launchpad.net/ondrej/php5/ubuntu lucid main" >> /etc/apt/sources.list
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E5267A6C
sudo apt-get update
sudo apt-get install php5
You can check if PHP 5.4.x is successfully installed with this command:

php5 -v

http://www.zimbio.com/Ubuntu+Linux/articles/D_AsJR2qAL6/How+Upgrade+PHP+5+4+Ubuntu

More

IDA Pro是一款强大的反汇编软件,特有的IDA视图和交叉引用,可以方便理解程序逻辑和快速定位代码片断,以方便修改。 IDA视图

示例程序

下面会通过修改示例程序的输出字符串,来讲解如何使用IDA Pro。

#include

main()
{
    int n;
    scanf ("%d",&n);
    if (n > 0)
       printf("a > 0");  //后面会用IDA Pro把'a'改成'n'
    else
       printf("n < 0");
}

编译后的程序下载:demo

More

工作中发现一个公共组件因为某个类不带有[Serializable]特性,导致保存到memcache时出错。刚好负责的同事请假不在,尝试了iLSpy反编译方法后,最后决定使用Mono.Cecil直接修改现成的程序集dll解决。

示例代码如下:

class Program
    {
        static void Main(string[] args)
        {
            var asmFile = "TestDll.dll";  // 程序集名
            Console.WriteLine("add serializable attribute for '{0}'.", asmFile);

            var asmDef = AssemblyDefinition.ReadAssembly(asmFile, new ReaderParameters
            {
                ReadSymbols = true        // 标识是否读取修改pdb文件
            });

            // 取类名中包含"Entity"字符串的类
            var types = asmDef.Modules
                .SelectMany(m => m.Types)
                .Where(t => t.Name.Contains("Entity"));

            // 设置类为可序列化
            foreach (var type in types)
            {
                type.IsSerializable = true;
            }

            // 重新保存dll
            var newAsmFileName = "TestDll_new.dll";
            asmDef.Write(newAsmFileName, new WriterParameters
            {
                WriteSymbols = true
            });

            Console.WriteLine("new dll has save as {0}.", newAsmFileName);
        }
    }

Mono.Cecil除了可以更改特性,还能把sealed类更改为public类,功能非常强大。

More

这是准备在每周技术分享会中分享的内容,但因为团队都忙于各种需求和服务器迁移,分享就一直搁置了。

这个ppt还是有用心做的,如ppt的背景,和debug流程的箭头都是使用photoshop偷下来的= =!

示例程序:Download Example


android模拟器默认的内部存储空间只有几十m,随便安装几个app就满了,google了下,发现AVD管理器是没有增加内部存储空间的设置的,要增加需要使用命令行来启动模拟器,命令如下:

emulator -partition-size  <size> -avd <virtual device name>

可以把命令保存到批处理bat文件中,以方便以后直接启动。

使用命令行启动模拟器是不能使用snapshot功能的,创建的avd之前有启动的话,需要先关闭。 android avd

More

StackOverflow上看到的解释WSGI如何工作的图(一图胜千言):

相关: http://stackoverflow.com/questions/1303118/looking-for-a-diagram-to-explain-wsgi http://www.python.org/dev/peps/pep-0333/


Page 2 / 5
Top