Skynet

---------- ---------- 我的新 blog : liukaiyi.cublog.cn ---------- ----------

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  112 Posts :: 1 Stories :: 49 Comments :: 0 Trackbacks

#


1.windows cygwin 版本 
  find . -type d|
   
du |
    
gawk '{if($1=="0"){print $2}}' |     #我这使用 cygwin判断 $1==0  ,如果使用 linux 那就 $1=="4"
       sort 
-ru |
         gawk '{system(
"rmdir "$0)}'

2.linux  版本(其实,这个太不严谨!)
find . -type d|
    du 
-|
     gawk 
'{if($1=="4"){print $2}}' |   
       
sort -ru |
         gawk 
'{system("rmdir "$0)}'

3.shell + python
查找 文件夹大小py,参考:获取文件夹大小的python代码
#!/bin/python
import os,sys
from os.path import join, getsize

def getdirsize(dir):
        size 
= 0L;
        
for root, dirs, files in os.walk(dir):
               
size += sum([ getdirsize(join(root,dname)) for dname in dirs ]);
                size += sum([getsize(join(root, name)) for name in files]);
                
return size;

dir_path
=sys.argv[1];
filesize 
= getdirsize(dir_path);
print dir_path,"\t",filesize ;

shell
find . -type d -exec python getDirSize.py {} \;|
sort
 -ru |
gawk 
'{if($2=="0"){print $1}}' |
gawk 
'{system(" rmdir "$0)}'





find . -type d #查找文件夹
du  #文件夹大小
gawk '{if($1=="0"){print $2}}' #文件夹为 0 输出
sort -ru #为删除准备( 比如 文件夹 ./t1 空 ./t1/t11 空 。排序为 先 ./t1/t11 后 ./t1 。这删除就不会错  )
gawk '{system("rmdir "$0)}' #野蛮的删除







其他:
结合sort -u  可以找出最小或最大 几个文件

#!python
#
 python this.py /home/xj_liukaiyi/imusic/ ".*128kbps\/.*\.mp3"
import os,sys,re
from os.path import join, getsize

def getdirsize(dir,refile):
    
for root, dirs, files in os.walk(dir):
    
for dname in dirs :
        getdirsize(join(root,dname),refile)
        
for name in files :
            ffname
=join(root,name)
            
if re.search(refile,ffname):
                
print "%09d\t%s" % (getsize(ffname),ffname)

dir_path
=sys.argv[1];
file_re
=sys.argv[2];

filesize 
= getdirsize(dir_path,file_re);


posted @ 2009-03-18 15:03 刘凯毅 阅读(3646) | 评论 (2)编辑 收藏

比如 日志,和shell运行
#!/bin/perl -w
use Time::Local;

my $log_input_file="~/log";
sub set_log_input_file{
  
$log_input_file=$_[0];
}


#&perl_log("tt","/home/xj_liukaiyi/log");
sub perl_log{
  
my $log_msg=shift @_;
  
print $log_msg,"\n";
  
system 'ttmp1=$(date +%Y-%k-%d);ttmp2=$(date +%M:%S);echo "$ttmp1 $ttmp2:'."$log_msg".'" >>'.$log_input_file;
}

#&system_util("xls -l","~/log");
sub system_util{
  
my $comm=shift @_;
  
my @return=system $comm;
  
if ( $return[(@return-1)] == 0 ) { 
     
&perl_log("[success]".$comm,$log_input_file);
  }
else{
     
&perl_log("[error]".$comm,$log_input_file);
  }
  
return $return[(@return-1)];
}

1;

excel 读取util 
require("/home/xj_liukaiyi/src/perl/excel/excelUtil.pl");&parse_excel("2w.xls","歌曲列表","&read_wlh);
#!/bin/perl -w
use Spreadsheet::ParseExcel;
use Spreadsheet::ParseExcel::FmtUnicode; 
use Encode;
use Unicode::Map();
my $Map = new Unicode::Map("GB2312");


my $excelCODE='gb2312';
my $coslCODE='utf8';

my %parseCache ;
my %writeCache ;

my $oFmtJ = Spreadsheet::ParseExcel::FmtUnicode->new(Unicode_Map =>$excelCODE); 
my $oExcel = new Spreadsheet::ParseExcel;



#
#&parse_excel("all4.xls","乐扑","&read_lp); 
# sub read_lp{  $_[1 .. 2.3  ] }
sub parse_excel{
 
my $sExcelName=shift;
 
my $sSheetName=shift;
 
my $action_fun=shift;
 
 
my($iR, $iC, $oWkS,$oWkC);
 
#开启 excel
 my $oBook = $oExcel->Parse($sExcelName,$oFmtJ);
 
#根据 sheet 名称匹配 
 for(my $iSheet=0$iSheet < $oBook->{SheetCount} ; $iSheet++){
    
my $t_oWkS = $oBook->{Worksheet}[$iSheet];
    
my $sWkSName=encode($coslCODE,decode($excelCODE,$t_oWkS->{Name} ));
    
if($sWkSName=~/$sSheetName/){
      
$oWkS=$t_oWkS;
      
last;
   }
 }


 
for(my $iR = $oWkS->{MinRow} ;
     
defined $oWkS->{MaxRow} && $iR <= $oWkS->{MaxRow} ;
     
$iR++){
     
my @arr_row;
     
for(my $iC = $oWkS->{MinCol} ;
         
defined $oWkS->{MaxCol} && $iC <= $oWkS->{MaxCol} ;
         
$iC++){
       
$oWkC=$oWkS->{Cells}[$iR][$iC];
       
my $col_value="";
           
$col_value=encode($coslCODE,decode($excelCODE,$oWkC->Value) ) if ($oWkC) ;
           
push(@arr_row,$col_value);
         }
      
push(@arr_row,$iR);
     
$action_fun->(@arr_row);
    }
}

#使用 demo
find . -maxdepth 1 -name "*xls" -exec perl -'
require("/home/xj_liukaiyi/src/perl/excel/excelUtil.pl");
my $file=$ARGV[0];
sub myRead{
  my $str="";
  foreach$tmp(@_){
    $str+"$tmp\t";
  }
  system "echo $str >> $file.data";
}
&parse_excel("$file",0,\&myRead);
print "$file\n";
' {} \;



posted @ 2009-03-17 13:49 刘凯毅 阅读(1413) | 评论 (1)编辑 收藏


/usr/bin/convmv -r -f UTF-8 -t GBK --notest --lowmem  .
posted @ 2009-03-15 15:41 刘凯毅 阅读(204) | 评论 (0)编辑 收藏


文件属性查看:
file test.mp3
>>test.mp3: MP3, 128 kBits, 44.1 kHz, JStereo

ffmpeg -i test.mp3
>>Input #0, mp3, from 'test.mp3':
  Duration: 00:04:31.26, start: 0.000000, bitrate: 128 kb/s
    Stream #0.0: Audio: mp3, 44100 Hz, stereo, s16, 128 kb/s
At least one output file must be specified



lame :linux 其他格式转 mp3 工具 ;
位数 --abr 16/8/4
声道 -m s/m
采样率 --resample 16/44.1..
码率/比特率 -b 128/64
 lame --resample 16 --abr 16  -m s -b 128 test.mp3  07_128.mp3


ffmpeg : linux 视频音频处理
*位数
采样率 -ar
声道 -ac 1/2
码率/比特率 -ab 32/218  <acc>
  ffmpeg -i test.mp3 -ar 44100  -ac 2 -ab 32  18_32.aac



<wav>
  ffmpeg -i test.mp3 -ar 22050  -ac 1 -ab 32  _32.wav


<wma>
  ffmpeg -y  -i test.mp3 -acodec wmav2  -ar 44100  -ac 2 -ab 32000 24.wma

sox : linux 开源音频转换(只支持开源格式).
<vox_2>
  ffmpeg -y  -i test.mp3 -acodec pcm_alaw  -ar 4000  -ac 1 -ab 32000  22_tmp.wav
  sox 22_tmp.wav -r 8000  22.vox


posted @ 2009-03-14 12:05 刘凯毅 阅读(1535) | 评论 (0)编辑 收藏


cvs -> root project

到需要挂载到 eclipes的目录下
1.dos>mvn eclipes:eclipes
2.dos>mvn package
3.eclipes>  import > General .. > Existing projectint .... > (所需要 子工程)





posted @ 2009-03-12 11:45 刘凯毅 阅读(270) | 评论 (0)编辑 收藏



工具小脚本
#!/bin/perl
use File::Find;
use Log::FileSimple;

#use strict;
#use warnings;

# 说明: 
#     遍历出 "/cygdrive/c/Documents and Settings/Administrator/"  
#       满足 "^.*\.txt$" 添加文件
#         并运行 "ls -l $fileAllName " 
#    运行日志 ./log
#
# perl this.pl  
#     "ls -l $fileAllName " 
#     "/cygdrive/c/Documents and Settings/Administrator/"  
#     "^.*\.txt$"
#     ./log
#
# run_comm 参数1 替换说明:
#     $filePath  为输入参数2,遍历根目录 "/cygdrive/c/Documents and Settings/Administrator/"  
#    $fileAllName 为当前遍历,满足正则条件的 全路径+文件名
#    $logicFileAllName  为当前遍历,满足正则条件的 逻辑路径+文件名
#    $logicFilePath 为当前遍历,逻辑路径
#    $logicFileName 文件名称
#    $logicFileExp  文件后缀  
#        (test.txt 文件  
#            $logicFileName 为 test 
#            $logicFileExp 为 txt
#            )


my $run_comm=$ARGV[0];
my $file_path=$ARGV[1];
my $file_find_rex=$ARGV[2];
my $logfile=$ARGV[3];


my $log = new Log::FileSimple(name=> 'Log::FileSimple logs',
                              file      
=> "$logfile",
                              mask      
=> -1,
                              autoflush 
=> 0,
                              );

sub fileThumb{
 
eval{
  
$_tmp_run_comm=$run_comm ;
  
if/$file_find_rex/ ){
    
$fileNum++;
    
$_tmp_run_comm=~s/\$filePath/$file_path/g;
    
    
my $_file_all_name=$File::Find::name;
    
$_tmp_run_comm=~s/\$fileAllName/$_file_all_name/g;
    
my $_logic_file_all_name=$_file_all_name;
          
$_logic_file_all_name=~s/$file_path//g;
        
$_logic_file_all_name=~s/^\s*\.//g;
    
$_tmp_run_comm=~s/\$logicFileAllName/\.\/$_logic_file_all_name/g;
    
if($_logic_file_all_name=~/^(.*)\/([^\/]*)\.([^\.]*)$/){
      
my $_logic_file_path=$1;
      
my $_logic_file_name=$2;
      
my $_logic_file_exp=$3;
      
$_tmp_run_comm=~s/\$logicFilePath/\.\/$_logic_file_path/g;
      
$_tmp_run_comm=~s/\$logicFileName/$_logic_file_name/g;
      
$_tmp_run_comm=~s/\$logicFileExp/$_logic_file_exp/g;
      }
    
#print $_tmp_run_comm,"\n";
    my @return=eval{system("$_tmp_run_comm 2>&1 \|echo \$\? ")};
    
if ( $return[(@return-1)] != 0 ) { 
      
$log->log(message=>"success($fileNum):$_file_all_name");
       }
else{
      
$log->log(message=>"error($fileNum):$_file_all_name");
        }
  }
 }
}


find(
\&fileThumb,$file_path);

posted @ 2009-03-02 17:51 刘凯毅 阅读(1223) | 评论 (0)编辑 收藏


可能最简单的 soap 哦!
服务器为 java tomcat
下载服务器:http://www.apache.org/dist/ws/
   axis/ 为java
   axis-c/    为 c

1.我这下载的 axis 1_4 版本 ,解压 /webapps/axis  放到 tomcat 的webapps
启动tomcat(这就不修改任何,如有需要 该 web.xml 等配置了) 参考 >>
    blog 主 还有很多介绍 axis 大家可以 看看  日志 > 其下的 "学习"

直接写个文件 HelloWorld.jws 放到 %TOMCAT_HOME%"webapps"axis
public class HelloWorld {   
     
public String sayHello()   {   
     
return "HELLO soap!";    
 }    


等不及 可以使用 看看
http://127.0.0.1:8080/axis/HelloWorld.jws?method=sayHello
结果 :
<soapenv:Envelope>
<soapenv:Body>
<sayHelloResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<sayHelloReturn xsi:type="xsd:string">HELLO soap!</sayHelloReturn>
</sayHelloResponse>
</soapenv:Body>
</soapenv:Envelope>


客户段
perl cpan >> install  SOAP::Lite
#!perl -w
use SOAP::Lite;
print SOAP::Lite
    
-> proxy('http://127.0.0.1:8080/axis/HelloWorld.jws')
    
-> uri('http://127.0.0.1:8080/axis/HelloWorld.jws')
    
-> sayHello()
    
-> result;
结果: HELLO soap!




posted @ 2009-03-02 00:00 刘凯毅 阅读(1431) | 评论 (0)编辑 收藏


安装参考:
   http://www.cnblogs.com/cerxp/archive/2008/04/22/1165620.html

相对 memcached 增强的功能:
  1. 坠机后,“缓存”初始化回到断电前
  2. 支持同步(可看成集群)Memcachedb 简单使用

代价:
  比 memcached 慢 15%
参考:http://swik.net/Jabber-linux/Jabber+XMPP+resource/memcachedb%E7%9A%84%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95/b1odq

posted @ 2009-02-26 16:23 刘凯毅 阅读(322) | 评论 (0)编辑 收藏



  看看我这张 web  系统架构图,那就知道 使用统一存储格式的好处了。
  在这种结构中你就单纯使用 java ,或 php 某一种单一语言描述格式,存储你集群交互的数据吗!?使用
ProtocolBuffers 吧,Google 已经有 现成的api来帮你扩展了。

参考:
http://blog.csdn.net/lcj8/archive/2009/02/17/3900157.aspx




     作为 Memcached 就是为集群使用,那么作为在缓存存储的数据我想也应该适用与各种环境,这时候 数据结构协议 Google ProtocolBuffers
参考:http://code.google.com/apis/protocolbuffers/docs/overview.html
其他语言:http://code.google.com/p/protobuf/wiki/OtherLanguages
(可适用与多种语言,
    javascript 读取缓存中的数据 ,你可以想象下你的 web服务开发 的将来!)



目前学习perl 中 就先上个这的代码:
参考:
http://search.cpan.org/~gariev/Google-ProtocolBuffers-0.08/lib/Google/ProtocolBuffers.pm#___top
#!/bin/perl -w
use Cache::Memcached;
use Google::ProtocolBuffers;
#开启 memd
my $memd = new Cache::Memcached{servers => ['10.0.2.15:11211'] };

#声明 缓存 存储 protocol 格式
my $key='test';
Google
::ProtocolBuffers->parse("
  message Person{
    required int32 id           =1;
    required string name        =2;
  }
",{create_accessors=>1});

my $data=Person->encode({
  id
=>123,
  name
=>'liukaiyi'
});

#缓存存储
$memd->add($key =>$data,3600);

#######################################################################


my $memd = new Cache::Memcached{servers => ['10.0.2.15:11211'] };
my $person;{
  #从缓存中取出
  
$person = Person->decode($memd->get($key));
}

print $person->id,"-",$person->name;

 


结果:
  123-liukaiyi


posted @ 2009-02-26 13:45 刘凯毅 阅读(1546) | 评论 (0)编辑 收藏

 
  这大体上可以看出,服务器端口缓存技术。

  memcached 官方:http://www.danga.com/memcached/
  安装前,先安装 libevent
  其上为 linux 软件一般安装,看他们readme文档
  $>memcached -d -u nobody -m 512 127.0.0.1 -p 11211
 
  如果有异常,
  ln -s /usr/local/lib/libevent-1.4.so.2 /lib/libevent-1.4.so.2
  参考 
http://blog.chinaunix.net/u2/70049/showart_1665279.html
  我这就使用 perl 语言了,
   其他语言参考 http://code.google.com/p/memcached/wiki/Clients

   perl 使用 cpan> install Cache::Memcached ;#会使用 perl 我就不说了
代码说明:不停对 key 为test 的值进行递增  
#!/bin/perl -w
use Cache::Memcached;

my $memd = new Cache::Memcached{servers => ['127.0.0.1:11211'] };
my $key = 'test';
$memd->add($key => 1,3600) or warn 'Alread added';
while(1){
  
print $memd->get($key),"\n";
  
$memd->incr($key) or warn 'FAIL!';
}


使用 telnet 127.0.0.1 11211
     $> get  test
     VALUE test 0 2
     97 #这就是我们递增的值,当然你使用什么语言取都是一样的
     END

posted @ 2009-02-25 16:23 刘凯毅 阅读(1756) | 评论 (0)编辑 收藏

仅列出标题
共12页: First 上一页 4 5 6 7 8 9 10 11 12 下一页