ASP.NET MVC 多语言解决方案()
就一个网站的多语言特性来说,我认为分为两个方面:
1、HTML界面上显示的文字需要多语言
2、HTML界面上JS输出的文字需要多语言
原来在HTML部分直接写的文字都不能直接写要输出的文字,而是要采用标记的方法来替换。JS也是同理。
那么在MVC下怎么能透明的实现多语言呢?所谓透明的实现是指,程序员在开发程序当中,不需要过多的考虑多语言的问题,直接调用一个方法就能实现多语言,而且所要用到的语言文件每个语言一个文件就够了,集中翻译这个语言就完成了多语言的功能。
例如
<html>
<head>
</head>
<body>
多语言输出的文字 //这里就不能直接写中文了,一个好方法是 直接用 <%= Html.Lang("string1") %> 来进行输出
</body>
</html>
&nbs ......
交叉编译基于ARM的Linux内核之前,我们作以下的准备工作:
1、已经安装好一套你熟悉的交叉编译工具(建立好交叉编译环境)。
2、选择一套你熟悉的功能足够你使用的内核,当然,这个内核是适合用你的交叉编译工具编译的。
掌握以上2点,基本上就差不多了。这里默认你知道的一些常用知识----命令&VI&常识什么的你已经了解。
开始编译:
1、下载内核:
下载一个你觉得可以满足你的设计要求又不至于太陌生的Linux内核,对开发是非常有好处的,我选择的是:
linux-2.6.26内核 & arm-linux-gcc-3.4.1工具链。
理由很充分:linux-2.6.26内核满足我到需要而且看起来足够新,并且arm-linux-gcc-3.4.1工具链对linux-2.6.x内核的支持也足够出色!
下载内核压缩文件:linux-2.6.26.tar.bz2
2、建立开发目录:
这个就简单多了,把压缩包copy到一个路径清晰的新建文件夹下(你不会忘了起名字吧),开始解压缩 :tar -xvjf linux-2.6.26.tar.bz2
等待……& ......
通常情况下,我们从命令行输入命令每输入一次就能够得到系统的一次响应。一旦需要我们一个接着一个的输入命令而最后才得到结果的时候,这样的做法显然就没有效率。要达到这样的目的,通常我们利用shell程序或者shell脚本来实现。
一、简介
Shell编程有很多类似C语言和其他程序语言的特征,但是又没有编程语言那样复杂。Shell程序就是放在一个文件中的一系列Linux命令和实用程序,在执行的时候,通过Linux一个接着一个地解释和执行每个命令。
下面我们来看一个简单的shell程序:
1、首先建立一个内容如下的文件,名字为date,将其存放在目录下的bin子目录中。
#Program date
#usageto ::show the date in this way (注释)
echo "Mr.$USER,Today is:"
echo date "+%B%d%A"
echo "Whish you a lucky day !"
2、编辑完该文件之后它还不能执行,我们需要给它设置可执行权限。使用如下命令:
chmod +x date
通过以上过程之后,我们就可以像使用ls命令一样执行这个shell程序.
[beichen@localhost bin]$ date
Mr.beichen,Today is:
January 13 Friday
Whish you a lucky day ......
setitimer()是比较精准的定时器,是Linux的API
以下代码是个倒计时例子:
#include <signal.h>
#include <sys/time.h>
static int time_count=30;
static void sigalrm_handler(int sig)
{
time_count--;
printf("timer signal.. %d\n", time_count);
}
struct itimerval v; //定时器结构体
time_count=10; //再次初始化
signal(SIGALRM, sigalrm_handler);//绑定信号函数
v.it_value.tv_sec=1;
v.it_value.tv_usec=0;
v.it_interval.tv_sec=1;//间隔1s
v.it_interval.tv_usec=0;
setitimer(ITIMER_REAL,&v,NULL); //结构体关联,start
...
...
//=========结束此定时器=====================
v.it_value.tv_sec=0;
v.it_value.tv_usec=0;
v.it_interval.tv_sec=0;
v.it_interval.tv_usec=0;
setitimer(ITIMER_REAL,&v,NULL);
原理既是 1s发送SIGALRM信号一次,将其值置零即为关闭,不在发送信号 ......
今天晚上实验室的另一个人在编译一个java程序,需要用到一个jar文件,所以在命令行编译的时候需要添加jar的路径,例如:
java -classpath demo.jar hello
但是设置了path之后java就不会搜索当前目录,也就是所如果hello在当前目录的子目录,比如test下面,编译会提示找不到hello,
这时候需要修改为
java -classpath .;demo.jar hello
加上当前目录就可以了。如果在linux下面,将;替换为:作为分隔符。
一个小技巧,为此他请我喝了瓶果汁,呵呵。
参考:http://java.sun.com/docs/books/tutorial/essential/environment/paths.html ......
在完成了驱动程序代码的编写之后,接下来的任务就是编译。linux内核编译的过程是通过内核源码的根目录和各子目录中的Makefile分级管理的。其中根目录的Makefile是最重要的,它可以看成是其他Makefile最初的入口。它负责定义所有与体系结构无关的变量和目标,读取.config文件,并根据其信息最终生成vmlinux(elf格式的Linux内核)和modules(模块)。make通过向下递归调用子目录下的Makefile来编译这两个目标。
通常希望把驱动程序放在内核里,在配置内核时可以自由裁剪。这需要对内核配置脚本Kbuild有一定得了解。具体可以参考内核源码中的Documentation/kbuild目录下的相关文档
Kbuild是一组很容易使用的脚本。通常只需要关心个目录下的两个文件:Kconfig(2.6内核)和Makefile。
以hello模块为例
step1:代码编写
mini2440_hello_module.c 放置的位置/opt/FriendlyARM/mini2440/linux2.6.29/drivers/char
代码如下
/**********************************************************************************************/
/*文件:mini2440_hello_module.c   ......