mysql数据库及django用户名启用中文的方法
mysql数据库启用中文
在mysql的配置文件/etc/my.cnf的[mysqld]下加入
character_set_server=utf8
Django启用中文用户名
Django默认只能以字母、数字、下划线组成用户名,修改检验用户名的正则表达式可以绕过这一规则:
/usr/lib/python2.7/site-packages/django/contrib/auth/models.py:
class AbstractUser(AbstractBaseUser, PermissionsMixin):
...
validators.RegexValidator(re.compile('^[\w.@+-]+$'), _('Enter a valid username.'), 'invalid')
...
把正则表达式从^[\w.@+-]+$ 改为 ^[\S.@+-]+$即可
基于Jenkins和Koji的代码管理及构建系统
Summary
Currently, we KVM team are maintaining the code repository of the virtualization software(such as QEMU, Libvirt, Kimchi, Linux, etc.) for PowerKVM development team and delivering corresponding RPM packages. We collect patches from mailing list and build update RPM packages every workday. The work load is extremely heavy if we manually download the patches from mailing list, apply them to the repository, and build RPM packages covering all the supported platforms.
This environment, based ...
发行版制作及Anaconda基础
Anaconda是用于Fedora, RHEL等Linux发行版的安装程序,可以实现通过LiveCD,PXE,NFS等方式安装Linux系统以及利用kickstart文件实现无人值守的无交互安装。
发行版制作(Fedoran系统环境)
选择所需的软件包。
制作自己的发行版首先要确定你的发行版需要安装哪些软件。决定之后需要把这些软件相应的RPM包拷贝到某个目录,然后在这个目录下执行createrepo命令来创建RPM软件源。
创建ks文件。
ks文件用于指定制作发行版时用到的软件源及软件包,具体语法可参考 kickstart语法,下面是一个简单的例子:
编译及安装
获取源码:git clone git://git.fedorahosted.org/git/anaconda.git
安装依赖包: sudo yum install libtool $(grep ^BuildRequires: anaconda.spec.in | awk ‘{print $2}’)
安装、配置transifex:sudo yum install transifex-client;tx i ...
QEMU 2: 参数解析
#一、使用gdb分析QEMU代码#
使用gdb不仅可以很好地调试代码,也可以利用它来动态地分析代码。使用gdb调试QEMU需要做一些准备工作:
1, 编译QEMU时需要在执行configure脚本时的参数中加入–enable-debug。
2, 从QEMU官方网站上下载一个精简的镜像——linux-0.2.img。linux-0.2.img只有8MB大小,启动后包含一些常用的shell命令,用于QEMU的测试。
$wget http://wiki.qemu.org/download/linux-0.2.img.bz2
$bzip2 -d ./linux-0.2.img.bz2
3, 启动gdb调试QEMU:
gdb --args qemu-system-x86_64 -enable-kvm -m 4096 -smp 4 linux-0.2.img
-smp指定处理器个数。
#二、参数解析用到的数据结构#
QEMU系统模拟的主函数位于vl.c文件,无论是qemu-system-x86_64还是qemu-system-ppc64,都是从vl.c中的main函数开始执行。下面先介绍main ...
QEMU 1: 使用QEMU创建虚拟机
一、QEMU简介QEMU是一款开源的模拟器及虚拟机监管器(Virtual Machine Monitor, VMM)。QEMU主要提供两种功能给用户使用。一是作为用户态模拟器,利用动态代码翻译机制来执行不同于主机架构的代码。二是作为虚拟机监管器,模拟全系统,利用其他VMM(Xen, KVM, etc)来使用硬件提供的虚拟化支持,创建接近于主机性能的虚拟机。
用户可以通过不同Linux发行版所带有的软件包管理器来安装QEMU。如在Debian系列的发行版上可以使用下面的命令来安装:
sudo apt-get install qemu
或者在红帽系列的发行版上使用如下命令安装:
sudo yum install qemu -y
除此之外,也可以选择从源码安装。
##获取QEMU源码##
可以从QEMU官网上下载QEMU源码的tar包,以命令行下载2.0版本的QEMU为例:
$wget http://wiki.qemu-project.org/download/qemu-2.0.0.tar.bz2
$tar xjvf qemu-2.0.0.tar.bz2
如果需要参与到QEMU的开发中,最 ...
Linux系统中的信号量机制
1、信号量的定义:
struct semaphore {
spinlock_t lock;
unsigned int count;
struct list_head wait_list;
};
在linux中,信号量用上述结构体表示,我们可以通过该结构体定义一个信号量。
2、信号量的初始化:
可用void sema_init(struct semaphore *sem, int val);直接创建,其中val为信号量初值。也可以用两个宏来定义和初始化信号量的值为1或0:
DECLARE_MUTEX(name) : 定义信号量name并初始化为1
DECLARE_MUTEX_LOCKED(name) : 定义信号量name并初始化为0
还可以用下面的函数初始化:
void init_MUTEX(struct semaphore *sem); //初始化信号量的值为1
void init_MUTEX_LOCKED(struct semaphore *sem); //初始化信号量的值为0
3、信号量的原子 ...
基于Linux与lpc3250开发板的交叉开发环境搭建
###一、Bootloader的安装(在windows下进行)
1、什么是Bootloader:
要想弄明白什么是Bootloader,我们先从PC上的bootloader说起。PC上的BIOS和硬盘上的引导记录有着和嵌入式开发板中的bootloader类似的作用。PC的Bootloader由BIOS和MBR组成,BIOS固化在主板的一个芯片上,MBR则是硬盘的主引导扇区的缩写。PC启动后,首先执行BIOS的启动程序,根据用户的COMS设置,BOIS加载硬盘MBR的启动数据,并把系统的控制权交给保存在MBR中的OS Loader(如grub),最后再由OS Loader将控制权交给OS内核。
了解了什么是PC中的Bootloader,我们再来看什么是嵌入式系统中的Bootloader。嵌入式系统中没有与BIOS类似的芯片,这就需要开发人员自己设计Boootloader。不过,我们不必从零开始写这些代码,已经有公司和组织为大多数嵌入式系统写好了Bootloader。
2、lpc3250的Bootloader组成:
kickstart:位于Flash的Block0,负责加载从Flas ...
ls命令实现分析
###一、ls命令的功能分析
使用man ls命令查看ls命令手册(功能描述和主要选项摘录如下):
List information about the FILEs (the current directory by default).Sort entries alphabetically if none of -cftuvSUX nor –sort.
列出文件(默认当前目录)信息,如果没有-cftuvSUX和–sort选项,就按照字母顺序排序。
-a, --all do not ignore entries starting with .:不忽略以.开始的隐藏文件
-A, --almost-all do not list implied . and ..:不列出 .(当前目录)和..(上级目录)
-B, --ignore-backups do not list implied entries ending with ~:忽略以~结尾的备份文件
-c with -lt: sort by, and show, ctime (time of last modificatio ...
FUSE分析总结
###FUSE简介及原理
FUSE(Filesystem in Userspace)是sourceforge上的一个开源项目,它可以为用户提供编写用户态文件系统的接口。使用FUSE,用户可以不必熟悉Kernel代码,使用标准C库、FUSE库以及GNU C库便可设计出自己需要的文件系统。
FUSE由三个部分组成:FUSE内核模块、FUSE库以及一些挂载工具。
FUSE内核模块实现了和VFS的对接,它看起来像一个普通的文件系统模块;另外,FUSE内核模块实现了一个可以被用户空间进程打开的设备,当VFS发来文件操作请求之后,它将该请求转化为特定格式,并通过设备传递给用户空间进程,用户空间进程在处理完请求后,将结果返回给FUSE内核模块,内核模块再将其还原为Linux kernel需要的格式,并返回给VFS。
FUSE库负责和内核空间的通信,它接收来自/dev/fuse的请求,并将其转化为一系列的函数调用,并将结果写回到/dev/fuse。
挂载工具用以实现对用户态文件系统的挂载。
当系统用户在输入ls /home/kelvin命令之后,最终会调用到Ext4文件系统内的相关函数来对文件进行处理 ...
NBD-网络块设备[翻译]
1997年4月,Pavel Machek 写了他的网络块设备代码,并被当时的Linux Kernel 2.1.55接受。Pavel 在随后的四个发行版(对应的内核版本为55、101、111、132)中维护并升级了他的代码。Andrzej M. Krzysztofowicz贡献了64位机上运行的版本,随后Stephen Tweedie 为其提出了许多的专业建议,尤其是引入了基于信号量的锁机制,使得代码在对称多处理器系统中能够安全的运行。作者们已将其增强以便于运用于工业环境之中。本文描述了网络块设备、驱动、以及它的开发历史。
NBD的驱动程序提供了一种在这个面向网络的世界中更为普遍的访问模型。它在本地客户端模拟了一个块设备,比如一个磁盘或者是一块磁盘分区,但实际提供物理支持的却是通过网络连接的远程服务器。在本地,该设备看起来是一个磁盘分区,但那只是远程服务器的表面。远程服务器是一段轻量级的守护进程代码,它提供对远程设备的访问,而且该守护进程并不需要运行在linux平台之上。本地操作系统必须是linux,而且要支持Linux内核NBD驱动,并且能够运行本地客户端进程。安装NBD可被用来进行远 ...