RSA key长度与加解密时间(耗时)关系

这两天在用openssl库,讨论到RSA、DES效率问题。结论是显而易见的,RSA肯定慢很多。但是慢多少,key长度与加解密所需时间又有怎样的关系呢?加密一般要多长时间呢?相信很多人和我一样困惑,就是rsa key长度与加密、解密需要时间有没有一个大概的关系,而且能在日常编程中能指导应用。

用baidu翻烂了,也没有找到想要的结果。用google中文搜索了下,还是没有想要的结果。那就转换下,用英文搜索”rsa encryption time”,终于得到想要的结果(看来国内的基础研究真的和国外差距很大)。挑着看了前面几篇,总结如下:

1. 关注rsa的加密时间不如关注rsa解密时间,原因如下:

a. 解密时间比加密时间更耗时;

b. 服务器端解密用得最多;

2.国外研究的一个结论:rsa key长度变2倍(double),相应的解密时间会增加6-7倍。

3. 这里给出rsa key长度和解密时间的大概关系:2G 主频奔腾CPU,1024的key长度解密只需25ms(其实挺快哈,应用上应该可以接受的),2048不到200ms,但是4096时超过1s。显然,对比较老的机器来说,这是不可接受的。

4.推荐key长度对应的生命周期如下:

1024 2010年后不要再用;

2048 2030年后不要再用;

3072 2031年后仍可使用…  8)

最后列出所查看的几篇重点英文文章链接,请参考:

1. http://www.javamex.com/tutorials/cryptography/rsa_key_length.shtml

2.http://security.stackexchange.com/questions/1833/encryption-decryption-time

3.http://www.digicert.com/TimeTravel/math.htm

如何用openssl 生成RSA双密匙;签名证书;加密文件邮件

具体看转载:http://blog.csdn.net/jiangsq12345/article/details/6066275

评价:教授写的很好,但是翻译很烂。另外对大文件生成摘要发送给对方这里翻译得不清晰:是发送大文件生成的密码和摘要的签名两个文件?

很实用的另外一篇文章:

利用openssl进行RSA加密解密

转自:http://www.cnblogs.com/aLittleBitCool/archive/2011/09/22/2185418.html

对于 Openssl 软件包的介绍 (转载自百度百科)

Openssl

众多的密码算法、公钥基础设施标准以及SSL协议,或许这些有趣的功能会让你产生实现所有这些算法和标准的想法。果真如此,在对你表示敬佩的同时,还是忍 不住提醒你:这是一个令人望而生畏的过程。这个工作不再是简单的读懂几本密码学专著和协议文档那么简单,而是要理解所有这些算法、标准和协议文档的每一个 细节,并用你可能很熟悉的C语言字符一个一个去实现这些定义和过程。我们不知道你将需要多少时间来完成这项有趣而可怕的工作,但肯定不是一年两年的问题。 继续阅读

tinyxml和minixml,两个XML库有何不同,看了就知道了

XML库方面,我知道的有expatlibxml2tinyxmlminixml

听说expat应用很广,但我没有用过……libxml2这个东东给我的印象是拥肿。

我今天推荐后两者,一个是基于C++编写的tinyxml库,另一个是基于C编写的minixml库。

我自己最常用的是tinyxml,此库用C++进行封象,适度的面向对象,命名很人性化,是一个很不错的选择。但这个库的Makefile没有带编译为动态库的方法,要编译为动态库,只要把Makefile相关行改为:
DEBUG := NO
TINYXML_USE_STL := NO # 个人认为没必要加入STL的支持
RELEASE_CFLAGS := -Wall -Wno-unknown-pragmas -Wno-format -O3 -fPIC
LIBS := -shared -s
OUTPUT := libtinyxml.so
SRCS行去掉xmltest.cpp
然后保存,make即可生成libtinyxml.so,以后只要include自带那两个h头文件即可使用tinyxml库了

另一个推荐的是minixml库,这个库的出现是因为很多时候没必要用libxml2这个拥肿的东西(听说有10万行, minixml才三千多行)。
这个库我暂时还没用过,有时间会试用一下。这个为自带configure,配置、编译都非常方便,而且是纯C的,所以对各种应该都比较合适,CUPS就是使用minixml库的。

两个库都是很轻量级的,tinyxml编译成动态库后不到78K(O3优化),minixml为44K(Os优化),而且都可以用于windows,因为都自带VC工程文件,可以选择合自己口味的,have fun~

转自:http://imlcl.com/?tag=minixml

忘记WordPress后台管理密码怎么找回?

因为前些日子比较忙,很久都没有常来博客,在无意识中WordPress忘记密码了,在网站查过很多改回密码方面的解决办法,自己用过一次感觉不错。应该也有不少的朋友可能和我一样,wp后台管理员密码时常会被忘记,主要是我们需要记住的密码太多了,QQ密码、邮箱密码、银行卡密码、各个网站密码等等,所以忘记自己博客密码应该算是很正常的事。WordPress后台密码忘记怎么办,我们可以通过以后5种方法如何找回:

1、WordPress系统自带邮箱找回密码 难度系数:1 推荐方法 如果你的WordPress博客在安装时设定的电子邮件地址是正确的, 那就根据普通的找回密码步骤, 在Wordpress的登录页点击”忘记密码?” 然后输入用户名或电子邮箱地址. 接着, 你会收到密码重启邮件, 点击里面的重启链接. 稍后你又会收到一封包含用户名和密码的邮件。 WordPress系统自带找回密码 上述方法的优点是比较简单,和我们平时忘记QQ密码一样操作流程一样,并且会比找回QQ密码更简单,但是,有一个缺点就是你可能没有修改admin帐户的电子邮箱或者你网站所在的服务器不支持发送邮件的组件, 你也就无法接收密码。

2、通过执行Mysql数据库语句修改Wordpress密码 难度系数:

3 使用Phpmyadmin之类的工具, 登录你的数据库管理, 执行如下语句: “update user set password=password(”新密码”) where user=’用户名’;” 即可更新你的Wordpress密码。 注意:新密码并非是名文密码,是要写入你MD5加密新密码后字符串。 以上方法难试相对于第一种方法稍微有点大,因为进行MYSQL数据库语句的操作,需要一点的编程开发的基础或常识。 3. 通过PHP文件修改Wordpress密码 难度系数:3 新建一个pwd.php文件,并在其中加入: echo md5(’你的密码’); 上传到主机根目录下,执行http://你的域名/pwd.php,然后连到你的数据库执行. update wp_users set user_pass=’执行pwd.php显示的字符串’ where user_login=’用户名’; OK,现在可以用自己设定的密码进入管理员帐户了。

4、通过 password-resetter 文件找回密码 难度系数:2 推荐方法 下载: password-resetter 使用方法: 将password-resetter.zip解压; 上传password-resetter.php到WordPress根目录 (注意: 这不是WordPress插件! ) 运行http://你的域名/password-resetter.php 在Set admin password:后面输入你要重置的管理员密码!然后点提交查询内容就可以了 记得找回密码后, 删除服务器上的password-resetter.php (不然会被他人利用) Set-Admin-Password 第4点是小落推荐使用的方法,只要你有FTP权重并且会正常使用FTP软件就可以找回密码,也不需要担心因为操作mysql数据库而丢失数据的风险。

5、通过修改MD5值找回Wordpress密码 难度系数:2 WorePress安装后都是自动给出密码的,我一直是自动登陆,所以一个月后居然把密码忘记了。WP使用的是MD5保存密码,所以密码不可逆。想到后台 可以使用数据库,可以通过数据库找回密码,登陆phpmyadmin,然后如图,登陆后第一步是选择数据库.一般虚拟主机都带有phpmyadmin. 修改MD5密码为:”5d41402abc4b2a76b9719d911017c592″ 然后回到WordPress登陆页面,使用密码”hello” 登陆后台后,直接去把密码修改成你自己想要并且你可以记住的密码(不过你过几天还是会忘记的话,你还是可以按上述方法找回wordpress密码的) 比较一下, 如果你的电子邮件设置是正确的, 那当然第1种方法是最方便的。如果你有FTP帐号密码并且会上传删除方件的话, 那第4种方法应该是最安全方便的。如果可以控制数据库, 那第5种方法也是可以试一下。

转自:http://laixueping.com/seo-wzjs/229.html

为什么O’Reilly用动物形象做书籍封面

问题的提出

O’Reilly出品的动物丛书在IT界可谓妇孺皆知,它有很多昵称,如动物世界、饲养员指南等,这些昵称均一定程度上反映了广大读者对该系列丛书的喜爱之情(好吧或者其它什么的各种感情)。没必要多介绍,想必知道动物丛书的人都知道这系列书最显著的特点,就是封皮上会有一只手绘的动物坐镇,基本格式如右图所示(右图有一点不是很标准,一般书的标题会用一个巨大的色块+白色字)。 继续阅读

shell篇之sed

sed用法
       1. 是一个非交互性文本流编辑器。它编辑文件或标准输入导出的文本拷贝。
       2. 通过行号或正则表达式指定要改变的文本行
       3. sed不与初始文件打交道,而只与它的一个拷贝打交道,如果操作结果没有重定向到一个文件,那么将输出到屏幕。 继续阅读

用snprintf取代不安全的sprintf,防止程序挂掉(core)

        这里讲的不安全,是指访问内存越界导致程序挂掉。程序挂掉影响大小要看具体的业务。如果程序挂掉导致业务中断,这就是比较严重的,也是不允许的。如果程序真的挂了,也会有相应的机制应对,比如监控并重启。当然了,如果程序不那么重要,比如一些批跑程序,再次运行即可。
MSVC的_snprintf 与gcc的snprintf(C99)行为不一样!!!  _snprintf在buff结尾有可能没有’\0’,所以跨平台时,还是保留最后一个字节安全(长度20的buff,传给snprintf,只用19)snprintf (或者_snprintf )可以用来只计算长度,如:int c = snprintf(NULL,0,……);asprintf 第一个参数是指向指针的指针,它会在heap中自动申请空间(最后要手动free)。使用asprintf ,要加上 #define     _GNU_SOURCE
转帖:
在 C 語言裡,要建立一個字元陣列的字串,常常會使用 sprintf() 這個函數來做格式化的處理。但是實際上,這個函式卻不是那麼「安全」。怎麼說呢?sprintf() 的整個介面長的樣子的是:int sprintf ( char * str, const char * format, … )也就是在使用前,必須要先建立好一個字元陣列的空間,再用這個函式把內容填入,下面就是簡單的例子:

int tmp = 10;
char cstr[20];
sprintf( cstr, “%d * %d = %d”, tmp, tmp, tmp * tmp );

在 這個例子裡,cstr 最後的值,會是「10 * 10 = 100」,看起來好像很好?但是如果把 tmp 的值改成 10000 的話,cstr 則應該要變成「10000 * 10000 = 100000000」,但是由於這時候的字串所需長度為 26,而要寫入的 cstr 的長度只有 20,所以就會造成 buffer overflow 的問題。

像如果是以 Visual C++ 2006 來編譯的話,如果程式裡有用到 sprintf(),他在編譯時就會顯示一個警告訊息:

warning C4996: ‘sprintf’: This function or variable may be unsafe. Consider using sprintf_s instead.

而要怎麼避免 sprintf 的 buffer overflow 的問題呢?除了微軟建議的 sprintf_s() 外,實際上在 C99 裡, 也多了一個 snprinf() 是用來取代現有的 sprintf() 了~他的介面是:

int snprintf(char *str, size_t size, const char * restrict format, …)

應該可以明顯看得出來,snprinf() 這個函式比 sprintf() 多了一個參數 size;這個參數的用處,就是用來限制最大的寫入資料量,可以用來避免 buffer overflow。以上面的例子來說,本來寫:

int tmp = 10000;
char cstr[20];
sprintf( cstr, “%d * %d = %d”, tmp, tmp, tmp * tmp );

的話,會產生 buffer overflow 的問題。而如果改成用 snprinf() 的話,就是變成:

int tmp = 10000;
char cstr[20];
snprintf( cstr, sizeof( cstr ), “%d * %d = %d”, tmp, tmp, tmp * tmp );

這樣一來,snprinf() 在把資料寫到 cstr 時,最多就只會寫入 20 個字元(cstr 的長度),而不會有 buffer overflow 的問題了~

不過比較討厭的是,MSVC 似乎並沒有直接給這個函式,而是另外給了一個 _snprinf()…雖然功能和參數都大同小異,但是光函式名稱不一樣,就已經增加了些麻煩,更別說在行為模式上也有些不同了。而 _snprinf() 和 snprintf() 主要的差別在於:

_snprintf() (MSVC) snprintf()
回傳值 · 當 len <= size 時,會回傳 len· 當 len > size 時,會回傳負值(-1) · 正常狀況會回傳 len。· 如果有錯誤,回傳負值(-1)
字串內容 · 當 len < size 時,str 會包含結尾的 ‘\0’· 當 len >= size 時,str 不會有結尾的 ‘\0’ · str會包含結尾的 ‘\0’
· len:要輸出的字串應有的長度,不包含結尾的 ‘\0’。· size:snprintf/ _snprintf 的第二個參數,寫到 str 的最大資料量。

所以如果要跨平台,大致上應該可以:

如果是使用 MSVC 的話,自行定義 snprintf,讓它變成 _snprintf
#ifdef _MSC_VER
#define snprintf _snprintf
#endif

實際使用,則就可以直接用 snprintf
int tmp = 10000;
char cstr[20];
int size = sizeof( cstr );
int c = snprintf( cstr, size, “%d * %d = %d”, tmp, tmp, tmp*tmp );
if( c > size || c < 0 )
cstr[ size – 1 ] = ‘\0’;

這樣應該就可以在 g++ 和 MSVC 的環境裡,都可以避免 buffer overflow 和字串結尾沒有 ‘\0’ 的問題了~

但是這樣的做法,實際上是產生一個最大長度為 20 的字串,如果超過的話,雖然不會有 buffer overflow 的問題,但是過長的部分還是要切掉。而如果希望可以針對需要,產生一個夠長的字串的話,其實還可以使用 asprintf() 這個函式。他的用法很簡單,基本上和 sprintf() 很像,只是將第一個參數改成一個 char** 而已;下方就是簡單的範例:

char* cstr;
int c = asprintf( &cstr, “%d * %d = %d”, tmp, tmp, tmp*tmp );

如此一來,他就會自動替 cstr 產生一塊夠大的記憶體空間,來存放字串了~

不過 asprintf() 這個函式應該不在 C 語言的標準內,而是 GNU 的 extension(可能要加上「#define     _GNU_SOURCE」才能使用),所以在 MSVC 裡並沒有提供 asprintf() 可以使用。不過雖然沒有現成的可以用,但是還是可以透過執行兩次 snprintf() 來做到同樣的功能~實作的方法,大致上就是:

char* cstr;
int c = snprintf( NULL, 0, “%d * %d = %d”, tmp, tmp, tmp*tmp );
cstr = new char[ c + 1 ];
snprintf( cstr, c + 1, “%d * %d = %d”, tmp, tmp, tmp*tmp );

做法的主要概念,就是第一次的 _snprintf() 實際上並不真正的將字串寫到某個空間,而是單純用來取得字串所需要的長度,然後再根據需要的長度來產生字元陣列,並將資料寫入。

转自:http://heresy.spaces.live.com/blog/cns!E0070FB8ECF9015F!9703.entry

mysql-bin文件的来源及处理方法

用 ports安装了mysql以后,过一段时间发现/var空间不足了,查一下,会发现是mysql-bin.000001、mysql- bin.000002等文件占用了空间,那么这些文件是干吗的?这是数据库的操作日志,例如UPDATE一个表,或者DELETE一些数据,即使该语句没 有匹配的数据,这个命令也会存储到日志文件中,还包括每个语句执行的时间,也会记录进去的。

这样做主要有以下两个目的:
1:数据恢复
如果你的数据库出问题了,而你之前有过备份,那么可以看日志文件,找出是哪个命令导致你的数据库出问题了,想办法挽回损失。
2:主从服务器之间同步数据
主服务器上所有的操作都在记录日志中,从服务器可以根据该日志来进行,以确保两个同步。

处理方法分两种情况:
1:只有一个mysql服务器,那么可以简单的注释掉这个选项就行了。
vi /etc/my.cnf把里面的log-bin, binlog_format=mixed这两行注释掉,重启mysql服务即可。

理解gcc/g++的编译过程

gcc的编译流程分为了四个步骤,分别为(学过计算机的都知道,不细讲啦)预处理(Pre-Processing),编译(Compiling),汇编(Assembling)和链接(Linking)。

gcc的编译流程及状态流向可以归纳如下(网上转的图示,很生动)

gcc编译过程状态及选项图

gcc编译过程状态及选项图

从中得出几点:
(1) 通过控制gcc的选项,可以得出不同类型的中间文件;
(2) 编译流水为:源文件->汇编文件->目标文件(机器文件)->二进制文件。编译过程不能逆着来,也就是流水只能这样流。假如写了一个汇编文件,也可以流到二进制文件。
(3) gcc用到的处理程序分别是:cpp、ccl、as、ld,也就是说图中的gcc命令可由这些处理程序来进行编译的过程,其结果是一样的。这些命令的使用可参照网上的文章。

下面是一个简单的图示(转账的图片,来源不明)

gcc编译过程

gcc编译过程

不详细理解gcc的编译过程会导致两个问题:
(1) 对编译过程理解含糊,不能熟悉gcc/g++编译的参数和选项;
(2) Makefile不会写,或写不好。
很多人想一天就学好Makefile的熟悉,殊不知对gcc/g++的学习也是基础的一步。另外请看我的另一篇文章–《gcc/g++参数选项》。
先明确几点:
(1) gcc不是一个命令,而是一个工具集,即GNU Compiler Collection(应该没记错哈~);
(2) gcc的-o选项不只是用来重新指定最终的可执行文件名,而是可以指定编译过程中产生的中间文件名称。
接下来先熟悉本文涉及到gcc的几个参数:
-o 定义输出文件
-E 完成预处理/预编译停止
-c 只编译生成.o,不连接

下面就具体来查看一下gcc是如何完成四个步骤的。
首先,有以下hello.c源代码

#include
int main()
{
printf(“Hello World!\n”);
return 0;
}
(1)预处理阶段
在该阶段,编译器将上述代码中的stdio.h编译进来,并且用户可以使用gcc的选项”-E”进行查看,该选项的作用是让gcc在预处理结束后停止编译过程。
gcc -E hello.c -o hello.i
(2)编译阶段
接下来进行的是编译阶段,在这个阶段中,gcc首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,gcc把代码翻译成汇编语言。用户可以使用”-S”选项来进行查看,该选项只进行编译而不进行汇编,生成汇编代码。
gcc -S hello.i -o hello.s
(3)汇编阶段
汇编阶段是把编译阶段生成的”.s”文件转成目标文件,读者在此可使用选项”-c”就可看到汇编代码已转化为”.o”的二进制目标代码了。如下所示:
gcc -c hello.s -o hello.o
(4)链接阶段
在成功编译之后,就进入了链接阶段。在这里涉及库的概念,包括静态库和动态库,请网上查找相关资料熟悉。
完成了链接之后,gcc就可以生成可执行文件,如下所示。
gcc hello.o -o hello

(5)运行该可执行文件
./hello
Hello World!

解决Can’t locate DBI.pm in @INC 问题-RedHat Linux环境-mysql-6.0.9-alpha

[root@localhost sql-bench]# ./test-insert

Can’t locate DBI.pm in @INC (@INC contains: /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl/5.8.7 /usr/lib/perl5/site_perl/5.8.6 /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl/5.8.7 /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.8.8/i386-linux-thread-multi /usr/lib/perl5/5.8.8 .) at ./test-insert line 32.
BEGIN failed–compilation aborted at ./test-insert line 32.
原因:系统没有按安装DBI组件。
       DBI(Database Interface)是perl连接数据库的接口。其是perl连接数据库的最优秀方法,他支持包括Orcal,Sybase,mysql,db2等绝大多数的数据库
       解决办法:安装DBI、Data-ShowTable、DBD-mysql (假设你已安装完perl和mysql数据库)。具体如下:
ftp://ftp.funet.fi/pub/languages/perl/CPAN/modules/by-module下载三个文件DBI-1.601.tar.gz、Data-ShowTable-3.3.tar.gz、DBD-mysql-3.0007_1.tar.gz,分别处于DBI,DATA,BDB目录下。注意下载的DBI的版本不能太低,如之前作者下载过低版本DBI-1.20不能编译通过。下载后最好保存在目录:/usr/local/src下,并解压产生各模块的安装文件目录。如下
[root@localhost src]#tar zxvf DBI-1.601.tar.gz
[root@localhost src]#tar zxvf Data-ShowTable-3.3.tar.gz
[root@localhost src]#tar zxvf DBD-mysql-3.0007_1.tar.gz
安装DBI
[root@localhost src]# cd DBI-1.601
[root@localhost DBI-1.601]# perl Makefile.PL
[root@localhost DBI-1.601]# make
[root@localhost DBI-1.601]# make test
[root@localhost DBI-1.601]# make install
安装Data-ShowTable
[root@localhost src]# cd Data-ShowTable-3.3
[root@localhost Data-ShowTable-3.3]# perl Makefile.PL
[root@localhost Data-ShowTable-3.3]# make  (注:第一次make出错,再make多几次)
[root@localhost Data-ShowTable-3.3]# make install (注:无需make test)
安装DBD-mysql
[root@localhost src]# cd DBD-mysql-3.0007_1
[root@localhost DBD-mysql-3.0007_1]# perl Makefile.PL –libs=”-L/usr/local/mysql-6.0.9-alhpa/lib/mysql -lmysqlclient -lz -lrt -lcrypt -lnsl -lm”  –cflags=” -I/usr/local/mysql-6.0.9-alpha/include/mysql -g -DUNIV_LINUX” –testuser=root –testsocket=/home/cserken/mysql/tmp/mysql.sock
[root@localhost DBD-mysql-3.0007_1]# make
[root@localhost DBD-mysql-3.0007_1]# make test
[root@localhost DBD-mysql-3.0007_1]# make install
安装完毕
注意:make test之前mysql server要启动,并且要知道server的socket。本文在调试模式下启动mysql server,可获取到socket。
[root@localhost src]# cd /usr/local/mysql-6.0.9-alpha (mysql 安装路径)
[root@localhost mysql-6.0.9-alpha]# gdb libexec/mysqld
(gdb) r –user=root
The program being debugged has been started already.
Start it from the beginning? (y or n) y

Starting program: /usr/local/mysql-6.0.9-alpha/libexec/mysqld –user=root
[Thread debugging using libthread_db enabled]
[New Thread -1208408368 (LWP 3545)]
[New Thread -1208411248 (LWP 3546)]
[Thread -1208411248 (LWP 3546) exited]
[New Thread -1235683440 (LWP 3547)]
091012  8:47:30 [Note] Event Scheduler: Loaded 0 events
091012  8:47:30 [Note] /usr/local/mysql-6.0.9-alpha/libexec/mysqld: ready for connections.
Version: ‘6.0.9-alpha-debug-log’  socket: ‘/home/cserken/mysql/tmp/mysql.sock’ (这个就是socket)
另外,在启动测试脚本的时候,需要指定soket路径
[root@localhost sql-bench]# ./test-insert-using-btree-short –socket=’/home/cserken/mysql/tmp/mysql.sock’
Testing server ‘MySQL 6.0.9 alpha debug log’ at 2009-10-12  9:54:04
Testing the speed of inserting data into 1 table and do some selects on it.
The tests are done with a table that has 100000 rows.
Generating random keys
Creating tables
Inserting 100000 rows in order
Inserting 100000 rows in reverse order
Inserting 100000 rows in random order
Time for insert (300000): 180 wallclock secs (11.30 usr  8.12 sys +  0.00 cusr  0.00 csys = 19.42 CPU)

本机配置环境:RHL + Intel(8核) + mysql-6.0.9-alpha。以上过程在本机上配置通过。

Fedora 10下安装Mplayer(添加源和解决错误问题)

今天用sudo yum install mplayer安装提示没有可以用的包,晕倒,我想是因为官方资源问题,于是在百度搜索找到了解决方法



(注意权限问题,如果不是root,要用su命令输入root的密码或者sudo也可以,看到#而不是$符号)
Mplyer
fedora不给大家提供带有版权问题或是封源的软件,这个给我们下载软件带来了许多麻烦,所以在这里提供RPM Fusion源,来补充我们Linux的“软件库”。直接复制到虚拟终端里就好了,必须需要root的权限哦。另外建议直接复制输入,以免打错字。

添加源:

-----------------------------------------------

rpm -ivh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm
rpm -ivh http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm

-----------------------------------------------

如果安装这个源后还是不能正常使用yum,那很可能是由于key引起,解决办法是在终端里输入下面的代码试试:

Linux下的播放器很丰富,听说最好的还是MPlayer,简单的只要要安装好几个包,现在与大家一起学下一种在Fedora 10安装MPlayer的简便方法。

安装步骤如下:

首先确保你的电脑一定要联网 ,因为是在线安装;

其次打开终端,复制以下代码,回车看看吧

yum install mplayer

yum install mplayer-gui

Fedora 10下安装Mplayer(添加源和解决错误问题) - Liao - 混乱的博客

在打开mplayer后,出现错误1(图略),

打开/etc/mplayer/mplayer.conf, 找到fontconfig=yes一行改成fontconfig=no

步骤如下:(用vi)

# vi /etc/mplayer/mplayer.conf

敲击回车键

按字母a(进入输入模式)

找到fontconfig=yes一行改成fontconfig=no

按Esc(键盘左上方退出键或者CTRL+C)

:wq 敲击回车键

或者终端输入 gedit  /etc/mplayer/mplayer.conf , 就可以像记事本一样编辑了

出现如下这样的错误2:(安装字体问题)
“New_Face faild. Maybe the font path is wrong. please supply the text font file. ( ~/.mplayer/subfont.ttf ).”见图(1)。

Fedora 10下安装Mplayer(添加源和解决错误问题) - Liao - 混乱的博客

图1

这种情况我们使用Fedora自带的字体来代替,/usr/share/fonts/zh_CN/TrueType/找其中一个字体文件 zysong.ttf复制到当前用户目录的 .mplayer/ 目录下,这样就能解决了字体问题了

(注意:

[root@localhost ~]# cd /usr/share/fonts/zh_CN/TrueType/

[root@localhost TrueType]# ls   -l (都是一个小写字母L不是数字 1)确认有zysong.tt字体文件

再确认在你的用户目录下有目录.mplayer,方法如下(区别2种用户的检查方法)

—————————————————————————————————————————

(1) 如果你不是root,而是普通用户sky,只是用了su命令转为root权限,那么你的home下面应该有一个你的用户名的目录sky,我们检查以下你的 这个目录下是否有隐藏目录. mplayer,如果有就可以继续,没有?你到底安装了mplayer么?别和我开玩笑了

(1)[root@localhost TrueType]# ls -al /home/sky(sky是我自己的目录)

(2)如果你是root,那么你的/下面应该有一个你的用户名的目录root,我们检查以下你的这个目录下是否有隐藏目录. mplayer,如果有就可以继续,没有?你到底安装了mplayer么?别和我开玩笑了

(2)[root@localhost TrueType]# ls -al /root

——————————————————————————————————————————–

)

普通用户

[root@username TrueType]#cd /home/sky(sky是我自己的目录)

[root@username sky]#cd .mplayer

[root@username .mplayer]#cp  /usr/share/fonts/zh_CN/TrueType/zysong.ttf   subfont.ttf

或者

root用户

[root@username TrueType]#cd /root

[root@username sky]#cd .mplayer

[root@username .mplayer]#cp   /usr/share/fonts/zh_CN/TrueType/zysong.ttf   subfont.ttf

Fedora 10下安装Mplayer(添加源和解决错误问题) - Liao - 混乱的博客

 

如果这样还不行???????????????点击设置(见上图)——再点击字体(Font)标签(见下图),改为/home/sky/.mplayer/zysong.ttf这样就可以了

(sky是我自己的目录)

Fedora 10下安装Mplayer(添加源和解决错误问题) - Liao - 混乱的博客

 

yum中添加其他mplayer源:(或者下载后安装rpm再执行yum安装mplayer命令)

http://ayo.freshrpms.net/fedora/linux/4/i386/RPMS.freshrpms/freshrpms-release-1.1-1.fc.noarch.rpm

再安装

yum install mplayer

yum install mplayer-gui                 (这是安装图形界面)

播放rmvb格式需要安装解码器

http://www.mplayerhq.hu/MPlayer/releases/codecs/
http://rpm4fc-cn.googlecode.com/files/w32codecs-20071007-0.1.i386.rpm
http://www.mplayerhq.hu/MPlayer/releases/codecs/essential-20071007.tar.bz2
http://www.mplayerhq.hu/MPlayer/releases/codecs/windows-essential-20071007.zip

Fedora10下的mplayer使用时出现下面错误

error:could not open required directshow codec drvc.dll

解决方法:

[root@localhost ~]# # find /usr/lib -name drvc*
[root@localhost ~]# find /usr/lib -name drvc*
/usr/lib/codecs/drvc.so
[root@localhost ~]# ldd /usr/lib/codecs/drvc.so
linux-gate.so.1 => (0x00110000)
libstdc++.so.5 => not found
libc.so.6 => /lib/libc.so.6 (0x00162000)
/lib/ld-linux.so.2 (0x004ed000)

[root@localhost ~]# yum install libstdc++.so.5

OK!

还提示这样的话,下载一个dll
http://gd.qiannao.com:8080/servlet/FileDownload?vid=0&vid2=0&filename=//lena/%C9%CF%B4%AB%B7%D6%CF%ED/2009/1/19/drvc.dll

注:
#tar xjvf all-20071007.tar.bz2
# cd all-20071007
# cp * /usr/local/lib/win32/

安装很简单,只要在yumex里搜索mplayer(懒人的办法),然后选择mplayer,gui这些点上就可以了

最主要的就是解码器的安装

我总结了网上的经验(找了无数的网站,都是你抄我,我抄你,结果还是错的),很简单的步骤

首先,

#chmod 777 /usr/lib/codecs/

然后下载all-20071007,windows-all-20071007两个压缩包,并解压

再然后把两个压缩包的文件全部复制到codecs的目录下(网上流传的是把两个目录复制到codecs下)

再然后就搞定了

ERROR:Could not open required DirectShow codec drvc.so.”错误解决

运行:
ldd /usr/lib/codecs/drvc.so
得到

ldd /usr/lib/codecs/drvc.so
linux-gate.so.1 => (0x00110000)
libstdc++.so.5 => not found
libc.so.6 => /lib/libc.so.6 (0x00162000)
/lib/ld-linux.so.2 (0x008ea000)

发现到:libstdc++.so.5 => not found

OK,yum install libstdc++.so.5

在/usr/lib/win32裡找到drvc.so、drv2.so.6.0、drv3.so.6.0、drv4.so.6.0,(如果没有的话,清直接运行下面的shell命令,因为有可能已经在/usr/lib/codecs/目录里面了)
把這四個檔案copy到/usr/lib/codecs資料夾底下,
再到shell分別運行:
1#chcon -t textrel_shlib_t /usr/lib/codecs/drvc.so
2#chcon -t textrel_shlib_t /usr/lib/codecs/drv2.so.6.0
3#chcon -t textrel_shlib_t /usr/lib/codecs/drv3.so.6.0
4#chcon -t textrel_shlib_t /usr/lib/codecs/drv4.so.6.0

9款WordPress视频插件

话说一图胜千言,可我们现在似乎又进入了一个新的高度 — 一视频胜千图。本文为你推荐9款WordPress视频插件。

1、Video Comments

这个wordpress视频插件,不但可以让你在博客里面插入视频文件,而且可以让读者即时地评论该视频。当你点击播放的时候,视频文件是以弹出窗 口的方式显示的,评论同时会显示在视频的右侧。评论的底部有一个“make comment”按钮,单击它,就可以添加评论了。 继续阅读