博客园 - 刘伟_luvi
uuid:24b78886-0ed1-41c2-8670-e3f31dcf42c4;id=92769
2024-01-11T16:13:48Z
刘伟_luvi
https://www.cnblogs.com/luvi/
feed.cnblogs.com
https://www.cnblogs.com/luvi/archive/2009/11/19/1605984.html
C项目错误情况小记 - 刘伟_luvi
* [root@localhost zg.a]# gcc passwd.c modify_passwd.c validate_user.c -I. -o videocollect -DMYDEBUG -Wall -g -lcrypto
* modify_passwd.c: In function `modify_passwd':
* modify_passwd.c:89: error: invalid operands to binary -
* 错误原因:p和pbuf类型不一致。
* 解决方案:
* 1、修改p的定义为: unsigned char *p = NULL;
* 2、修改"p - pbuf"为: p - (char *)pbuf
2009-11-19T04:48:00Z
2009-11-19T04:48:00Z
刘伟_luvi
https://www.cnblogs.com/luvi/
【摘要】 * [root@localhost zg.a]# gcc passwd.c modify_passwd.c validate_user.c -I. -o videocollect -DMYDEBUG -Wall -g -lcrypto
* modify_passwd.c: In function `modify_passwd':
* modify_passwd.c:89: error: invalid operands to binary -
* 错误原因:p和pbuf类型不一致。
* 解决方案:
* 1、修改p的定义为: unsigned char *p = NULL;
* 2、修改"p - pbuf"为: p - (char *)pbuf
<a href="https://www.cnblogs.com/luvi/archive/2009/11/19/1605984.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/luvi/archive/2009/11/18/1605399.html
s3c2440设置从nfs或从board启动 - 刘伟_luvi
(1)使用utu-bootloader:
setenv bootargs 'console=ttySAC0 root=/dev/nfs nfsroot=192.168.0.65:/data/s3c2440_recover ip=192.168.0.168:192.168.0.1:192.168.0.1:255.255.255.0:www.yctek.com:eth0:off'
/* nfsroot对应你pc机的IP和你解压的文件系统的路径,请酌情修改
* ip指定你的开发板的IP、网关、DNS、掩码,(shamefaced)我也不知道是否真这样?
* 高手请赐教!但是只要你改对了IP和掩码,基本就没有问题了。
* 掩码后面应该是域名了,这个是扬创的域名
* 再往后的eth0为什么为off?不懂,but, it do work well!
**************************************************************************/
(2)使用vivi:
param set linux_cmd_line
2009-11-18T07:17:00Z
2009-11-18T07:17:00Z
刘伟_luvi
https://www.cnblogs.com/luvi/
【摘要】(1)使用utu-bootloader:
setenv bootargs 'console=ttySAC0 root=/dev/nfs nfsroot=192.168.0.65:/data/s3c2440_recover ip=192.168.0.168:192.168.0.1:192.168.0.1:255.255.255.0:www.yctek.com:eth0:off'
/* nfsroot对应你pc机的IP和你解压的文件系统的路径,请酌情修改
* ip指定你的开发板的IP、网关、DNS、掩码,(shamefaced)我也不知道是否真这样?
* 高手请赐教!但是只要你改对了IP和掩码,基本就没有问题了。
* 掩码后面应该是域名了,这个是扬创的域名
* 再往后的eth0为什么为off?不懂,but, it do work well!
**************************************************************************/
(2)使用vivi:
param set linux_cmd_line <a href="https://www.cnblogs.com/luvi/archive/2009/11/18/1605399.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/luvi/archive/2009/06/05/1496656.html
Hash Functions for Hash Table Lookup - 刘伟_luvi
Come from: http://burtleburtle.net/bob/hash/evahash.html
This paper presents new hash functions for table lookup using 32-bit or 64-bit arithmetic. These hashes are fast and reliable. A framework is also given for evaluating hash functions.
IntroductionHash tables [Knuth6] are a common data structure. They consist of an array (the hash table) and a mapping (the hash function). The hash function maps keys into hash values. Items stored in a hash table must have keys. The hash function maps t
2009-06-05T01:22:00Z
2009-06-05T01:22:00Z
刘伟_luvi
https://www.cnblogs.com/luvi/
【摘要】Come from: http://burtleburtle.net/bob/hash/evahash.html
This paper presents new hash functions for table lookup using 32-bit or 64-bit arithmetic. These hashes are fast and reliable. A framework is also given for evaluating hash functions.
IntroductionHash tables [Knuth6] are a common data structure. They consist of an array (the hash table) and a mapping (the hash function). The hash function maps keys into hash values. Items stored in a hash table must have keys. The hash function maps t <a href="https://www.cnblogs.com/luvi/archive/2009/06/05/1496656.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/luvi/archive/2008/11/20/1337459.html
自写linux下的简单man帮助文件 - 刘伟_luvi
我们一直在努力!写一个函数的帮助文件,如果只是为了自己方便(不要求严格的格式,自己能看懂就行,别拿出来让别人难以理解)的话,是相当简单的,看一下MAN文件就大致了解了。在/usr/share/man/manX/其中‘X’代表的是数字,也就是MAN的类别。***************************************Linux下最通用的领域及其名称及说明如下:...
2008-11-20T03:39:00Z
2008-11-20T03:39:00Z
刘伟_luvi
https://www.cnblogs.com/luvi/
【摘要】我们一直在努力!写一个函数的帮助文件,如果只是为了自己方便(不要求严格的格式,自己能看懂就行,别拿出来让别人难以理解)的话,是相当简单的,看一下MAN文件就大致了解了。在/usr/share/man/manX/其中‘X’代表的是数字,也就是MAN的类别。***************************************Linux下最通用的领域及其名称及说明如下:... <a href="https://www.cnblogs.com/luvi/archive/2008/11/20/1337459.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/luvi/archive/2008/10/16/1312770.html
错误:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘<’ token - 刘伟_luvi
今天用gcc 编译一个文件出现如下错误:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘<’ token语句都快注释完了,编译还是通不过,最后检查include,才发现,原来是incl...
2008-10-16T08:30:00Z
2008-10-16T08:30:00Z
刘伟_luvi
https://www.cnblogs.com/luvi/
【摘要】今天用gcc 编译一个文件出现如下错误:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘<’ token语句都快注释完了,编译还是通不过,最后检查include,才发现,原来是incl... <a href="https://www.cnblogs.com/luvi/archive/2008/10/16/1312770.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/luvi/archive/2008/10/10/1307843.html
Linux MAN命令 - 刘伟_luvi
1 用户命令, 可由任何人启动的。
2 系统调用, 即由内核提供的函数。
3 例程, 即库函数。
4 设备, 即/dev目录下的特殊文件。
5 文件格式描述, 例如/etc/passwd。
6 游戏, 不用解释啦!
7 杂项, 例如宏命令包、惯例等。
8 系统管理员工具, 只能由root启动。
9 其他(Linux特定的), 用来存放内核例行程序的文档。
2008-10-10T02:54:00Z
2008-10-10T02:54:00Z
刘伟_luvi
https://www.cnblogs.com/luvi/
【摘要】1 用户命令, 可由任何人启动的。
2 系统调用, 即由内核提供的函数。
3 例程, 即库函数。
4 设备, 即/dev目录下的特殊文件。
5 文件格式描述, 例如/etc/passwd。
6 游戏, 不用解释啦!
7 杂项, 例如宏命令包、惯例等。
8 系统管理员工具, 只能由root启动。
9 其他(Linux特定的), 用来存放内核例行程序的文档。
<a href="https://www.cnblogs.com/luvi/archive/2008/10/10/1307843.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/luvi/archive/2008/09/03/1282735.html
C数组测试 - 刘伟_luvi
今天在VC6中测试一下数组的传址方式,发现在main函数中,数组名所指向的地址是与数组中每0个元素的地址相同,但当把数组传给被调函数时,被调函数的形参是以指针的形式接收实参的地址。在下边的程序中,当你第一次运行的时候,看系统分配给array数组的地址是什么,然后更改程序;2:把printf("4:\t1245044==%s\n", 1245044);语句中的后边一个“1245044&#...
2008-09-03T03:08:00Z
2008-09-03T03:08:00Z
刘伟_luvi
https://www.cnblogs.com/luvi/
【摘要】今天在VC6中测试一下数组的传址方式,发现在main函数中,数组名所指向的地址是与数组中每0个元素的地址相同,但当把数组传给被调函数时,被调函数的形参是以指针的形式接收实参的地址。在下边的程序中,当你第一次运行的时候,看系统分配给array数组的地址是什么,然后更改程序;2:把printf("4:\t1245044==%s\n", 1245044);语句中的后边一个“1245044&#... <a href="https://www.cnblogs.com/luvi/archive/2008/09/03/1282735.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/luvi/archive/2008/08/14/1267535.html
在本地计算机无法启动MySQL服务。错误1067:进程意外终止 - 刘伟_luvi
今天卸载了MYSQL,又重新安装了一个新的版本,哪知道在配置时启动MYSQL服务出错:“在本地计算机无法启动MySQL服务。错误1067:进程意外终止”,在网上找了一个小时,修改my.ini,最后还是没有成功。无奈之下,我就把MYSQL安装目录下的配置文件备份为MY.INI.BAK,并删除my.ini,然后从开始菜单重新启动MYSQL配置向导,配置之后MYSQL服务倒是启动...
2008-08-14T01:26:00Z
2008-08-14T01:26:00Z
刘伟_luvi
https://www.cnblogs.com/luvi/
【摘要】今天卸载了MYSQL,又重新安装了一个新的版本,哪知道在配置时启动MYSQL服务出错:“在本地计算机无法启动MySQL服务。错误1067:进程意外终止”,在网上找了一个小时,修改my.ini,最后还是没有成功。无奈之下,我就把MYSQL安装目录下的配置文件备份为MY.INI.BAK,并删除my.ini,然后从开始菜单重新启动MYSQL配置向导,配置之后MYSQL服务倒是启动... <a href="https://www.cnblogs.com/luvi/archive/2008/08/14/1267535.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/luvi/archive/2008/05/23/1206103.html
嵌入式中地址-函数之间的转换 - 刘伟_luvi
经常见到嵌入式设计中,将某一程序段的入口地址转换为一个函数,我们来分析一下它的成分:
如在bootloader的0x00000020地址上的双字单元中有这样一条语句:
@Address is 0x00000020
b powerdown @Jump to the flag "powerdown"
2008-05-23T14:16:00Z
2008-05-23T14:16:00Z
刘伟_luvi
https://www.cnblogs.com/luvi/
【摘要】 经常见到嵌入式设计中,将某一程序段的入口地址转换为一个函数,我们来分析一下它的成分:
如在bootloader的0x00000020地址上的双字单元中有这样一条语句:
@Address is 0x00000020
b powerdown @Jump to the flag "powerdown" <a href="https://www.cnblogs.com/luvi/archive/2008/05/23/1206103.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/luvi/archive/2008/05/21/1204359.html
对C语言中结构体的测试分析 - 刘伟_luvi
今天看到一本书中有与下面这种结构体类似的使用形式:
typedef struct some_dev{
unsigned int var1 : 8;
unsigned int var2 : 13;
}
特意在VC++ 6.0中做了几个测试:
2008-05-21T14:18:00Z
2008-05-21T14:18:00Z
刘伟_luvi
https://www.cnblogs.com/luvi/
【摘要】今天看到一本书中有与下面这种结构体类似的使用形式:
typedef struct some_dev{
unsigned int var1 : 8;
unsigned int var2 : 13;
}
特意在VC++ 6.0中做了几个测试: <a href="https://www.cnblogs.com/luvi/archive/2008/05/21/1204359.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/luvi/archive/2008/05/21/1203973.html
悄悄地,你走了 - 刘伟_luvi
风筝断了线,它可能就飞走了;可虽然线断了,我的心仍没有断,我依然在远方遥望,遥望那随风远去的风筝。你可能会驻足树梢,你可能会留恋他乡,可在你的身上,永远抹不掉的,是我的心在远方对你的思念。在那个无风的下午,随着那阵剧烈的颤抖,不经意间,你悄悄地远去。钱财身外物,你一点都没带,可你带走的,是我幽幽的思绪。窗外的大雨,依然哗哗地下个不停,妄图以它的肆虐洗去我的依恋,可不解风情的它哪里知道,大雨的哗哗不...
2008-05-21T05:10:00Z
2008-05-21T05:10:00Z
刘伟_luvi
https://www.cnblogs.com/luvi/
【摘要】风筝断了线,它可能就飞走了;可虽然线断了,我的心仍没有断,我依然在远方遥望,遥望那随风远去的风筝。你可能会驻足树梢,你可能会留恋他乡,可在你的身上,永远抹不掉的,是我的心在远方对你的思念。在那个无风的下午,随着那阵剧烈的颤抖,不经意间,你悄悄地远去。钱财身外物,你一点都没带,可你带走的,是我幽幽的思绪。窗外的大雨,依然哗哗地下个不停,妄图以它的肆虐洗去我的依恋,可不解风情的它哪里知道,大雨的哗哗不... <a href="https://www.cnblogs.com/luvi/archive/2008/05/21/1203973.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/luvi/archive/2008/05/12/1193374.html
AMBA片上总线 - 刘伟_luvi
随着深亚微米工艺技术日益成熟,集成电路芯片的规模越来越大。数字IC从基于时序驱动的设计方法,发展到基于IP复用的设计方法,并在SOC设计中得到了广泛应用。在基于IP复用的SoC设计中,片上总线设计是最关键的问题。为此,业界出现了很多片上总线标准。其中,由ARM公司推出的AMBA片上总线受到了广大IP开发商和SoC系统集成者的青睐,已成为一种流行的工业标准片上结构。AMBA规范主要包括了AHB(Advanced High performance Bus)系统总线和APB(Advanced Peripheral Bus)外围总线。
2008-05-12T03:47:00Z
2008-05-12T03:47:00Z
刘伟_luvi
https://www.cnblogs.com/luvi/
【摘要】随着深亚微米工艺技术日益成熟,集成电路芯片的规模越来越大。数字IC从基于时序驱动的设计方法,发展到基于IP复用的设计方法,并在SOC设计中得到了广泛应用。在基于IP复用的SoC设计中,片上总线设计是最关键的问题。为此,业界出现了很多片上总线标准。其中,由ARM公司推出的AMBA片上总线受到了广大IP开发商和SoC系统集成者的青睐,已成为一种流行的工业标准片上结构。AMBA规范主要包括了AHB(Advanced High performance Bus)系统总线和APB(Advanced Peripheral Bus)外围总线。
<a href="https://www.cnblogs.com/luvi/archive/2008/05/12/1193374.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/luvi/archive/2008/05/12/1192859.html
Linux系统环境下的Socket编程详细解析 - 刘伟_luvi
来自: http://blog.163.com/jiangh_1982/blog/static/121950520082881457775/ 什么是Socket Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。 S...
2008-05-11T17:39:00Z
2008-05-11T17:39:00Z
刘伟_luvi
https://www.cnblogs.com/luvi/
【摘要】来自: http://blog.163.com/jiangh_1982/blog/static/121950520082881457775/ 什么是Socket Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。 S... <a href="https://www.cnblogs.com/luvi/archive/2008/05/12/1192859.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/luvi/archive/2008/05/11/1192163.html
C语言宏定义技巧(常用宏定义)【转】 - 刘伟_luvi
推荐写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性 等等。下面列举一些成熟软件中常用得宏定义。。。。。。
1,防止一个头文件被重复包含
#ifndef COMDEF_H
#define COMDEF_H
//头文件内容
#endif
2008-05-11T05:42:00Z
2008-05-11T05:42:00Z
刘伟_luvi
https://www.cnblogs.com/luvi/
【摘要】推荐写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性 等等。下面列举一些成熟软件中常用得宏定义。。。。。。
1,防止一个头文件被重复包含
#ifndef COMDEF_H
#define COMDEF_H
//头文件内容
#endif <a href="https://www.cnblogs.com/luvi/archive/2008/05/11/1192163.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/luvi/archive/2008/05/10/1191253.html
s3c2410 MMU详述 - 刘伟_luvi
MMU,全称Memory Manage Unit, 中文名——存储器管理单元。
2008-05-10T06:51:00Z
2008-05-10T06:51:00Z
刘伟_luvi
https://www.cnblogs.com/luvi/
【摘要】MMU,全称Memory Manage Unit, 中文名——存储器管理单元。 <a href="https://www.cnblogs.com/luvi/archive/2008/05/10/1191253.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/luvi/archive/2008/05/09/1190493.html
可重入函数与不可重入函数(转) - 刘伟_luvi
转自:http://www.cppblog.com/franksunny/archive/2007/08/03/29269.html 主要用于多任务环境中,一个可重入的函数简单来说就是可以被中断的函数,也就是说,可以在这个函数执行的任何时刻中断它,转入OS调度下去执行另外一段代码,而返回控制时不会出现什么错误;而不可重入的函数由于使用了一些系统资源,比如全局变量区,中断向量表等,所以它如果被中断的...
2008-05-09T11:36:00Z
2008-05-09T11:36:00Z
刘伟_luvi
https://www.cnblogs.com/luvi/
【摘要】转自:http://www.cppblog.com/franksunny/archive/2007/08/03/29269.html 主要用于多任务环境中,一个可重入的函数简单来说就是可以被中断的函数,也就是说,可以在这个函数执行的任何时刻中断它,转入OS调度下去执行另外一段代码,而返回控制时不会出现什么错误;而不可重入的函数由于使用了一些系统资源,比如全局变量区,中断向量表等,所以它如果被中断的... <a href="https://www.cnblogs.com/luvi/archive/2008/05/09/1190493.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/luvi/archive/2008/05/08/1187340.html
程序的书写规则(程序的编码规范) - 刘伟_luvi
随着软件产品的功能增加和版本的提高,代码越来越复杂,源文件也越来越多,对于软件开发人员来说,除了保证程序运行的正确性和提高代码的运行效率之外,规范风格的编码会对软件的升级、修改、维护带来极大的方便性,也保证程序员不会陷入“代码泥潭”中无法自拔。开发一个成熟的软件产品,除了有详细丰富的开发文档之外,必须在编写代码的时候就有条不紊,细致严谨。
以下的编码规范包含了程序排版、注释、命名、可读性、变量、程序效率、质量保证、代码编译、代码测试和版本控制等注意事项。
2008-05-08T03:52:00Z
2008-05-08T03:52:00Z
刘伟_luvi
https://www.cnblogs.com/luvi/
【摘要】随着软件产品的功能增加和版本的提高,代码越来越复杂,源文件也越来越多,对于软件开发人员来说,除了保证程序运行的正确性和提高代码的运行效率之外,规范风格的编码会对软件的升级、修改、维护带来极大的方便性,也保证程序员不会陷入“代码泥潭”中无法自拔。开发一个成熟的软件产品,除了有详细丰富的开发文档之外,必须在编写代码的时候就有条不紊,细致严谨。
以下的编码规范包含了程序排版、注释、命名、可读性、变量、程序效率、质量保证、代码编译、代码测试和版本控制等注意事项。 <a href="https://www.cnblogs.com/luvi/archive/2008/05/08/1187340.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/luvi/archive/2008/05/07/1187109.html
ARM中C和汇编混合编程及示例 - 刘伟_luvi
C语言中static关键字的常见用法及举例 在嵌入式系统开发中,目前使用的主要编程语言是C和汇编, C++已经有相应的编译器,但是现在使用还是比较少的。在稍大 规模的嵌入式软件中,例如含有OS,大部分的代码都是用C编 写的,主要是因为C语言的结构比较好,便于人的理解,而且有 大量的支持库。尽管如此,很多地方还是要用到汇编语言,例如 开机时硬件系统的初始化,包括CPU状态的设定,中断的使能, 主频的...
2008-05-07T08:50:00Z
2008-05-07T08:50:00Z
刘伟_luvi
https://www.cnblogs.com/luvi/
【摘要】C语言中static关键字的常见用法及举例 在嵌入式系统开发中,目前使用的主要编程语言是C和汇编, C++已经有相应的编译器,但是现在使用还是比较少的。在稍大 规模的嵌入式软件中,例如含有OS,大部分的代码都是用C编 写的,主要是因为C语言的结构比较好,便于人的理解,而且有 大量的支持库。尽管如此,很多地方还是要用到汇编语言,例如 开机时硬件系统的初始化,包括CPU状态的设定,中断的使能, 主频的... <a href="https://www.cnblogs.com/luvi/archive/2008/05/07/1187109.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/luvi/archive/2008/05/03/1180117.html
嵌入式系统 Boot Loader 技术内幕(转) - 刘伟_luvi
本文来自:http://www-128.ibm.com/ developerworks/cn/linux/l-btloader/ 本文详细地介绍了基于嵌入式系统中的 OS 启动加载程序 ―― Boot Loader 的概念、软件设计的主要任务以及结构框架等内容。 1. 引言 在专用的嵌入式板子运行 GNU/Linux 系统已经变得越来越流行。一个嵌入式 Linux 系统从软件的角度看通常可以分为...
2008-05-03T02:29:00Z
2008-05-03T02:29:00Z
刘伟_luvi
https://www.cnblogs.com/luvi/
【摘要】本文来自:http://www-128.ibm.com/ developerworks/cn/linux/l-btloader/ 本文详细地介绍了基于嵌入式系统中的 OS 启动加载程序 ―― Boot Loader 的概念、软件设计的主要任务以及结构框架等内容。 1. 引言 在专用的嵌入式板子运行 GNU/Linux 系统已经变得越来越流行。一个嵌入式 Linux 系统从软件的角度看通常可以分为... <a href="https://www.cnblogs.com/luvi/archive/2008/05/03/1180117.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/luvi/archive/2008/05/02/1179588.html
关于Linux系统下网卡手写配置文件的介绍 - 刘伟_luvi
/etc/sysconfig/network-scripts/ifcfg-interface-name 配置文件ifcfg-interface-name包含了初始化接口所需的大部分详细信息。其中interface-name将根据网卡的类型和排序而不同,一般其名字为eth0、eth1、ppp0等,其中eth表示以太(eth0)类型网卡,0表示第一块网卡,1表示第二块网卡,而ppp0则表示第一个p...
2008-05-02T08:19:00Z
2008-05-02T08:19:00Z
刘伟_luvi
https://www.cnblogs.com/luvi/
【摘要】/etc/sysconfig/network-scripts/ifcfg-interface-name 配置文件ifcfg-interface-name包含了初始化接口所需的大部分详细信息。其中interface-name将根据网卡的类型和排序而不同,一般其名字为eth0、eth1、ppp0等,其中eth表示以太(eth0)类型网卡,0表示第一块网卡,1表示第二块网卡,而ppp0则表示第一个p... <a href="https://www.cnblogs.com/luvi/archive/2008/05/02/1179588.html" target="_blank">阅读全文</a>