在调试JavaScript时可以在代码中加入一些行,来作为判断条件
 1,alert();
 如果你的代码出错崩溃了,你可以在预期出错位置之前加入该语句,判断错误是否在该位置之后!多次加入,就可以逐渐靠近错误位置了;如果使用alert() 只是为了查看变量值,有时候将变量值在window.status上显示出来更好;
2,confirm();
该函数会根据你的选择返回true或者false,于是你可以选择分支执行了;
3,prompt();
 这个就更厉害了,你可以使用它把你的变量值给修改了;比如:s="我不知道";s=prompt("请设定",s);你可以在这里把s给修改成"我爱 你!",嘿嘿! 让程序有应付某些异常的功能是必要的: 要想得到详细的错误报告你可以使用 window.onerror 或 try..catch 语句。这会让代码直接运行,不会因某个错误而终止挂起,从而在代码执行完成后报告出所有的错误。 建议: 把代码缩排做好;养成一些良好的习惯,通俗说是风格。 调试工具: 工具有很多,用着顺手就好了,我有VS就不需要别的了。这里有很多别人列举的工具,我也没用过:


在IE中一定要启用错误报告。如果使用的是 windows,可以利用 Microsoft Script Debugger。如果需跟踪一个错误,你可以利用角本中的 debugger 关键字控制角本在调试模式下执行。
推荐主要使用 ie 测试,用 op7 或 moz 来调试。
在 Op7 当中,一定要启用 在JavaScript Console 中 JavaScript 错误报告。
Op7 的 JavaScript Console 远比 ie 错误报告要好些,拥有更好的代码跟踪功能,更容易看到函数调用来源。并且可以报告出正确的错误行,不同于 iew 。 在 moz 中有很多工具。可利用 Mozilla JavaScript Console,它可以报告错误和警告,并且允许做简单的角本赋值。可以启用严厉警告提示出许多潜在错误位置。可以使用 DOM Inspector 显示 document 树,stylesheets 树,computed styles,JavaScript 对象。
可以用 Venkman (Mozilla JavaScript Debugger)获取更高级的 JavaScript 调试工具。可供使用的有 Ian Hickson’s JavaScript Evaluation Sidebar 或者 Jesse Ruderman’s JavaScript Environment、view scripts bookmarklet、JavaScript Shell 或者 view variables bookmarklet 或者 ViewScripts bookmarklet 。 在 konq 当中,靠自己的力量要更多些,使用一些源代码的技巧。
 在 saf 中需要启用隐藏调试菜单(Hiden debug menu),不用在系统控制台显示毫无意义的错误信息,使用 Show DOM Tree 功能会更有用。如果你启用了显示调试菜单,Safari不运行,在终端使用下面的命令: defaults write com.apple.Safari IncludeDebugMenu 1

posted @ 2009-02-12 15:44 Robert Su 阅读(343) | 评论 (0)编辑 收藏

今天遇到一个容易忽略的问题,是两个Long类型的比较~~

if (v.getId() == ids[i]){
                      ……
                    }

getId()中返回值是Long id
ids定义是Long[] ids

但是这里v.getId() == ids[i]一直不为真,导致程序输出结果有误

应该如下:

if (v.getId().longValue() == ids[i].longValue()){……}

posted @ 2009-02-10 12:18 Robert Su 阅读(843) | 评论 (0)编辑 收藏

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
<mx:XML source="t.xml" id="stockData" />
<mx:Panel title="Stock Data" width="100%" height="100%" layout="vertical"
paddingBottom="10" paddingLeft="10" paddingRight="10" paddingTop="10">

<mx:HBox><mx:Label text="Start Day" />
<mx:HSlider minimum="0" maximum="30" id="dayslider" snapInterval="1" />
</mx:HBox><mx:DataGrid dataProvider="{stockData..day.(num >= daySlider.value )}" width="100%" height="100%">
<mx:columns>
<mx:DataGridColumn dataField="num" headerText="day" />
<mx:DataGridColumn dataField = "compa" headerText="Company A" />
<mx:DataGridColumn dataField = "compb" headerText="Company B" />
</mx:columns>
</mx:DataGrid>
</mx:Panel>
</mx:Application>


为什么没效果~效果应该是下图所示


 

哪位大侠知道的给帮忙看下吧~

posted @ 2009-01-24 15:46 Robert Su 阅读(224) | 评论 (0)编辑 收藏

http://www.infoq.com/cn/articles/flex-xml-json

Flex与JSON及XML的互操作


http://www.airia.cn/FLEX_Directory/

FLEX教程

http://www.adobe.com/cn/devnet/flex/quickstart/coding_with_mxml_and_actionscript/

adobe官方入门教程



posted @ 2009-01-18 00:40 Robert Su 阅读(163) | 评论 (0)编辑 收藏

http://www.cnblogs.com/analyzer/archive/2008/01/25/1052333.html

posted @ 2009-01-18 00:00 Robert Su 阅读(148) | 评论 (0)编辑 收藏

create or replace view v_allinfo_stat_by_site as
select a.*,b.BLACK_COUNT,b.WHITE_COUNT,b.GRAY_COUNT,b.AUTHOR_COUNT,group_count,audit_count,vblog_org_count,valbum_count from v_video_stat_by_site a,
v_vblogger_stat_by_site b,
(select count(*) group_count,site_id from vblogger_group group by site_id) c ,
(select count(*) audit_count,site_id from audit_web_video group by site_id) d ,
(select count(*) vblog_org_count,site_id from vblogger_org group by site_id) e ,
(select count(*) valbum_count,site_id from valbum group by site_id) f
 where a.site_id = b.site_id(+) and
 a.site_id = c.site_id(+) and
 a.site_id = d.site_id(+) and
 a.site_id = e.site_id(+) and
 a.site_id = f.site_id(+)
 order by a.all_count desc;


c,d,e也是相当于视图
a、b本身就是视图


存储过程
create or replace procedure UPDATE_VBLOGGER_MONTHLY_WEEKLY as
  v_now_date  NUMBER;
begin
--按月统计
   SELECT TO_NUMBER(TO_CHAR(sysdate,'YYYYMM'))INTO v_now_date FROM dual;
   update vblogger v set v.monthly_video_count=0;
   update vblogger v set v.weekly_video_count=0;
COMMIT;   
   update vblogger v set v.monthly_video_count=(select count(*) from web_video w where GET_TIME_FORMAT(1,w.video_day)=v_now_date and v.site_id=w.site_id and v.name=w.video_author group by w.site_id,w.video_author) ;
--按周统计
     SELECT TO_NUMBER(TO_CHAR(sysdate,'YYYYFMWW'))INTO v_now_date FROM dual;
     update vblogger v set v.weekly_video_count=(select count(*) from web_video w where GET_TIME_FORMAT(3,w.video_day)=v_now_date and v.site_id=w.site_id and v.name=w.video_author group by w.site_id,w.video_author) ;
COMMIT;
end;

posted @ 2009-01-17 10:56 Robert Su 阅读(599) | 评论 (0)编辑 收藏

后台是spring + hibernate + freemarker

这个模块也是整个系统中的一小部门。从中对于XSL的使用,XSL很好很强。



并且对EXT中的vtype验证方式有了更加全面的总结。


贴代码:RssAction.java

public class RssAction extends BaseActionSuport {
    private static RssService rssService;
    private Collection<Rss> rsses;
    private static final Logger logger = Logger.getLogger(RssAction.class);
    private String rssname; // RSS名称
    private String rssurl; // RSS地址
    private String defaultUrl; // defaultUrl地址
    private String url;// URl地址
    private String rssPath;
    private Long deleteId;

    public Long getDeleteId() {
    return deleteId;
    }

    public void setDeleteId(Long deleteId) {
    this.deleteId = deleteId;
    }

    public String getRssname() {
    return rssname;
    }

    public void setRssname(String rssname) {
    this.rssname = rssname;
    }

    public String getRssurl() {
    return rssurl;
    }

    public void setRssurl(String rssurl) {
    this.rssurl = rssurl;
    }

    public String deal() {
    try {
        Rss rss = new Rss();
        logger.debug("rssname:" + rssname);
        logger.debug("rssurl:" + rssurl);
        rss.setName(rssname);
        rss.setUrl(rssurl);
        rssService.create(rss);
    } catch (Exception e) {
        logger.error(e.toString());
        return this.ERROR;
    }
    return this.SUCCESS;
    }

    public String rssDelete() {
    try {
        logger.debug("deleteId:" + deleteId);
        rssService.deleteById(deleteId);
    } catch (Exception e) {
        logger.error(e.toString());
        return this.ERROR;
    }
    return this.SUCCESS;

    }

    public String listAll() {
    try {
        rsses = rssService.listAllRss();
        return this.SUCCESS;
    } catch (Exception e) {
        logger.error(e.toString());
        return this.ERROR;
    }
    }

    public String getRss() {
    HttpURLConnection conn = null;
    InputStream ios = null;
    ByteArrayOutputStream out = null;
    ActionContext ctx = ActionContext.getContext();
    HttpServletRequest request = (HttpServletRequest) ctx.get(ServletActionContext.HTTP_REQUEST);

    try {

        URL addr = null;
        if (url == null || url.trim().length() == 0) {
        addr = new URL(defaultUrl);
        } else {
        addr = new URL(url);
        }
        conn = (HttpURLConnection) addr.openConnection();
        conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5");
        conn.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
        conn.setRequestProperty("Accept-Language", "zh-cn");
        conn.setRequestProperty("Accept-Charset", "gb2312,gbk,utf-8;q=0.7,*;q=0.7");
        String contentType = conn.getContentType();
        String contentEncoding = conn.getContentEncoding();
        int statusCode = conn.getResponseCode();
        int length = conn.getContentLength();

        if (logger.isDebugEnabled()) {

        // logger.debug("contentType:" + contentType);
        // logger.debug("contentEncoding:" + contentEncoding);
        // logger.debug("statusCode:" + statusCode);
        // logger.debug("length:" + length);
        }
        if (contentEncoding == null) {
        if (contentType != null) {
            contentEncoding = getCharSet(contentType);
        }
        if (contentEncoding == null) {
            contentEncoding = "UTF-8";
        }
        else if(contentEncoding.equals("ansi"))
            contentEncoding = "GBK";
        }
        ios = conn.getInputStream();
        out = new ByteArrayOutputStream();
        
        byte buffer[] = new byte[1024];

        int len = 0;
        while ((len = ios.read(buffer)) != -1) {
        out.write(buffer, 0, len);
        }
        out.flush();
        logger.debug("contentEncoding:" + contentEncoding);
        String rssData = new String(out.toByteArray(), contentEncoding);
        //logger.debug("rssData:"+rssData);
        String rssDa = rssxsl(rssData);
        request.setAttribute("rssData", rssDa);
        request.setAttribute("Encoding", contentEncoding);
        return this.SUCCESS;
    } catch (Exception e) {
        logger.error(e.toString());
        e.printStackTrace();
        return this.ERROR;
    } finally {

        if (out != null) {
        try {
            out.close();
        } catch (IOException e) {
            logger.error(e.toString());
        }
        }
        if (ios != null) {
        try {
            ios.close();
        } catch (IOException e) {
            logger.error(e.toString());
        }
        }

        if (conn != null)
        conn.disconnect();

    }
    }

    public RssService getRssService() {
    return rssService;
    }

    public void setRssService(RssService rssService) {
    this.rssService = rssService;
    }

    public Collection<Rss> getRsses() {
    return rsses;
    }

    public void setRsses(Collection<Rss> rsses) {
    this.rsses = rsses;
    }

    public String getName() {
    return rssname;
    }

    public void setName(String name) {
    this.rssname = rssname;
    }

    public String getRssPath() {
    return rssPath;
    }

    public void setRssPath(String rssPath) {
    this.rssPath = rssPath;
    }

    public String getRssUrl() {
    return rssurl;
    }

    public void setRssUrl(String rssUrl) {
    this.rssurl = rssurl;
    }

    public String getUrl() {
    return url;
    }

    public void setUrl(String url) {
    this.url = url;
    }

    public String getDefaultUrl() {
    return defaultUrl;
    }

    public void setDefaultUrl(String defaultUrl) {
    this.defaultUrl = defaultUrl;
    }

    private String getCharSet(String contentTypeEnd) {
    if (contentTypeEnd != null) {

        int pointer = contentTypeEnd.indexOf('=');
        if (pointer > 0) {
        String result = contentTypeEnd.substring(pointer + 1);
        result = result.trim();
        if (result != null) {
            if (result.length() > 0) {
            if (result.charAt(0) == '"') {
                if (result.charAt(result.length() - 1) == '"') {
                result = result.substring(1, result.length() - 1);
                }
            } else if (result.charAt(0) == '"'') {
                if (result.charAt(result.length() - 1) == '"'') {
                result = result.substring(1, result.length() - 1);
                }
            }
            }
        }
        return result.trim().toLowerCase();
        }
    }
    return null;
    }

    private String rssxsl(String rssData) {
    String formerStr = "";
    HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
    String path = request.getRealPath("");
    path = path + rssPath;
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    XMLWriter writer = null;
    try {
        TransformerFactory tFactory = TransformerFactory.newInstance();
        Transformer transformer = tFactory.newTransformer(new javax.xml.transform.stream.StreamSource(path));
        transformer.transform(new javax.xml.transform.stream.StreamSource(new StringReader(rssData)), new javax.xml.transform.stream.StreamResult(out));
        formerStr = new String(out.toByteArray(), "UTF-8");
        formerStr = removeXmlHead(formerStr);

    } catch (Exception e) {
        logger.error(e.toString());
    } finally {
        if (writer != null) {
        try {
            writer.close();
        } catch (IOException e) {
            logger.error(e.toString());
        }
        }
        try {
        out.close();
        } catch (IOException e) {
        logger.error(e.toString());
        }

    }
    return formerStr;

    }

    private String removeXmlHead(String content) {
    if (content == null) {
        return null;
    }
    content = content.trim();
    if (content.indexOf("<?xml") != 0) {
        return content;
    }
    int index = content.indexOf("?>");
    if (index < 0) {
        return content;
    }
    content = content.substring(index + 2);
    return content;
    }
}


RssServic.java代码

import java.util.Collection;
import gov.ict.mcg.vbm.pojo.Rss;

public interface RssService {
     public void create(Rss rss) throws Exception;
     public void deleteById(Long id) throws Exception;

     public Collection<Rss> listAllRss() throws Exception;
}

RssServiceImp.java 代码:

import java.util.Collection;

import org.apache.log4j.Logger;

import gov.ict.mcg.vbm.dao.RssDao;
import gov.ict.mcg.vbm.pojo.Rss;
import gov.ict.mcg.vbm.services.RssService;

public class RssServiceImpl extends BaseService implements RssService {

    private static final Logger logger = Logger.getLogger(RssServiceImpl.class);
    private RssDao rssDao;

    public RssDao getRssDao() {
    return rssDao;
    }

    public void setRssDao(RssDao rssDao) {
    this.rssDao = rssDao;
    }

    public void create(Rss rss) throws Exception {
    try {
        rssDao.create(rss);
    } catch (Exception e) {
        throw new Exception();
    }
    }

    public Collection<Rss> listAllRss() throws Exception {
    return rssDao.listAll();
    }

    public void deleteById(Long id) throws Exception {
    try {
        rssDao.deleteByIdCommit(id);
    } catch (Exception e) {
        throw new Exception();
    }
    }

}

下面是控制显示的simple.xsl

<xsl:stylesheet xmlns:x="http://www.w3.org/2001/XMLSchema"
version="1.0" exclude-result-prefixes="xsl ddwrt msxsl rssaggwrt"
xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime"
xmlns:rssaggwrt="http://schemas.microsoft.com/WebParts/v3/rssagg/runtime"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:rssFeed="urn:schemas-microsoft-com:sharepoint:RSSAggregatorWebPart"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:rss1="http://purl.org/rss/1.0/" xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
xmlns:atom2="http://purl.org/atom/ns#" xmlns:ddwrt2="urn:frontpage:internal">

<xsl:template match="/">
<xsl:for-each select="/rss/channel/item">
<div class="item">
 <div><h4><a href="{./link}" target="_blank"><xsl:value-of select="./title"/></a></h4></div>
 <div>
     <font style="font-weight: bold" face="Courier New" size="2" bold="true">标签: </font><font face="Courier New" size="2">
     <xsl:value-of select="./itunes:keywords"/>     ||       
     <xsl:value-of select="./pubDate"/></font>
</div>

 <div class="content" id="content">
 <xsl:value-of select="./description" disable-output-escaping="yes"/>
 <xsl:if test="system-property('xsl:vendor')='Transformiix'">
 <script type="text/javascript">
 var element = document.getElementById("content");
 element.innerHTML = element.textContent;
 </script>
 </xsl:if>
 </div>
</div>
</xsl:for-each>
</xsl:template>

</xsl:stylesheet>

posted @ 2009-01-13 22:42 Robert Su 阅读(1827) | 评论 (8)编辑 收藏




subclipse的版本也是1.4,怎么会一直提示这个错误啊?哪位知道这个错误啊

posted @ 2009-01-13 16:39 Robert Su 阅读(223) | 评论 (0)编辑 收藏

之前做联合查询很慢也很麻烦;需要对web_video表跟webvideo _day视图做联合查询,但是速度奇慢
select a.* from web_video a  webvideo b where a.id=b.id and a.site_id=?

换成这种方式之后就快多了
select a.* from web_video a where a.site_id=? and a.video_day=to_number(to_char(sysdate, 'yyyymmdd'));

video_day是一个物化视图 MATERIALIZED VIEW——可以大大提高数据库查询的速度。

posted @ 2009-01-12 21:55 Robert Su 阅读(255) | 评论 (0)编辑 收藏

 看到网上说select * from ( select row_.*, rownum rownum_ from (sql) row_ where rownum <= ?) where rownum_ >?
这种方法是最快的,特做实验验证之

select row_.*, rownum rownum_ from (select * from web_video) row_ where rownum BETWEEN 1 and 100
0.05675s 0.1181s
select row_.*, rownum rownum_ from (select * from web_video) row_ where rownum BETWEEN 100 and 1000
22.269s
select * from ( select row_.*, rownum rownum_ from (select * from web_video) row_ where rownum <= 100) where rownum_ >0

0.156s
select * from ( select row_.*, rownum rownum_ from (select * from web_video) row_ where rownum <= 1000) where rownum_ >100
0.037s

posted @ 2009-01-06 00:41 Robert Su 阅读(169) | 评论 (0)编辑 收藏

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

posts - 103, comments - 104, trackbacks - 0, articles - 5

Copyright © Robert Su