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 劉凱毅 閱讀(3701) | 評論 (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 劉凱毅 閱讀(1434) | 評論 (1)編輯 收藏


          /usr/bin/convmv -r -f UTF-8 -t GBK --notest --lowmem  .
          posted @ 2009-03-15 15:41 劉凱毅 閱讀(220) | 評論 (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 劉凱毅 閱讀(1551) | 評論 (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 劉凱毅 閱讀(290) | 評論 (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 劉凱毅 閱讀(1240) | 評論 (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 劉凱毅 閱讀(1452) | 評論 (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 劉凱毅 閱讀(345) | 評論 (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 劉凱毅 閱讀(1568) | 評論 (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 劉凱毅 閱讀(1791) | 評論 (0)編輯 收藏

          僅列出標題
          共12頁: First 上一頁 4 5 6 7 8 9 10 11 12 下一頁 
          主站蜘蛛池模板: 嘉荫县| 隆安县| 大庆市| 镇沅| 晋中市| 奉节县| 小金县| 城口县| 安多县| 罗江县| 仁化县| 老河口市| 垫江县| 东港市| 都安| 仲巴县| 西林县| 吉安市| 乌恰县| 滨州市| 紫阳县| 晋江市| 涪陵区| 页游| 肇源县| 永顺县| 华坪县| 深泽县| 甘南县| 山西省| 漯河市| 望城县| 通山县| 铜鼓县| 汶上县| 抚松县| 高阳县| 盐亭县| 龙江县| 墨脱县| 新化县|