显示标签为“Code”的博文。显示所有博文
显示标签为“Code”的博文。显示所有博文

2010年3月29日星期一

Matlab下面调用其他程序

直接用system或者!就可以了

但是今天遇到的问题是这样的

有个程序运行到最后会出现”Please press any key to finish”

这就比较郁闷了,matlab会死在这个地方等输入,完成自动化的目的就泡汤了

研究了一下发现两个办法:

1.直接在shell里面用管道传一个东西进去:
!echo 1|SQL2CSV
2.用matlab的WScript.Shell COM方式调用外部程序,并且用他来传送输入:

h=actxserver('WScript.Shell');
h.Run('SQLtoCSV.exe');
pause(10);
h.AppActivate('SQLtoCSV.exe');h.SendKeys('~');

後一个方法这里看貌似土了一点,不过以后兴许别的地方用的上

参考:
http://www.mathworks.com/support/solutions/en/data/1-33DJ6K/index.html?product=ML&solution=1-33DJ6K

2009年4月14日星期二

Matlab复活节彩蛋

无意中找到的,转载from http://undocumentedmatlab.com/

For the 2009 Easter holiday, I thought I’d post a Matlab Easter egg, which I found on http://www.eeggs.com/items/47352.html: spy is a built-in stock Matlab function for visualizing sparse matrices. If you run spy with no input arguments, it uses an undocumented default built-in sparse matrix that generates one of the spies in the famous Spy vs. Spy comics series:

2008年12月29日星期一

Share一下账本的模板

还是放在Google Doc,虽然发现他的条件格式有些功能不支持,不过考虑到在线访问所带来的优势,还是决定继续在那里记。

链接如下:http://spreadsheets.google.com/ccc?key=po9lpsK8nl5lFA-4guFycBg



看起来基本是这样的,下面是一个简单的说明:

Column A--Week: 从"白菜元年"(AD 2008 12 01)起的第几周;这是自动从日期中计算来的;
Column B--Weekly Summary: 每周第一天,汇总上周所有收支; 当然,也是自动计算的;
Column C--Day: 周几,这个东西的主要作用是用来确认工作日和周末,工作日用红色标记,周末则是绿色。放在这里是便于分析消费模式;当然,也是自动计算的;
Column D--Date: 产生开销的日期。这个是需要手动输入的,不过如果跟前一笔是同一天发生的费用,可以偷懒不写;
Column E--Event: 名目,实在不知道有舍可以解释的,just in case: 这个是需要手动输入的;
Column F--Cost: 金额,again,请手动输入;
Column H-J--Tags: 自己有兴趣可以做一些提示标记,非强制。
Column K--Date Detailed: 是为了计算做的一列,忽略它就行了。

总的来说,标上需要自己填的就是橘色标记的那些,其中必填的只有前三项:时间,时间,金额。

P.s.这个链接上的账本是只能浏览的,点File->Create a Copy来创建一个自己的副本。

Enjoy

2008年12月3日星期三

"it will be very helpful to you."

收到一封非常搞笑的邮件,呵呵。如果他确实想表达这个意思,那就太nb了

Subject: QR code

Hi,

Currently am into a project in which i have to develop QR code in c++ for symbian based mobiles. i saw your reply in forum.nokia.


Will you please help me in doing this. And you told that your team has developed that. please send me that. it will be very helpful to you.

regards,
kalidasan.

2008年6月24日星期二

mTerm ver 0.129

其实已经是上个月的东西了,当时这里不方便,就发在水木了.

不过好歹是自己做的东西,还是要转过来存个档的.

本来计划是一直做到0.12971版的,不过俗务缠身,这事儿也就被无限期推迟了.

这是别人做的一个截图



下面是下载地址

http://bloggertemplate.googlecode.com/files/Ver_0.129.rar

2008年5月20日星期二

Base64 codec

今天在看用smtp方式发送邮件的问题

matlab自带的sendmail函数是不带验证的,所以嘛...基本没什么地方可以用。需要自己写一个做验证的

而现在做验证,其中的基本一步就是对based64的编解码。

找了一下,网上寻莫到这么两个函数,总的来说还是很不错的,有些比较漂亮的语法.贴在这里,以后参考

以下转自http://home.online.no/~pjacklam/matlab/software/util/datautil/

<CODE>
function y = base64decode(x)
%BASE64DECODE Perform base64 decoding on a string.
%
%   BASE64DECODE(STR) decodes the given base64 string STR.
%
%   Any character not part of the 65-character base64 subset set is silently
%   ignored.  Characters occuring after a '=' padding character are never
%   decoded.
%
%   STR doesn't have to be a string.  The only requirement is that it is a
%   vector containing values in the range 0-255.
%
%   If the length of the string to decode (after ignoring non-base64 chars) is
%   not a multiple of 4, then a warning is generated.
%
%   This function is used to decode strings from the Base64 encoding specified
%   in RFC 2045 - MIME (Multipurpose Internet Mail Extensions).  The Base64
%   encoding is designed to represent arbitrary sequences of octets in a form
%   that need not be humanly readable.  A 65-character subset ([A-Za-z0-9+/=])
%   of US-ASCII is used, enabling 6 bits to be represented per printable
%   character.
%
%   See also BASE64ENCODE.

%   Author:      Peter J. Acklam
%   Time-stamp:  2004-09-20 08:20:50 +0200
%   E-mail:      pjacklam@online.no
%   URL:         http://home.online.no/~pjacklam

   % check number of input arguments
   error(nargchk(1, 1, nargin));

   % remove non-base64 chars
   x = x (   ( 'A' <= x & x <= 'Z' ) ...
           | ( 'a' <= x & x <= 'z' ) ...
           | ( '0' <= x & x <= '9' ) ...
           | ( x == '+' ) | ( x == '=' ) | ( x == '/' ) );

   if rem(length(x), 4)
      warning('Length of base64 data not a multiple of 4; padding input.');
   end

   k = find(x == '=');
   if ~isempty(k)
      x = x(1:k(1)-1);
   end

   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   % Now perform the following mapping
   %
   %   A-Z  ->  0  - 25
   %   a-z  ->  26 - 51
   %   0-9  ->  52 - 61
   %   +    ->  62
   %   /    ->  63

   y = repmat(uint8(0), size(x));
   i = 'A' <= x & x <= 'Z'; y(i) =    - 'A' + x(i);
   i = 'a' <= x & x <= 'z'; y(i) = 26 - 'a' + x(i);
   i = '0' <= x & x <= '9'; y(i) = 52 - '0' + x(i);
   i =            x == '+'; y(i) = 62 - '+' + x(i);
   i =            x == '/'; y(i) = 63 - '/' + x(i);
   x = y;

   nebytes = length(x);         % number of encoded bytes
   nchunks = ceil(nebytes/4);   % number of chunks/groups

   % add padding if necessary
   if rem(nebytes, 4)
      x(end+1 : 4*nchunks) = 0;
   end

   x = reshape(uint8(x), 4, nchunks);
   y = repmat(uint8(0), 3, nchunks);            % for the decoded data

   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   % Rearrange every 4 bytes into 3 bytes
   %
   %    00aaaaaa 00bbbbbb 00cccccc 00dddddd
   %
   % to form
   %
   %    aaaaaabb bbbbcccc ccdddddd

   y(1,:) = bitshift(x(1,:), 2);                    % 6 highest bits of y(1,:)
   y(1,:) = bitor(y(1,:), bitshift(x(2,:), -4));    % 2 lowest bits of y(1,:)

   y(2,:) = bitshift(x(2,:), 4);                    % 4 highest bits of y(2,:)
   y(2,:) = bitor(y(2,:), bitshift(x(3,:), -2));    % 4 lowest bits of y(2,:)

   y(3,:) = bitshift(x(3,:), 6);                    % 2 highest bits of y(3,:)
   y(3,:) = bitor(y(3,:), x(4,:));                  % 6 lowest bits of y(3,:)

   % remove padding
   switch rem(nebytes, 4)
      case 2
         y = y(1:end-2);
      case 3
         y = y(1:end-1);
   end

   % reshape to a row vector and make it a character array
   y = char(reshape(y, 1, numel(y)));



</CODE>

<CODE>
function y = base64encode(x, eol)
%BASE64ENCODE Perform base64 encoding on a string.
%
%   BASE64ENCODE(STR, EOL) encode the given string STR.  EOL is the line ending
%   sequence to use; it is optional and defaults to '\n' (ASCII decimal 10).
%   The returned encoded string is broken into lines of no more than 76
%   characters each, and each line will end with EOL unless it is empty.  Let
%   EOL be empty if you do not want the encoded string broken into lines.
%
%   STR and EOL don't have to be strings (i.e., char arrays).  The only
%   requirement is that they are vectors containing values in the range 0-255.
%
%   This function may be used to encode strings into the Base64 encoding
%   specified in RFC 2045 - MIME (Multipurpose Internet Mail Extensions).  The
%   Base64 encoding is designed to represent arbitrary sequences of octets in a
%   form that need not be humanly readable.  A 65-character subset
%   ([A-Za-z0-9+/=]) of US-ASCII is used, enabling 6 bits to be represented per
%   printable character.
%
%   Examples
%   --------
%
%   If you want to encode a large file, you should encode it in chunks that are
%   a multiple of 57 bytes.  This ensures that the base64 lines line up and
%   that you do not end up with padding in the middle.  57 bytes of data fills
%   one complete base64 line (76 == 57*4/3):
%
%   If ifid and ofid are two file identifiers opened for reading and writing,
%   respectively, then you can base64 encode the data with
%
%      while ~feof(ifid)
%         fwrite(ofid, base64encode(fread(ifid, 60*57)));
%      end
%
%   or, if you have enough memory,
%
%      fwrite(ofid, base64encode(fread(ifid)));
%
%   See also BASE64DECODE.

%   Author:      Peter J. Acklam
%   Time-stamp:  2004-02-03 21:36:56 +0100
%   E-mail:      pjacklam@online.no
%   URL:         http://home.online.no/~pjacklam

   % check number of input arguments
   error(nargchk(1, 2, nargin));

   % make sure we have the EOL value
   if nargin < 2
      eol = sprintf('\n');
   else
      if sum(size(eol) > 1) > 1
         error('EOL must be a vector.');
      end
      if any(eol(:) > 255)
         error('EOL can not contain values larger than 255.');
      end
   end

   if sum(size(x) > 1) > 1
      error('STR must be a vector.');
   end

   x   = uint8(x);
   eol = uint8(eol);

   ndbytes = length(x);                 % number of decoded bytes
   nchunks = ceil(ndbytes / 3);         % number of chunks/groups
   nebytes = 4 * nchunks;               % number of encoded bytes

   % add padding if necessary, to make the length of x a multiple of 3
   if rem(ndbytes, 3)
      x(end+1 : 3*nchunks) = 0;
   end

   x = reshape(x, [3, nchunks]);        % reshape the data
   y = repmat(uint8(0), 4, nchunks);    % for the encoded data

   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   % Split up every 3 bytes into 4 pieces
   %
   %    aaaaaabb bbbbcccc ccdddddd
   %
   % to form
   %
   %    00aaaaaa 00bbbbbb 00cccccc 00dddddd
   %
   y(1,:) = bitshift(x(1,:), -2);                  % 6 highest bits of x(1,:)

   y(2,:) = bitshift(bitand(x(1,:), 3), 4);        % 2 lowest bits of x(1,:)
   y(2,:) = bitor(y(2,:), bitshift(x(2,:), -4));   % 4 highest bits of x(2,:)

   y(3,:) = bitshift(bitand(x(2,:), 15), 2);       % 4 lowest bits of x(2,:)
   y(3,:) = bitor(y(3,:), bitshift(x(3,:), -6));   % 2 highest bits of x(3,:)

   y(4,:) = bitand(x(3,:), 63);                    % 6 lowest bits of x(3,:)

   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   % Now perform the following mapping
   %
   %   0  - 25  ->  A-Z
   %   26 - 51  ->  a-z
   %   52 - 61  ->  0-9
   %   62       ->  +
   %   63       ->  /
   %
   % We could use a mapping vector like
   %
   %   ['A':'Z', 'a':'z', '0':'9', '+/']
   %
   % but that would require an index vector of class double.
   %
   z = repmat(uint8(0), size(y));
   i =           y <= 25;  z(i) = 'A'      + double(y(i));
   i = 26 <= y & y <= 51;  z(i) = 'a' - 26 + double(y(i));
   i = 52 <= y & y <= 61;  z(i) = '0' - 52 + double(y(i));
   i =           y == 62;  z(i) = '+';
   i =           y == 63;  z(i) = '/';
   y = z;

   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   % Add padding if necessary.
   %
   npbytes = 3 * nchunks - ndbytes;     % number of padding bytes
   if npbytes
      y(end-npbytes+1 : end) = '=';     % '=' is used for padding
   end

   if isempty(eol)

      % reshape to a row vector
      y = reshape(y, [1, nebytes]);

   else

      nlines = ceil(nebytes / 76);      % number of lines
      neolbytes = length(eol);          % number of bytes in eol string

      % pad data so it becomes a multiple of 76 elements
      y(nebytes + 1 : 76 * nlines) = 0;
      y = reshape(y, 76, nlines);

      % insert eol strings
      eol = eol(:);
      y(end + 1 : end + neolbytes, :) = eol(:, ones(1, nlines));

      % remove padding, but keep the last eol string
      m = nebytes + neolbytes * (nlines - 1);
      n = (76+neolbytes)*nlines - neolbytes;
      y(m+1 : n) = '';

      % extract and reshape to row vector
      y = reshape(y, 1, m+neolbytes);

   end

   % output is a character array
   y = char(y);

</CODE>

2008年5月15日星期四

一个完整的控制字串列表(for Vt100)

在拼命找up/down/left/right的键码是什么,找到这么一个东西,不错,存下来,好像我对有些字串的理解有误


    

ANSI/VT100 Terminal Control Escape Sequences

[ Status | Setup | Fonts | Cursor | Scrolling | Tabs | Erasing | Printing | Keyboard | Colours ]

Many computer terminals and terminal emulators support colour and cursor control through a system of escape sequences. One such standard is commonly referred to as ANSI Colour. Several terminal specifications are based on the ANSI colour standard, including VT100.

The following is a partial listing of the VT100 control set.

<ESC> represents the ASCII "escape" character, 0x1B. Bracketed tags represent modifiable decimal parameters; eg. {ROW} would be replaced by a row number.


Device Status

The following codes are used for reporting terminal/display settings, and vary depending on the implementation:
Query Device Code	<ESC>[c
  • Requests a Report Device Code response from the device.

Report Device Code	<ESC>[{code}0c
  • Generated by the device in response to Query Device Code request.

Query Device Status	<ESC>[5n
  • Requests a Report Device Status response from the device.

Report Device OK	<ESC>[0n
  • Generated by the device in response to a Query Device Status request; indicates that device is functioning correctly.

Report Device Failure	<ESC>[3n
  • Generated by the device in response to a Query Device Status request; indicates that device is functioning improperly.

Query Cursor Position	<ESC>[6n
  • Requests a Report Cursor Position response from the device.

Report Cursor Position	<ESC>[{ROW};{COLUMN}R
  • Generated by the device in response to a Query Cursor Position request; reports current cursor position.


Terminal Setup

The h and l codes are used for setting terminal/display mode, and vary depending on the implementation. Line Wrap is one of the few setup codes that tend to be used consistently:
Reset Device		<ESC>c
  • Reset all terminal settings to default.

Enable Line Wrap	<ESC>[7h
  • Text wraps to next line if longer than the length of the display area.

Disable Line Wrap	<ESC>[7l
  • Disables line wrapping.


Fonts

Some terminals support multiple fonts: normal/bold, swiss/italic, etc. There are a variety of special codes for certain terminals; the following are fairly standard:
Font Set G0		<ESC>(
  • Set default font.
Font Set G1		<ESC>)
  • Set alternate font.


Cursor Control

Cursor Home 		<ESC>[{ROW};{COLUMN}H
  • Sets the cursor position where subsequent text will begin. If no row/column parameters are provided (ie. <ESC>[H), the cursor will move to the home position, at the upper left of the screen.

Cursor Up		<ESC>[{COUNT}A
  • Moves the cursor up by COUNT rows; the default count is 1.

Cursor Down		<ESC>[{COUNT}B
  • Moves the cursor down by COUNT rows; the default count is 1.

Cursor Forward		<ESC>[{COUNT}C
  • Moves the cursor forward by COUNT columns; the default count is 1.

Cursor Backward		<ESC>[{COUNT}D
  • Moves the cursor backward by COUNT columns; the default count is 1.

Force Cursor Position	<ESC>[{ROW};{COLUMN}f
  • Identical to Cursor Home.

Save Cursor		<ESC>[s
  • Save current cursor position.

Unsave Cursor		<ESC>[u
  • Restores cursor position after a Save Cursor.

Save Cursor & Attrs	<ESC>7
  • Save current cursor position.

Restore Cursor & Attrs	<ESC>8
  • Restores cursor position after a Save Cursor.


Scrolling

Scroll Screen		<ESC>[r
  • Enable scrolling for entire display.

Scroll Screen		<ESC>[{start};{end}r
  • Enable scrolling from row {start} to row {end}.

Scroll Down		<ESC>D
  • Scroll display down one line.

Scroll Up		<ESC>M
  • Scroll display up one line.


Tab Control

Set Tab 		<ESC>H
  • Sets a tab at the current position.

Clear Tab 		<ESC>[g
  • Clears tab at the current position.

Clear All Tabs 		<ESC>[3g
  • Clears all tabs.


Erasing Text

Erase End of Line	<ESC>[K
  • Erases from the current cursor position to the end of the current line.

Erase Start of Line	<ESC>[1K
  • Erases from the current cursor position to the start of the current line.

Erase Line		<ESC>[2K
  • Erases the entire current line.

Erase Down		<ESC>[J
  • Erases the screen from the current line down to the bottom of the screen.

Erase Up		<ESC>[1J
  • Erases the screen from the current line up to the top of the screen.

Erase Screen		<ESC>[2J
  • Erases the screen with the background colour and moves the cursor to home.


Printing

Some terminals support local printing:
Print Screen		<ESC>[i
  • Print the current screen.

Print Line		<ESC>[1i
  • Print the current line.

Stop Print Log		<ESC>[4i
  • Disable log.

Start Print Log		<ESC>[5i
  • Start log; all received text is echoed to a printer.


Define Key

Set Key Definition	<ESC>[{key};"{string}"p
  • Associates a string of text to a keyboard key. {key} indicates the key by its ASCII value in decimal.


Set Display Attributes

Set Attribute Mode	<ESC>[{attr1};...;{attrn}m
  • Sets multiple display attribute settings. The following lists standard attributes:
    0	Reset all attributes
    1 Bright
    2 Dim
    4 Underscore
    5 Blink
    7 Reverse
    8 Hidden

    Foreground Colours
    30 Black
    31 Red
    32 Green
    33 Yellow
    34 Blue
    35 Magenta
    36 Cyan
    37 White

    Background Colours
    40 Black
    41 Red
    42 Green
    43 Yellow
    44 Blue
    45 Magenta
    46 Cyan
    47 White

[ Top | Status | Setup | Fonts | Cursor | Scrolling | Tabs | Erasing | Printing | Keyboard | Colours ]

    

2008年5月13日星期二

Keyboard这几天发现的一个很不错的函数

这个函数用于把程序的控制权返回给一个以>K开始的命令行,Matlab里面的debug功能就是用这个实现的。
非常适合那种中间需要看看观察一下运行状况的程序

p.s.ref里面提到的几个函数,也对于调试很有帮助,比如dbstop系的函数,就是用来设置breakpoint的。


 Provide feedback about this page 

keyboard - Input from keyboard

Syntax

keyboard

Description

keyboard , when placed in an M-file, stops execution of the file and gives control to the keyboard. The special status is indicated by a K appearing before the prompt. You can examine or change variables; all MATLAB® commands are valid. This keyboard mode is useful for debugging your M-files..

To terminate the keyboard mode, type the command

 return

then press the Return key.

See Also

dbstop, input, quit, pause, return

 Provide feedback about this page 

在Matlab下面发送了第一封bbs邮件

哈哈

下面是运行的log.

需要注意:
1.发送中文需要unicode2native
2.ctrl x的键码是24


详细的东西下次再写吧,我还high着呢


>> init
>> pool=termread(t);spaser(pool);render();
 
             ;,                                               ;,      
             ;;   ,                                           ;;    , 
        ,,,;,;;, ,;'                                     ''';';;;'''''
           ;;;;';'     ┌──┐┌┐┌┐┌──┐┌┐┌┐     ;;;;';    
          ;; ;; ';     │  ─┤│└┘│└┐┌┘│└┘│    ;; ;; ';,  
         ,;  ;;  ';,   ├—  │││││  ││  │┌┐│   ;;  ;;  ';;,
        ;'   ;;   ';;, └──┘└┴┴┘  └┘  └┘└┘ ,''   ;;    ';'
       '   '';'     '                                         ;;      
                                __       ____ ~╲                     
                               /  \   _╱    ╲  \                    
                               ╲ /_╱        │ /                    
           金  鼠  献  瑞     __/,            /-╯  鼠  年  大  吉    
                             "╲            ╱                        
        ﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉            ﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉
                                                                      
           网 bbs.newsmth.net                    电 bbs4.newsmth.net  
           通 www.newsmth.net                    信 www4.newsmth.net  
                                                                      
                  北京市通信管理局ICP备案号 (京ICP证050249号)         
 
欢迎光临 ◆水木社区◆ 上线人数 1093[最高: 23636](560 WWW GUEST)
试用请输入 `guest', 注册请输入`new', add `.' after your ID for BIG5
请输入代号: @
>> fwrite(t,sprintf('modeman%c%c',10,13))
>> pool=termread(t);spaser(pool);render();
 
             ;,                                               ;,      
             ;;   ,                                           ;;    , 
        ,,,;,;;, ,;'                                     ''';';;;'''''
           ;;;;';'     ┌──┐┌┐┌┐┌──┐┌┐┌┐     ;;;;';    
          ;; ;; ';     │  ─┤│└┘│└┐┌┘│└┘│    ;; ;; ';,  
         ,;  ;;  ';,   ├—  │││││  ││  │┌┐│   ;;  ;;  ';;,
        ;'   ;;   ';;, └──┘└┴┴┘  └┘  └┘└┘ ,''   ;;    ';'
       '   '';'     '                                         ;;      
                                __       ____ ~╲                     
                               /  \   _╱    ╲  \                    
                               ╲ /_╱        │ /                    
           金  鼠  献  瑞     __/,            /-╯  鼠  年  大  吉    
                             "╲            ╱                        
        ﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉            ﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉
                                                                      
           网 bbs.newsmth.net                    电 bbs4.newsmth.net  
           通 www.newsmth.net                    信 www4.newsmth.net  
                                                                      
                  北京市通信管理局ICP备案号 (京ICP证050249号)         
 
欢迎光临 ◆水木社区◆ 上线人数 1093[最高: 23636](560 WWW GUEST)
试用请输入 `guest', 注册请输入`new', add `.' after your ID for BIG5
请输入代号: modeman
请输入密码: @
>> fwrite(t,sprintf('xxxxx%c%c',10,13))
>> pool=termread(t);spaser(pool);render();
 
             ;,                                               ;,      
             ;;   ,                                           ;;    , 
        ,,,;,;;, ,;'                                     ''';';;;'''''
           ;;;;';'     ┌──┐┌┐┌┐┌──┐┌┐┌┐     ;;;;';    
          ;; ;; ';     │  ─┤│└┘│└┐┌┘│└┘│    ;; ;; ';,  
         ,;  ;;  ';,   ├—  │││││  ││  │┌┐│   ;;  ;;  ';;,
        ;'   ;;   ';;, └──┘└┴┴┘  └┘  └┘└┘ ,''   ;;    ';'
       '   '';'     '                                         ;;      
                                __       ____ ~╲                     
                               /  \   _╱    ╲  \                    
                               ╲ /_╱        │ /                    
           金  鼠  献  瑞     __/,            /-╯  鼠  年  大  吉    
                             "╲            ╱                        
        ﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉            ﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉
                                                                      
           网 bbs.newsmth.net                    电 bbs4.newsmth.net  
           通 www.newsmth.net                    信 www4.newsmth.net  
                                                                      
                  北京市通信管理局ICP备案号 (京ICP证050249号)         
 
欢迎光临 ◆水木社区◆ 上线人数 1093[最高: 23636](560 WWW GUEST)
试用请输入 `guest', 注册请输入`new', add `.' after your ID for BIG5
请输入代号: modeman
请输入密码: *****
* 密码过于简单, 请选择一个以上的特殊字元.
按 [RETURN] 继续@
>> fwrite(t,sprintf('%c%c',10,13))
>> pool=termread(t);spaser(pool);render();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
☆ 这是您第 1743 次上站,上次您是从 59.66.122.66 连往本站。
☆ 上次连线时间为 Tue May 13 18:35:41 2008 @
>> pool=termread(t);spaser(pool);render();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
☆ 这是您第 1743 次上站,上次您是从 59.66.122.66 连往本站。
☆ 上次连线时间为 Tue May 13 18:35:41 2008 @
>> fwrite(t,sprintf('%c%c',10,13))
>> pool=termread(t);spaser(pool);render();
▃▃▁                   ◢  ▎                          日期   时间   震级 位置
▏    ▍               ▕     ▄▃                   余  5-13 16:11:01  4.1 青川
◢     ▏               ◢        ◣                     5-13 15:53:03  4.8 青川
        ◣ ▄                    ▊       ▁         震  5-13 15:51:32  4.4 青川
◥             ▅▅                ▆▄▅    ▆▇◣▁    5-13 15:19:16  4.8 青川
   ◥                                                ▅  5-13 15:07:01  6.1 汶川
   ▕                                                   ▍
                  ﹍﹍                                 ◤
     ◥         ╱ ﹍ ╲    四川·阿坝·汶川         ▊
               / ╱︵╲ \  2008.5.12 14:28:04       ▄  一方有难  八方支援
       ▏     ┆┊(⊙)┊┆                 ▁     ◤
       ▎      \ ╲︶╱ /                ▊  ▔◥◤      中国红十字会总会
       ▏       ╲ ﹉ ╱                 ◤                救灾专用账号
      ▊          ﹉﹉                   ▃
                                           ▄▃   人民币:中国工商银行北京分行 
      ▕ ◤◥                    ▃       ▃◥▌          东四南支行
        ▅ ▕                  ◤  ▏     ▆▃      账号:0200001009014413252  
            ◥▃               ▏  ◥▃◥   ▁▏    外币:中信银行酒仙桥支行
                ▍           ◤           ▔        账号:7112111482600000209  
                 ◥        
                            ▎                  热线电话:(8610)65139999
 ascii by          ◥      ▉
 L4KevinX@COA        ▂◤ ▔        中国红十字会总会网站:www.redcross.org.cn  
☆ 按任意键继续... @
>> fwrite(t,sprintf('%c%c',10,13))
>> pool=termread(t);spaser(pool);render();
 
──◇近期热点◇────────────────────────────────
 
· 05.14 就业中心多功能厅 诚信理财系列活动理财知识普及 请关注版面置底  THASFA版
 
· 5.15 紫荆1#与4#之间 学生社团文化节之清华学生棋牌日 欢迎关注Chess版   chess版
· 5.15 紫荆1号楼前 理财问答  轻松获赠礼品                             THASFA版
· 5.15晚7:30 就业中心多功能厅 宝洁"未来领袖发现之旅"校园宣讲          SCDA版
 
· 至5月18日  王菲版版衫火热预订中!!! 请关注王菲版置底            FayeWong版
 
· 5.25 清华游泳馆南侧 Running Club 清华大学分站赛 关注版面置底   RunningLife版
 
· 5月份 青海湖韵 鼓励网友原创(含奖励包子等)活动 请参考版面置底       Qinghai版
 
 
 
 
 
 
 
 
 
☆ 按任意键继续... @
>> fwrite(t,sprintf('%c%c',10,13))
>> pool=termread(t);spaser(pool);render();
modeman       Sat Dec 10 09:00:10 2005       211.151.90.88
modeman       Thu May 11 18:42:12 2006       166.111.30.174       telnet
modeman       Fri Sep 15 20:48:43 2006       70.49.31.71          telnet
modeman       Fri Sep 15 20:48:54 2006       70.49.31.71          telnet
modeman       Sat Apr 26 23:47:57 2008       211.99.222.55        telnet
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
如何处理以上密码输入错误记录  (m)邮回信箱  (y)清除  (n)继续  [n]: @
>> fwrite(t,sprintf('y%c%c',10,13))
>> pool=termread(t);spaser(pool);render();
[好朋友列表]                       水木社区                        讨论区 [Test]
 聊天[t] 寄信[m] 送讯息[s] 加,减朋友[o,d] 看说明档[→,r] 切换模式 [f] 求救[h]  
 编号  使用者代号   使用者昵称             来自             P M 动态      时:分
>@  1.xiaohei3     猪啊                   59.66.123.*          阅读文章
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
时间[May 14 01:00] 总人数 [ 1426 ] [Y:Y] 使用者[modeman]           停留[  0:1]
>> fwrite(t,sprintf('%c%c',10,13))
>> pool=termread(t);spaser(pool);render();
 
xiaohei3 (猪啊) 上站 [2545] 发文 [1440]
上次在 [2008-05-14 00:58] 从 [59.66.123.*] 访问本站 积分 [43093] (98.67%)
离线于 [在线或因断线不详] 信箱 [  ] 生命力 [666] 身份 [用户]
目前在站上,状态如下:
阅读文章
个人说明档如下:
总感觉最近听的歌少了,唱的歌少了。
 
听的歌少了,是因为心情。以前曾经有段时间想把trueice上的所有歌都听一遍,但最终计
划还是夭折了。我喜欢在茫茫的歌曲中,偶然的听到自己喜欢的歌,有意的无意的。但是 
这样主动的去寻找,去尝试,还是不太适合我。所以我很怀旧。
 
唱的歌少了,是因为心情。唱歌是我最好的表达方式。不同的心情,不同的旋律。唱每首 
歌,都会很用情,用心去体会歌想要传递的情感。身边的人不会被感染,所以我唱歌只会唱
给我自己听。所以我很怀旧。
 
怀旧的歌,怀旧的人。
 
 
 
 
 
聊天[t] 寄信[m] 送讯息[s] 加,减朋友[o,d] 选择使用者[↑,↓] 切换模式 [f] 求救[h]@
>> fwrite(t,sprintf('m',10,13))
>> pool=termread(t);spaser(pool);render();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
收信人: xiaohei3
使用标题: 没主题
使用随机签名档
标题: @
>> fwrite(t,sprintf('你好呀,我在matlab下面',10,13))
>> pool=termread(t);spaser(pool);render();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
收信人: xiaohei3
使用标题: 没主题
使用随机签名档
标题: atlab?@
>> fwrite(t,sprintf('%c%c',10,13))
>> pool=termread(t);spaser(pool);render();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
收信人: xiaohei3
使用标题: atlab?
使用随机签名档     保存到发件箱[s切换]
按 0~3/V/L选/看/随机签名档,T改标题,Enter接受所有设定: @
>> fwrite(t,sprintf('T%c%c',10,13))
>> pool=termread(t);spaser(pool);render();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
收信人: xiaohei3
使用标题: atlab?
使用随机签名档
标题: atlab?@
>> fwrite(t,unicode2native(double('哈哈,我在matlab下面')))
??? Undefined function or method 'unicode2native' for input arguments of type 'double'.

>> fwrite(t,unicode2native('哈哈,我在matlab下面'))
>> pool=termread(t);spaser(pool);render();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
收信人: xiaohei3
使用标题: atlab?
使用随机签名档
标题: 哈哈,我在matlab下面@
>> fwrite(t,sprintf('%c%c',10,13))
>> pool=termread(t);spaser(pool);render();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
收信人: xiaohei3
使用标题: 哈哈,我在matlab下面
使用随机签名档     保存到发件箱[s切换]
按 0~3/V/L选/看/随机签名档,T改标题,Enter接受所有设定: @
>> fwrite(t,sprintf('%c%c',10,13))
>> pool=termread(t);spaser(pool);render();
@                                                                        
--                                                     
*[s*[1;9H*[32m*[5m小  *[0;1m*[40m*[5m白  *[0;1m*[32m*[9m菜  *[1;65H*[40;30m  *[4
3;30m *[m◣*[47;30m◤*[43;30m *[40;30m *[m*[2;65H*[47;30m◤      *[m◣*[3;65H*[1
m *[47;37m *[0;47;30m *[1;40;37m"*[47;37m   *[40m"*[47;37m *[m*[4;65H*[47;30m◣
≡ .  *[m◤*[m*[5;65H*[33m  *[47;30m◤  *[m◣  *[m*[6;65H*[33m *[47;30m◣﹨∕*[m
◤ *[m*[0;1m*[u*[3A*[58C|佛说*[5D*[1B|前世的五百次回头*[17D*[1B|才换来今生的擦肩
而过*[21D*[1B|那又是什么......*[17D*[1B|换来对你的刻骨铭心*[19D*[2B*[m这个猫猫是
yummi@tw原创的*[u
99.12   原来梦想就这么近
00.x    一个说普通话的女生
00.7    与我无关的黑色七月                      *[20B
 
~                                                   
~
~
~
~
~
~
~
~
~
【  】 Ctrl-Q 求救     状态 [插入][1,1][ ][ ]     时间【Wed May 14 01:03】
>> fwrite(t,sprintf('%c',24))
>> pool=termread(t);spaser(pool);render();
                                                                         
xiaohei3 (猪啊) 上站 [2545] 发文 [1440]
上次在 [2008-05-14 00:58] 从 [59.66.123.*] 访问本站 积分 [43093] (98.67%)
离线于 [在线或因断线不详] 信箱 [信] 生命力 [666] 身份 [用户]
目前在站上,状态如下:
阅读文章[1]
个人说明档如下:
总感觉最近听的歌少了,唱的歌少了。
 
听的歌少了,是因为心情。以前曾经有段时间想把trueice上的所有歌都听一遍,但最终计
划还是夭折了。我喜欢在茫茫的歌曲中,偶然的听到自己喜欢的歌,有意的无意的。但是 
这样主动的去寻找,去尝试,还是不太适合我。所以我很怀旧。
 
唱的歌少了,是因为心情。唱歌是我最好的表达方式。不同的心情,不同的旋律。唱每首 
歌,都会很用情,用心去体会歌想要传递的情感。身边的人不会被感染,所以我唱歌只会唱
给我自己听。所以我很怀旧。
 
怀旧的歌,怀旧的人。
 
 
 
 
 
聊天[t] 寄信[m] 送讯息[s] 加,减朋友[o,d] 选择使用者[↑,↓] 切换模式 [f] 求救[h]@
>> fclose(t)
>> clear

2008年5月12日星期一

A good matlab website

http://www.blinkdagger.com/matlab/matlab-gui-tutorial-how-to-stop-a-long-running-function

无意中找到的,很不错的站点
1.文章很好,内容很有用,也写得很清楚-----不像我,很多时候是写给自己看的
2.专著于matlab
3.他们甚至为了贴matlab代码专门做了一个style模版,看着matlab editor里面一样。喜欢,什么时候想办法拔来用


2008年5月10日星期六

Materm, a crazy plan

What will happen if one can access bbs in matlab?
Well, actually, nothing really.
But it can be an interesting experience, and in my philosophy it counts to create some interesting things for this boring world.

And all these lead to a crazy plan: Materm, a bbs client in matlab.

Here is its first piece of code. With the comments, I think everything is self-explained-----after all it's so short.
The only thing worth while mentioning here is the problems I have fixed today:
a. Howto read non-url data from internet-----for url, we can use urlread directly.
b. How does matlab represent Chinese characters and how to convert them into GB presentation.-----Matlab uses unicode internally and provides "unicode2native" for conversion.
c. In a bbs system, on enter is represented by 2 characters and their ascii are "10" and "13" resp.

The code and its output is given below


>> t = tcpip('bbs.newsmth.org',23,'InputBufferSize',2048);% 开一个端口

fopen(t)
A=fread(t);%读入,貌似这样读会把所有buf里面收到的东西都读进来----不过我一直不知道他是怎么判断停止的....

B=char(A)';%这个地方要转置一下,否则后面的函数不认

B=regexprep(B,'\x1B\[m','\x1B\[0m');%先把*[m变成*[0m,免得麻烦
B=regexprep(B,'\x1B\[\d+(;\d+)*m','');% 目前简化处理,所有的ascciart全部忽略

C=native2unicode(uint8(B));
C=regexprep(C,'\xD\xA','\n')%合并回车

fclose(t)

Warning: The specified amount of data was not returned within the Timeout period.
C =
????????
             ;,                                               ;,      
             ;;   ,                                           ;;    , 
        ,,,;,;;, ,;'                                     ''';';;;'''''
           ;;;;';'     ┌──┐┌┐┌┐┌──┐┌┐┌┐     ;;;;';    
          ;; ;; ';     │  ─┤│└┘│└┐┌┘│└┘│    ;; ;; ';,  
         ,;  ;;  ';,   ├—  │││││  ││  │┌┐│   ;;  ;;  ';;,
        ;'   ;;   ';;, └──┘└┴┴┘  └┘  └┘└┘ ,''   ;;    ';'
       '   '';'     '                                         ;;      
                                __       ____ ~╲                     
                               /  \   _╱    ╲  \                    
                               ╲ /_╱        │ /                    
           金  鼠  献  瑞     __/,            /-╯  鼠  年  大  吉    
                             "╲            ╱                        
        ﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉            ﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉
                                                                      
           网 bbs.newsmth.net                    电 bbs4.newsmth.net  
           通 www.newsmth.net                    信 www4.newsmth.net  
                                                                      
                  北京市通信管理局ICP备案号 (京ICP证050249号)         

欢迎光临 ◆水木社区◆ 上线人数 11360[最高: 23357](4879 WWW GUEST)
试用请输入 `guest', 注册请输入`new', add `.' after your ID for BIG5
请输入代号:
>>

2007年10月22日星期一

Matlab里面使用元素循环

Matlab里面的for循环其实本质上更类似于Perl和Ruby

不过由于大部分用matlab的人是受的C语言教育,甚至没有编程基础,所以一般来说,对for的实用几乎全是最基本的C方式

基本就是把

for(i=n;i<m;i++){
...
}

替换成

for i=n:m-1
...
end


稍微复杂一点,也无非就是i=m:-1:n或者i=1:k:n这类的东西。但是归根到底都是完全的C风格---可以在C下面找到简单的对应语句

但是如果认真的分析一下matlab的for语句结构

for i=1:n
~~~这个写法如果单独拿出来看是不是很眼熟-----这其实是一个数组。

换句话说,matlab其实和perl一样,是在对“数组元素”进行循环,而不是C那样简单的对数字进行循环。只不过是一般习惯上我们喜欢用1:n这样的简单的全部由数字组成的数组作为循环对象,以使其产生和C下面完全一样的效果。

But that's not necessarily the case, 如果去掉这个限制,matlab的循环功能可以实现更自由的功能,下面只是一些非常简单的小实验,至于什么地方能用的上,相信看过以后你自然会有感觉


A=[1 3 ;4 2]
for i=A
i
end
A={'First','Second'}
for i=A
i
end
A='T NN'
for i=A
i
end

A =

1 3
4 2


i =

1
4


i =

3
2


A =

'First' 'Second'


i =

'First'


i =

'Second'


A =

T NN


i =

T


i =




i =

N


i =

N

2007年10月14日星期日

Matlab升级以后ctrl tab又不好用了

...只有一个解释,matlab改了跟gui有关的什么东西------2006b升级到2007a的时候没改过

先看了一下这次升级有没有提供关于tab的设置,非常失望的....还是没有

忍着吧,只好把autokey又拿出来调了一下,加上下面这段代码(因为我的06b没删,所以以前的脚本也还留着)

#IfWinActive, ahk_class SunAwtFrame
LCtrl & Tab::Send ^{PgDn}
LCtrl & CapsLock::Send ^{PgUp}
LAlt & F4::Send ^w

顺便把编译好的exe放上来吧-----我一般是放在自动启动目录下,里面还有一些系统其他软件的快捷键设置,如果不喜欢的话,可以每次开matlab的时候打开这个exe,用完关掉。

2007年10月10日星期三

图像转EPS的小程序

现在用TeX,没办法,需要做这么一个东西

查了一下,TAMU很多年前有人做过这个东西了,

拿来直接改了改,都些非常小的改动,为了让程序更规范一点(其实主要是为了适应我自己的一些坏习惯,哈哈)

以示尊重,这个是原作者的网页链接http://www.cs.cmu.edu/~jkubica/code/matlabToEPS.html

下面是改过的代码,存在这里以防我哪天机器里面找不到这个文件了。说起来,我现在很多helper程序都是零散的放在各个文件夹下面,每次需要用的时候就copy一份到当前项目的路径。这样一方面是每次都需要去找相应的helper在什么地方那个,更严重的潜在问题是没法保证这些程序的同步更新,有功夫看来需要把东西全部整理起来作成一个toolbox了

如果有人不小心搜索到下面这段代码,欢迎引用或者修改。唯一的要求是保留其中全部的注释,特别是原作者的部分,如果你想使用源代码又不想尊重他的版权,请直接去上面的网站下载原始版本,这样你算是直接侵犯他的版权,我不用跟着挨骂,嘻嘻。

% convertToEPS(imgName,type)
% By Jeremy Kubica, 2001
%
% Uses Matlab to convert a image file into a EPS file.
% imgName - the name of the image file
% type - the file type
%
% Example: to convert file "sample.jpg" to "sample.esp"
% convertToEPS('sample','jpg');
% New file is saved as imgName.esp
% --------------------------------
% im2eps(imgName)
% Modified by Yuan REN, 2007
%
% Example: convertToEPS('sample.jpg');
%

function im2eps(imgName)

pic = imread(imgName);
[y x c] = size(pic);

h=figure('Units','Pixels','Resize','off',...
'Position',[100 100 x y],'PaperUnit','points',...
'PaperPosition',[0 0 x y]);
axes('position',[0 0 1 1]);
image(pic);
axis off

[temp1 temp2 temp3 name]=regexp(imgName,'.*(?=\.)'); %get rid of the extension; Actually, the last extension.
saveas(gcf,[name{1},'.eps'],'epsc');
close(h);

2007年9月8日星期六

IE下定位垂直导航栏

被IE搞得很怒

垂直导航栏在IE下面总是不动,而且其他的排版也和Firefox下面不同

折腾了半天,终于让IE下面的垂直导航栏也不动了:)

参考随网之舞


是按照上面文章中的思路,但是blogger里面有些特殊的地方,所以改了一些东西。以下修改是基于我原来使用的导航栏做的,如果用的导航栏实现代码不同,需要作相应修改。

原理大概是:

既然ie下面不让我fix到窗口区域的固定位置,那我就自己造一个大小正好等于整个窗口尺寸的div,然后让导航栏绝对定位到这个div的固定为止。

当然,这样需要解决的问题就是,如果这个div跟窗口一样大,那么他内部应该好有另外一个带有滚动条的div,来保证所有需要的东西还是能够显示出来。

Step 1:


作一段只对IE有效的css

<!--[if lt IE 7]>
<style type="text/css">

html{
overflow:hidden;
}

body {
/*overflow:hidden;*/

height:100%;

}

#outer-wrapper
{
height:100%;
overflow-y:auto;
}

#fixed{
font-size:small;/*为了使得这个东西不会受到字体放缩的影响*/
position:absolute;
left:1px;top:20px;
width:30px
}

#fixed img{ /*IE only,解决ie下面另外一部分搞笑的问题*/
position:fixed;
margin-bottom:-20px;
}
#fixed hr{
margin-top: 16px;
margin-bottom:-2px;
}

#fixed a:hover img {/* 钉死IE下面的图像*/
left:0px;
position:relative;
top:0px;
}

#Manubar { /*隐藏另外那个垂直导航栏*/
display:none;
}

</style>

<script type='text/javascript'>
//修改分栏宽度
//<![CDATA[
document.writeln("<style type=\"text/css\">#outer-wrapper {width:" + ((document.documentElement.clientWidth)*1 - 20) + "px;}</style>");//set main width
//]]>
</script>
<![endif]-->

这个里面设定了html的overflow:hidden,也就是说,html和body就只有窗口区域这么大了。
然后在outer-wrapper里面加了overflow:auto,所以实际上仔细看会发现滚动条其实是outer-wrapper的,而不是整个整个窗体的-----blogspot会自动在outer-wrapper的前面加入一个navbar的导航栏(当然,是被我们给手动隐藏了的)

Step 2:



然后加入一个只在IE中才会出现的对象
<!--[if lt IE 7]>

<div id="fixed">
<a href="http://eerenyuanback.blogspot.com/" title="Home"><img alt="Home" src="http://eerenyuan.googlepages.com/homepage.png" /></a>
<hr/>
<a href="javascript:setTextSize(startSz+1)" title="Larger Font Size"><img alt="Font+" src="http://chenkaie.blog.googlepages.com/FontSizePlus.gif" /></a>
<br/>
<a href="javascript:setTextSize(3)" title="Default Font Size"><img alt="Font0" src="http://chenkaie.blog.googlepages.com/FontSizeOrigin.gif" /></a>
<br/>
<a href="javascript:setTextSize(startSz-1)" title="Smaller Font Size"><img alt="Font-" src="http://chenkaie.blog.googlepages.com/FontSizeMinus.gif" /></a>
<hr/>
打<br/>倒<br/>IE<br/>
</div>


<![endif]-->

这个东西貌似需要放在body的末尾部分,否则貌似会被其他东西给覆盖过去。如果愿意的话,可以用一个page element来统一管理这些只有ie中可见的东西,不过我已经习惯直接编辑那个xml文件了,所以就直接写在里面了。

至于效果,就是那个样子,开个IE试试就知道了,哈哈

2007年9月6日星期四

完善了一下那个颜色转换的东西~~~

现在是通过截图的方式获取的完整颜色列表

然后做了简单的解析ascii色彩控制码的程序-----完整的还作,基本上功能都有了,我也力所能及的做了一点容错,理论上用fterm下载的文章都可以处理。但是水木上对颜色码的容错其实相当的fz,就连这样的*[00012222;2000,12,1;0;32;001;45;;m这样的颜色也能处理...我作了一些简单的实验,但是还没有确定那个东西完整的容错机制,所以只处理了比较一般的情况

至于ascii码的光标移位,闪烁那些功能,就以后再说吧。

下面帖个效果图

发信人: dntx (冬鸟听雪), 信区: ASCIIArt
标  题: 色彩表
发信站: BBS 大话西游站 (Mon Feb 19 19:52:58 2001)

注意背景只能是低亮的,而前景则低亮高亮均可

          暗 暗 暗 暗 暗 暗 暗 暗 明 明 明 明 明 明 明 明
          前 前 前 前 前 前 前 前 前 前 前 前 前 前 前 前
          景 景 景 景 景 景 景 景 景 景 景 景 景 景 景 景
          30 31 32 33 34 35 36 37 30 31 32 33 34 35 36 37
          ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
背景40→  天 天 天 天 天 天 天 天 天 天 天 天 天 天 天 天 
背景41→  天 天 天 天 天 天 天 天 天 天 天 天 天 天 天 天 
背景42→  天 天 天 天 天 天 天 天 天 天 天 天 天 天 天 天 
背景43→  天 天 天 天 天 天 天 天 天 天 天 天 天 天 天 天 
背景44→  天 天 天 天 天 天 天 天 天 天 天 天 天 天 天 天 
背景45→  天 天 天 天 天 天 天 天 天 天 天 天 天 天 天 天 
背景46→  天 天 天 天 天 天 天 天 天 天 天 天 天 天 天 天 
背景47→  天 天 天 天 天 天 天 天 天 天 天 天 天 天 天 天 



再来一个

发信人: redbat (忆江南), 信区: PrettySigner
标  题: 光影效果
发信站: 华南网木棉站 (Wed Nov 14 19:10:19 2001), 转信

        
                            
        
                            
     
   ███                         
     
   ███                         
     
   ███                         
        
                            
        
                            
        
                            
     
              ███              
     
              ███              
     
              ███              
        
                            
        
                            
        
                               By 忆江南㊣        
   
                           ███   
     
                         ███   
     
                         ███