Press "Enter" to skip to content

月度归档: 2011 年 11 月

linux 统计当前目录下文件数

查看当前目录下文件的个数

ls -l | grep "^-" | wc -l

  查看当前目录下文件的个数,包括子目录里的。

  ls -lR| grep "^-" | wc -l

  查看某目录下文件夹(目录)的个数,包括子目录里的。

  ls -lR| grep "^d" | wc -l

  简要说明:

 ls -l
  长列表输出该目录下文件信息(注意这里的文件,不同于一般的文件,可能是目录、链接、设备文件等)
  grep “^-”
  这里将长列表输出信息过滤一部分,只保留一般文件,如果只保留目录就是 ^d
  wc -l
  统计输出信息的行数,因为已经过滤得只剩一般文件了,所以统计结果就是一般文件信息的行数,又由于一行信息对应一个文件,所以也就是文件的个数

Leave a Comment

Linux各类压宿包的解压方法

01-.tar格式

解包:[root@kiccleaf ~]# tar xvf FileName.tar
打包:[root@kiccleaf ~]# tar cvf FileName.tar DirName(注:tar是打包,不是压缩!)

02-.gz格式

解压1:[root@kiccleaf ~]# gunzip FileName.gz
解压2:[root@kiccleaf ~]# gzip -d FileName.gz
压 缩:[root@kiccleaf ~]# gzip FileName

03-.tar.gz格式

解压:[root@kiccleaf ~]# tar zxvf FileName.tar.gz
压缩:[root@kiccleaf ~]# tar zcvf FileName.tar.gz DirName

04-.bz2格式

解压1:[root@kiccleaf ~]# bzip2 -d FileName.bz2
解压2:[root@kiccleaf ~]# bunzip2 FileName.bz2
压 缩: [root@kiccleaf ~]# bzip2 -z FileName

05-.tar.bz2格式

解压:[root@kiccleaf ~]# tar jxvf FileName.tar.bz2
压缩:[root@kiccleaf ~]# tar jcvf FileName.tar.bz2 DirName

06-.bz格式

解压1:[root@kiccleaf ~]# bzip2 -d FileName.bz
解压2:[root@kiccleaf ~]# bunzip2 FileName.bz

07-.tar.bz格式

解压:[root@kiccleaf ~]# tar jxvf FileName.tar.bz

08-.Z格式

解压:[root@kiccleaf ~]# uncompress FileName.Z
压缩:[root@kiccleaf ~]# compress FileName

09-.tar.Z格式

解压:[root@kiccleaf ~]# tar Zxvf FileName.tar.Z
压缩:[root@kiccleaf ~]# tar Zcvf FileName.tar.Z DirName

10-.tgz格式

解压:[root@kiccleaf ~]# tar zxvf FileName.tgz

11-.tar.tgz格式

解压:[root@kiccleaf ~]# tar zxvf FileName.tar.tgz
压缩:[root@kiccleaf ~]# tar zcvf FileName.tar.tgz FileName

12-.zip格式

解压:[root@kiccleaf ~]# unzip FileName.zip
压缩:[root@kiccleaf ~]# zip FileName.zip DirName

13-.lha格式

解压:[root@kiccleaf ~]# lha -e FileName.lha
压缩:[root@kiccleaf ~]# lha -a FileName.lha FileName

14-.rar格式

解压:[root@kiccleaf ~]# rar a FileName.rar
压缩:[root@kiccleaf ~]# rar e FileName.rar

rar请到:http://www.rarsoft.com/download.htm 下载!
解压后请将rar_static拷贝到/usr/bin目录(其他由$PATH环境变量指定的目录也行):

[root@kiccleaf ~]# cp rar_static /usr/bin/rar

Leave a Comment

FreeBSD 8.0下用户命令自动补全[原创]

如果以上配置不能成功,那么可以添加一个新用户如 leaf 用户名

leaf# adduser       #添加命令
Username: leaf      #添加用户leaf
Full name:          #默认为空,回车
Uid (Leave empty for default):     #默认为空,回车
Login group [leaf]: wheel    #填写wheel 组
Login group is wheel. Invite leaf into other groups? []: wheel  #填写wheel 组
Login class [default]:   #默认为空,回车
Shell (sh csh tcsh bash rbash nologin) [sh]: csh     #这里要选择填写 csh 回车
Home directory [/home/leaf]:  #默认为空,回车
Home directory permissions (Leave empty for default):  #默认为空,回车
Use password-based authentication? [yes]: #默认为空,回车
Use an empty password? (yes/no) [no]:    #默认为空,回车
Use a random password? (yes/no) [no]: no 屡#输入no,回车
Enter password:             #输入密码
Enter password again:       #重复输入密码
Lock out the account after creation? [no]:   #默认为空,回车
Username   : leaf
Password   : <blank>
Full Name  :
Uid        : 1009
Class      :
Groups     : wheel wheel
Home       : /home/leaf
Home Mode  :
Shell      : /bin/csh
Locked     : no
OK? (yes/no): yes   #输入yes 结束,回车
adduser: INFO: Successfully added (leaf) to the user database.
Add another user? (yes/no): no  #选择不再添加用户,回车
Goodbye!

好了经过以上添加配置,登陆的用户就可以自动使用命令补全功能了!!!

需要删除用户可执行
rmuser <用户名>

如:

leaf# rmuser leaf    #删除leaf用户操作
Matching password entry:
leaf:*:1001:0::0:0:User &:/home/leaf:/bin/sh
Is this the entry you wish to remove? yes    #输入 yes ,回车
Remove user's home directory (/home/leaf)? yes  #输入 yes ,回车
Removing user (leaf): mailspool home passwd.
Leave a Comment

FreeBSD 8.0下webbench压力测试软件

FreeBSD 8.0下webbench压力测试软件,对于网站开发完成后做某个页面的性能压力测试是一款比较不错的软件。
1.下载软件
webbench-1.5.tar
2.下载后进行解压工作

leaf# tar -zxvf webbench-1.5.tar.gz
leaf# cd webbench-1.5
kiccleaf# make install
cc -O2 -pipe  -c webbench.c
cc -O2 -pipe   -o webbench webbench.o
install -s webbench /usr/local/bin
install -m 644 webbench.1 /usr/local/man/man1
install -d /usr/local/share/doc/webbench
install -m 644 debian/copyright /usr/local/share/doc/webbench
install -m 644 debian/changelog /usr/local/share/doc/webbench
kiccleaf# rehash

3、使用:参数说明:-c表示并发数,-t表示持续时间(秒) <网址/文件名>

leaf# webbench -c 1000 -t 30 http://192.168.1.10/index.php
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.
Benchmarking: GET http://192.168.1.10/index.php
1000 clients, running 30 sec.
Speed=38058602 pages/min, 23930171 bytes/sec.
Requests: 27676 susceed, 19001625 failed.
Leave a Comment

FreeBSD 8.0下Mysql5.5创建数据库及所属用户

创建数据库名为kiccleaf

CREATE DATABASE `kiccleaf` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

创建用户并赋予相应数据库权限,创建用户名kiccleaf

CREATE USER ‘kiccleaf’@’%’ IDENTIFIED BY ‘***’;

GRANT USAGE ON * . * TO ‘kiccleaf’@’%’ IDENTIFIED BY ‘***’ WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

添加数据库kiccleaf所属管理用户kiccleaf

GRANT ALL PRIVILEGES ON `kiccleaf` . * TO ‘kiccleaf’@’%’;

如果有必要可以编辑权限

REVOKE ALL PRIVILEGES ON `kiccleaf` . * FROM ‘kiccleaf’@’%’;

GRANT ALL PRIVILEGES ON `kiccleaf` . * TO ‘kiccleaf’@’%’;

Leave a Comment

HTC G7体验总结及取消屏锁操作

对于G7这款手机体验近一年的总结

不足的地方有:

1.自带的使用容量不足,每次提示空间不足不能安装软件,但外带的容量有8G
2.屏幕在打电话时靠近脸就会变黑,然后要等很久才恢复,听说是感应器坏了,那怎么脸一贴近就能感应呢?
3.开启无线或是玩个游戏,电池支持不了多久,基本几小时玩游戏或是无线开着一天就没有电了。
4.经常出现一些软件假死,或是无响应。

由于每次操作都比较麻烦,所以直接取消操作。但发现第一次操作时,根本不知道怎么取消,所以研究了一下,提供以下方法与大家分享!

“设置”–“安全”里边,看“设置屏幕锁定”,先输入密码或者手势图案,然后看到一个菜单“无 (停用屏幕解锁保护)”就可以设置取消了。


点击-更改屏幕锁定


输入原来设定的图片密码


点停用屏幕解锁保护


恢复到原来状态

Leave a Comment

C语言获取汉字拼音首字母

在网络上找了一份C语言获取汉字拼音首字母的源程序,先保存一下。这里用了glib里面的一个函数g_convert。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <glib.h>
  
gchar getpychar(guchar uword0 , guchar uword1)
{
    gchar pychar;
  
    int i1 = (short)(uword0 - '\0');
    int i2 = (short)(uword1 - '\0');
  
    int tmp = i1 * 256 + i2;
  
    if(tmp >= 45217 && tmp <= 45252) pychar = 'A'; 
    else if(tmp >= 45253 && tmp <= 45760) pychar = 'B'; 
    else if(tmp >= 45761 && tmp <= 46317) pychar = 'C'; 
    else if(tmp >= 46318 && tmp <= 46825) pychar = 'D'; 
    else if(tmp >= 46826 && tmp <= 47009) pychar = 'E'; 
    else if(tmp >= 47010 && tmp <= 47296) pychar = 'F'; 
    else if(tmp >= 47297 && tmp <= 47613) pychar = 'G'; 
    else if(tmp >= 47614 && tmp <= 48118) pychar = 'H'; 
    else if(tmp >= 48119 && tmp <= 49061) pychar = 'J'; 
    else if(tmp >= 49062 && tmp <= 49323) pychar = 'K'; 
    else if(tmp >= 49324 && tmp <= 49895) pychar = 'L'; 
    else if(tmp >= 49896 && tmp <= 50370) pychar = 'M'; 
    else if(tmp >= 50371 && tmp <= 50613) pychar = 'N'; 
    else if(tmp >= 50614 && tmp <= 50621) pychar = 'O'; 
    else if(tmp >= 50622 && tmp <= 50905) pychar = 'P'; 
    else if(tmp >= 50906 && tmp <= 51386) pychar = 'Q'; 
    else if(tmp >= 51387 && tmp <= 51445) pychar = 'R'; 
    else if(tmp >= 51446 && tmp <= 52217) pychar = 'S'; 
    else if(tmp >= 52218 && tmp <= 52697) pychar = 'T'; 
    else if(tmp >= 52698 && tmp <= 52979) pychar = 'W'; 
    else if(tmp >= 52980 && tmp <= 53640) pychar = 'X'; 
    else if(tmp >= 53689 && tmp <= 54480) pychar = 'Y'; 
    else if(tmp >= 54481 && tmp <= 55289) pychar = 'Z'; 
    else pychar = ' ';
  
    return pychar;
}
  
gchar *getpystring(const gchar *in)
{
    gsize inlen , olen , i , j = 0;
    gchar *gword = g_convert(in , strlen(in)
            , "gb2312" , "utf8" , &inlen , &olen , NULL);
  
    guchar *uword = (guchar*)gword;
    gchar *out = (gchar*)malloc(olen);
  
    memset(out , 0 , olen);
  
    for(i = 0 ; i < olen ; i++){
        if(uword[i] >= 0xa1){
            if(uword[i] != 0xa3){
                out[j++] = getpychar(uword[i] , uword[i + 1]);
                i ++;
            }
        }else{
            out[j++] = (gchar)uword[i];
        }
    }
  
    return out;
  
}
  
int main(int argc , char **argv)
{
    printf("%s\n" , getpystring("linux是一个出色的操作系统"));
    return 0;
  
}

程序输出:linuxSYGCSDCZXT

Leave a Comment

.net程序出现没有对Temporary ASP.NET Files”的写访问权限解决方法

环境:Windows Server 2008 R2 (win2003也存在此问题)
问题:.net程序打开出现没有对Temporary ASP.NET Files”的写访问权限解决方法

错误信息:

“/”应用程序中的服务器错误。当前标识(KICCLEAF\web_users)没有对“C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files”的写访问权限。说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Web.HttpException: 当前标识(KICCLEAF\web_users)没有对“C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files”的写访问权限。

源错误:

执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。

堆栈跟踪:

[HttpException (0x80004005): 当前标识(KICCLEAF\web_users)没有对“C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files”的写访问权限。] System.Web.HttpRuntime.SetUpCodegenDirectory(CompilationSection compilationSection) +8926638 System.Web.HttpRuntime.HostingInit(HostingEnvironmentFlags hostingFlags) +152[HttpException (0x80004005): 当前标识(WIN-BF8OCSIBG16\adi_yindaopan_com)没有对“C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files”的写访问权限。] System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +8897659 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +85 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +333

版本信息: Microsoft .NET Framework 版本:2.0.50727.4927; ASP.NET 版本:2.0.50727.4927

x64配置路径:
如果没有安装net4.0的不需要配置此目录

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files

x32配置路径:
如果没有安装net4.0的不需要配置此目录

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files
C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files

配置截图:
右击文件夹“属性”–选择“安全”选项

点击编辑后再点击“添加”

“高级”–“立即查找”



Leave a Comment

Ubuntu 64-bit 11-10版本安装截图-强大的Linux系统

Ubuntu 64-bit 11-10版本安装截图,看样子他们在界面方面和功能方面下了很大的努力。感觉真的不错,未来我也将系统全换掉。
1.系统开启画面

2.登陆界面挻漂亮的

3.打开火狐访问网址

4.多界面效果真不错

5.系统设置和苹果有点像

6.比较强大的软件安装功能和界面展示

7.最最强大的私有云,可以免费注册得到5G的云空间

8.主文件夹,日常放置文件的集散地

9.Linux下的PPT功能

10.较强大的首页功能和软件

11.漂亮的界面与背景

12.更换背景配置,效果直接预览

13.换好后的背景图,很漂亮

14.系统自动找到需要更新的软件及补丁

15.更新中的界面

2 Comments

一个校验身份证号码合法性的C程序

一个校验身份证号码合法性的C程序,收藏一下。

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <time.h>
 
int IsDigitBuf(char *sBuf, int nLen)
{
    int    i;
 
    if (nLen == 0) return 1;
    if (nLen > strlen(sBuf)) nLen = strlen(sBuf);
 
    for (i = 0; i < nLen; i++)
        if (!isdigit(sBuf[i])) return 0;
 
    return 1;
}
 
int checkdate(int iYear, int iMonth, int iDay)
{
    if (iYear < 0 || iYear > 9999)
    return -1;
    switch (iMonth)
    {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
        if (iDay <= 0 || iDay > 31)
        {
            return -3;
        }
        break;
    case 4:
    case 6:
    case 9:
    case 11:
        if (iDay <= 0 || iDay > 30)
        {
            return -3;
        }
        break;
    case 2:
        if ((iYear % 4 == 0 && iYear % 100 != 0) || iYear % 400 == 0)
        {
            if (iDay <= 0 || iDay > 29)
            {
                return -3;
            }
        }
        else
        {
            if (iDay <= 0 || iDay > 28)
            {
                return -3;
            }
        }
        break;
    default:
        return -2;
    }
    return 0;
}
 
int CheckStrDate(char *sDate)
{
    int iRet;
 
    char sYear[5];
    char sMonth[3];
    char sDay[3];
 
    memset(sYear,  0, sizeof(sYear));
    memset(sMonth, 0, sizeof(sMonth));
    memset(sDay,   0, sizeof(sDay));
 
    if (strlen(sDate) != 8 )
    {
        return -1;
    }
 
    memcpy(sYear,  sDate, 4);
    memcpy(sMonth, sDate+4, 2);
    memcpy(sDay,   sDate+6, 2);
 
    iRet = checkdate(atoi(sYear), atoi(sMonth), atoi(sDay));
    if (iRet != 0)
    {
        return -1;
    }
 
    return 0;
}
 
 
int main(int argc, char *argv[])
{
    int    i;
    int    iRet;
    int    iWeight[18] = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1};
    char   cCheck[11] = {'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'};
    char   sIdCardNo[20];
    char   sDate[8 + 1];
    int    iDate;
    int    Sum = 0;
 
    if (argc < 2) {
        printf("FAIL\n");
        exit(1);
    }
 
    memset(sIdCardNo, 0, 20);
    memcpy(sIdCardNo, argv[1], 18);
    if ((strlen(sIdCardNo) == 15) && ((iRet = IsDigitBuf(sIdCardNo, 15)) > 0)) {
        printf("OK\n");
        exit(0);
    } else if (strlen(sIdCardNo) != 18) {
        printf("FAIL\n");
        exit(1);
    }
 
    /* 身份证7-14位是否有效 */
    memset(sDate, 0, sizeof(sDate));
    memcpy(sDate, sIdCardNo + 6, 4);
    iDate = atoi(sDate);
    if (iDate < 1900 || iDate > 2020) {
        printf("FAIL\n");
        exit(1);
    }
    memset(sDate, 0, sizeof(sDate));
    memcpy(sDate, sIdCardNo + 6, 8);
    iRet = CheckStrDate(sDate);
    if (iRet < 0) {
        printf("FAIL\n");
        exit(1);
    }
 
    /* 身份证18位校验位是否有效 */
    for (i = 0; i < 17; i ++) {
        memset(sDate, 0, sizeof(sDate));
        sDate[0] = sIdCardNo[i];
        iDate = atoi(sDate);
        Sum += iWeight[i] * iDate;
    }
    Sum %= 11;
    if ('x' == sIdCardNo[17]) {
        sIdCardNo[17] = 'X';
    }
    if (cCheck[Sum] != sIdCardNo[17]) {
        printf("FAIL\n");
        exit(1);
    }
 
    printf("OK\n");
    exit(0);
}
Leave a Comment