工作用电脑将会切换到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/


在微博上发现已有同学整理了一个不错的linux命令文档:http://115.com/file/c2rzrvw3#Unix-Linux 这篇文章等遇到好的命令再继续更新。。。

文件命令 | 程序命令 | 网络命令 | 系统命令

文件

创建一个文本文件

touch test.txt

删除文件

rm -f text.txt

创建一个目录

mkdir newdir

删除一个目录

rm -r dirname
More

工作中有时会碰到需要迁移数据库的时候,如更换机房,更换新服务器等。迁移数据库最重要是要确保正在运行的程序不会因为漏更改连接字符串而导致程序报错。但有时维护的项目可能老旧,没有相关维护文档,还有一些使用该数据库的windows服务也可能遍布在其他服务器上,这时我们该如何找到所有正在使用该数据库的服务呢?

下面以windows服务器和Sql Server数据库为例,数据库服务器的ip是192.168.6.189,linux平台的思路差不多,只是命令有变化。

1、查看Sql Server进程ID

打开任务管理器,点击“查看->选择列”,勾选“PID(进程标识符)sql server sql server

进程名称为“sqlservr.exe”的PID就是Sql Server的进程ID,当前是1800

More

IIS可以在一台服务器上配置多个web站点,每个站点通过ip地址、端口(port)和主机名(host)结合的标识符(ServerBindings Metabase)进行区分。标识字符串的格式如下:

IP:Port:Hostname

上面的IP和Hostname是可选项,假如设定站点时不指定,表示匹配所有。

主机名(Host Headers)是HTTP消息的一部分

浏览器和web服务器之间是通过http协议通信的。http发送的请求头部(headers)部分包含有很多信息,如Content-Length, Referer, Host等等。

More

本人的ubuntu server版本是10.04.4,安装在免费的vmware player 4.0中。 安装vmware-tools需要gcc和对应的linux-headers进行编译,需先执行下面两个命令进行安装:

sudo apt-get gcc

sudo apt-get install build-essential linux-headers-$(uname -r)

安装后,点击vmware player菜单“Virtual Machine->Install VMware Tools”,画面下方会出现黄色的VMware Tools安装提示框。 1、把安装光盘绑定到一个文件夹:

mkdir /mnt/cdrom

sudo mount /dev/cdrom /mnt/cdrom
More

Page 2 / 4
Top