[Shellweb-main] =?UTF-8?B?UmU6IFtTaGVsbHdlYi1tYWluXSBSZTogW1NoZWxsd2ViLW1haW5dIFI=?= =?UTF-8?B?ZTog
Status: Alpha
Brought to you by:
alexe_cn
|
From: Anthony WU <ant...@gm...> - 2006-01-15 09:09:16
|
Hi Alexe
關於 MIME.txt,我覺得於 net.pl 中解釋回傳的原因
前提方面
一:所有 URI 的連接使用 net.pl 取得,例如 file://, http://, ftp://,
udp:// (?) 等等的由 net.pl 取得,再交由 view.pl 做顯示。
二:以通用的調用方式取得 Parser 方法。
使用 net.pl 增加 HTTP HEADER 之原因
一:方便以後 HTML 方式的功能,例如 cookie 設定、charset 、轉向參照頁
等等的,這些部份而言 與 javascript 及 view.pl 有關。
二:關於 HTTP 的方式的功能,例如 Expires: ,Date: , Pragma: cache,
Content-Disposition 等等的獨特 Header
1:遇到 Content-Disposition 或 不知道後綴時,需要彈出popup向用戶
詢問是否下載
2:Date: 這個可以與 ftp 的檔案最後修改日期看齊
3:Pragma: cache 、 Expires 時不可能使用 後綴如
http://test.com/test.pl?get=login 存成 test.html 記錄,否則可能與 其他如
http://test.com/test.pl?get=download 等等的相沖,當然可以說使用 random
名稱,不過這樣做就比較難兼容 Pragma: cache 、 Expires 的功能
ale...@gm... 提到:
>Anthony WU,
>定义一个MIME.txt,我想有这个必要。
>各个不同文件的分类解析应该是在Parser.pm模块中完成。
>Content-Type的定义比较困难,毕竟除了http以外,其他的例如:Ftp、localfile都没有这样的头,所以都必须添加。而相对而言,分析文件的后缀应该比较简单。
>Content-Type值的使用,我想可能在net那边就直接分析了,因为Content-Type的值一般在传输非文本数据时才比较有用,这时net会直接将传输的内容按照Content-Type值来存储成不同的文件,最后将这个有正确后缀的文件名传递给Parser.pm来分析。
>这样对于Parser.pm来说,它分析的都是本地文件。
>
>localfile的问题,是否通过net来存储一个临时文件,或者直接去本地查找文件?
>
>在 06-1-7,Anthony WU<ant...@gm...> 写道:
>
>
>>辛苦你了 =)
>>MIME.pl (MIME.pl.txt) 主要是定義一些 Content-Type、後綴(副檔名) 的 解釋
>>模組(Parser)名稱
>>而 main.pl (main.pl.txt) 可當成是現在的 Parser.pm,用於調用 解釋模組(Parser)
>>關於這個部份,我構思所有 file://, http://, ftp:// 等等的都統一使用
>>net.pl 回傳到 html_view.pl
>>當連結為 http:// 的話,就直接回傳 HTTP Header 中的Content-type 到
>>html_view.pl 調用 Parser
>>當連結為 ftp:// 或 file:// 的話,就在 net.pl 中增加Content-type 回傳到
>>html_view.pl 調用 Parser
>>這樣應該可以減少很多 邏輯思維上的 代碼兼容問題
>>現在的 @ISA 例子因為代碼結構未完善而較難說明,主要想法是直接 ISA 於調用
>>$buffer 的模組,我再想想代碼的結構再一次提出
>>
>>
>>ale...@gm... 提到:
>>
>>
>>
>>>现在cvs上的是我的一个工作副本,由于我在两地工作,所以拿这里当了一个中转。因此cvs上的代码还不是可以正常工作的代码。
>>>
>>>建议很好:
>>>package 最好改成 ShellWeb::Parser::Html,这个会在近期修正。
>>>
>>>@ISA与mapping file的联合使用能不能给出更加详细的例子?
>>>我参考一下。
>>>
>>>2006/1/7, Anthony WU <ant...@gm...>:
>>>
>>>
>>>
>>>
>>>>Global symbol "$class" requires explicit package name at
>>>>lib/Parser/Html.pm line 16.
>>>>Global symbol "$base_url" requires explicit package name at
>>>>lib/Parser/Html.pm line 26.
>>>>Global symbol "$buffer" requires explicit package name at
>>>>lib/Parser/Html.pm line 32.
>>>>Global symbol "$iter" requires explicit package name at
>>>>lib/Parser/Html.pm line32.
>>>>Global symbol "$buffer" requires explicit package name at
>>>>lib/Parser/Html.pm line 36.
>>>>Global symbol "$iter" requires explicit package name at
>>>>lib/Parser/Html.pm line36.
>>>>Global symbol "$buffer" requires explicit package name at
>>>>lib/Parser/Html.pm line 38.
>>>>Global symbol "$iter" requires explicit package name at
>>>>lib/Parser/Html.pm line38.
>>>>Global symbol "$buffer" requires explicit package name at
>>>>lib/Parser/Html.pm line 70.
>>>>Global symbol "$iter" requires explicit package name at
>>>>lib/Parser/Html.pm line70.
>>>>Global symbol "$window" requires explicit package name at
>>>>lib/Parser/Html.pm line 78.
>>>>Global symbol "$buffer" requires explicit package name at
>>>>lib/Parser/Html.pm line 80.
>>>>Global symbol "$iter" requires explicit package name at
>>>>lib/Parser/Html.pm line80.
>>>>Global symbol "$buffer" requires explicit package name at
>>>>lib/Parser/Html.pm line 87.
>>>>Global symbol "$iter" requires explicit package name at
>>>>lib/Parser/Html.pm line87.
>>>>Global symbol "$buffer" requires explicit package name at
>>>>lib/Parser/Html.pm line 89.
>>>>Global symbol "$iter" requires explicit package name at
>>>>lib/Parser/Html.pm line89.
>>>>Compilation failed in require at lib/Parser.pm line 4.
>>>>BEGIN failed--compilation aborted at lib/Parser.pm line 4.
>>>>
>>>>汗.....
>>>>而且有些oo還是未定義的...........
>>>>另外建議使用
>>>>package Parser::Html;
>>>>use strict;
>>>>use Html::Parser;
>>>>use vars qw (@ISA);
>>>>@ISA= ('Parser');
>>>>
>>>>之後再增加一個 mapping file 存放 Parser::xxx 支援什麼 .xxx,這樣每次增加
>>>>支援時,就不需每次修改原身的代碼,也可以增加第三方代碼的支援
>>>>另外又可以解決些 oo 的指向 (或者變量區域)問題,減少變量所佔的內存空間
>>>>最後,package 最好改成 ShellWeb::Parser::Html; 減少與其他 lib 相沖的可能
>>>>
>>>>
>>>>ale...@gm... 提到:
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>>不好意思,那个模块还没测试,确实是写错了。
>>>>>大小写肯定要注意的。perl里对大小写是敏感的。
>>>>>
>>>>>拆分工作的问题还没想,主要是最后的一个部分--html解析的OO还没有做完。这里面牵扯到一个数据的返回然后交给显示部分做显示,也就是解析部分与显示部分的通讯。
>>>>>我想基本的模块化都做完,大家可以自由的挑挑自己喜欢或擅长的来作。
>>>>>关键在于大家多交流,相互交换一下想法应该就很容易。
>>>>>
>>>>>2006/1/6, fayland <fa...@gm...>:
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>>我觉的 alexa 你应该对大小写注意一下。虽然 win 下没事,但 linux 下会出错
>>>>>>的。比如 lib/Parser/Html.pm 里
>>>>>>use HTML::Parser;
>>>>>>而不能是
>>>>>>use Html::Parser;
>>>>>>
>>>>>>另外 alexa 想想怎么拆分工作,然后让大家自己选个熟悉的开始合作。
>>>>>>
>>>>>>ale...@gm... wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>>早上终于恢复正常了。
>>>>>>>可能是sourceforge最近总是在升级吧。
>>>>>>>
>>>>>>>在 06-1-6,fayland<fa...@gm...> 写道:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>>我都很正常,update 没什么问题。
>>>>>>>>
>>>>>>>>ale...@gm... wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>>这两天有谁cvs 过?是否正常?
>>>>>>>>>我这里总是连不上去,想求证一下。
>>>>>>>>>
>>>>>>>>>--
>>>>>>>>>+--------------------------------------------+
>>>>>>>>>|By Alexe (http://www.alexe.cn)|
>>>>>>>>>+--------------------------------------------+
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>--
>>>>>>>>Fayland Lam /// http://www.fayland.org/
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>-------------------------------------------------------
>>>>>>>>This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
>>>>>>>>for problems? Stop! Download the new AJAX search engine that makes
>>>>>>>>searching your log files as easy as surfing the web. DOWNLOAD SPLUNK!
>>>>>>>>http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>--
>>>>>>>+--------------------------------------------+
>>>>>>>|By Alexe (http://www.alexe.cn)|
>>>>>>>+--------------------------------------------+
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>--
>>>>>>Fayland Lam /// http://www.fayland.org/
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>-------------------------------------------------------
>>>>>>This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
>>>>>>for problems? Stop! Download the new AJAX search engine that makes
>>>>>>searching your log files as easy as surfing the web. DOWNLOAD SPLUNK!
>>>>>>http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>--
>>>>>+--------------------------------------------+
>>>>>|By Alexe (http://www.alexe.cn)|
>>>>>+--------------------------------------------+
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>--
>>>>Best Regards,
>>>> Anthony WU
>>>>
>>>>
>>>>
>>>>-------------------------------------------------------
>>>>This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
>>>>for problems? Stop! Download the new AJAX search engine that makes
>>>>searching your log files as easy as surfing the web. DOWNLOAD SPLUNK!
>>>>http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>--
>>Best Regards,
>> Anthony WU
>>
>>
>>
>>use strict;
>>use warnings;
>>require 'MIME.pl';
>>my $file = $ARGV[0];
>>$ARGV[0] =~ /(\..*?)$/;
>>my $EXTENSION = $1;
>>if (exists ($ShellWeb::MIME::EXTENSION{$EXTENSION}) && exists ($ShellWeb::MIME::MIME{$ShellWeb::MIME::EXTENSION{$EXTENSION}}))
>>{
>> my $mod = $ShellWeb::MIME::MIME{$ShellWeb::MIME::EXTENSION{$EXTENSION}};
>> &include_once ($mod);
>> my $Parser = new {$mod};
>>}
>>
>>sub include_once
>>{
>> my $modname = shift (@_);
>> my $modpath = sprintf ('%s.pm', $modname);
>> $modpath =~ s/\:\:/\//g;
>> if (!grep (/^\Q$modpath\E$/, keys (%INC)))
>> {
>> eval ("use $modname");
>> }
>>}
>>package ShellWeb::MIME;
>>$ShellWeb::MIME::EXTENSION{'.txt'} = 'text/plain';
>>$ShellWeb::MIME::EXTENSION{'.html'} = 'text/html';
>>$ShellWeb::MIME::EXTENSION{'.htm'} = 'text/html';
>>$ShellWeb::MIME::EXTENSION{'.xhtml'} = 'text/html';
>>$ShellWeb::MIME::EXTENSION{'.xml'} = 'text/xml';
>>$ShellWeb::MIME::EXTENSION{'.jpe'} = 'image/jpeg';
>>$ShellWeb::MIME::EXTENSION{'.jpeg'} = 'image/jpeg';
>>$ShellWeb::MIME::EXTENSION{'.jpg'} = 'image/jpeg';
>>$ShellWeb::MIME::EXTENSION{'.gif'} = 'image/gif';
>>$ShellWeb::MIME::EXTENSION{'.png'} = 'image/png';
>>$ShellWeb::MIME::EXTENSION{'.tif'} = 'image/tiff';
>>$ShellWeb::MIME::EXTENSION{'.tiff'} = 'image/tiff';
>>$ShellWeb::MIME::EXTENSION{'.xbm'} = 'image/x-xbitmap';
>>$ShellWeb::MIME::EXTENSION{'.xmp'} = 'image/xpm';
>>$ShellWeb::MIME::MIME{'text/plain'} = 'ShellWeb::Parser::TXT';
>>$ShellWeb::MIME::MIME{'text/html'} = 'ShellWeb::Parser::HTML';
>>$ShellWeb::MIME::MIME{'text/xml'} = 'ShellWeb::Parser::XML';
>>$ShellWeb::MIME::MIME{'image/jpeg'} = 'ShellWeb::Parser::IMAGE';
>>$ShellWeb::MIME::MIME{'image/gif'} = 'ShellWeb::Parser::IMAGE';
>>$ShellWeb::MIME::MIME{'image/png'} = 'ShellWeb::Parser::IMAGE';
>>$ShellWeb::MIME::MIME{'image/tiff'} = 'ShellWeb::Parser::IMAGE';
>>$ShellWeb::MIME::MIME{'image/x-xbitmap'} = 'ShellWeb::Parser::IMAGE';
>>$ShellWeb::MIME::MIME{'image/xpm'} = 'ShellWeb::Parser::IMAGE';
>>1;
>>
>>
>>
>>
>
>
>--
>+--------------------------------------------+
> |By Alexe (http://www.alexe.cn)|
>+--------------------------------------------+
>
>
--
Best Regards,
Anthony WU
|