在調試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 閱讀(350) | 評論 (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 閱讀(855) | 評論 (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 閱讀(228) | 評論 (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 閱讀(170) | 評論 (0)編輯 收藏

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

          posted @ 2009-01-18 00:00 Robert Su 閱讀(155) | 評論 (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 閱讀(609) | 評論 (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 閱讀(1835) | 評論 (8)編輯 收藏




          subclipse的版本也是1.4,怎么會一直提示這個錯誤啊?哪位知道這個錯誤啊

          posted @ 2009-01-13 16:39 Robert Su 閱讀(231) | 評論 (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 閱讀(268) | 評論 (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 閱讀(174) | 評論 (0)編輯 收藏

          僅列出標題
          共11頁: First 上一頁 2 3 4 5 6 7 8 9 10 下一頁 Last 

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

          Copyright © Robert Su

          主站蜘蛛池模板: 涡阳县| 呼玛县| 墨玉县| 瓦房店市| 莆田市| 南投市| 广饶县| 色达县| 五台县| 河津市| 沙湾县| 静海县| 阳城县| 汪清县| 郧西县| 高安市| 辽源市| 新闻| 迁安市| 萨迦县| 昌吉市| 宜州市| 青川县| 交口县| 宁蒗| 修武县| 昌吉市| 岳阳县| 女性| 株洲县| 平利县| 永州市| 大荔县| 扎鲁特旗| 马龙县| 边坝县| 新和县| 黄大仙区| 石家庄市| 宜丰县| 永新县|