WP7开发总结

     经过零零散散的1个月的学习和开发,在摸索中终于将光明云媒(公司的应用)beta版发布商店了,中间遇到过很多问题,总结一下。

    1、WMAppManifest.xml中的相关信息最好填写一下。
    2、程序的弹出退出的窗口在App.xam.cs抛出一个异常。
        private class QuitException : Exception { }
        public static void Quit()
        {
            throw new QuitException();
        }
        程序中:
        #region 重构返回按钮键盘
        protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
        {
            base.OnBackKeyPress(e);
            MessageBoxResult result = MessageBox.Show("", "是否退出光明云媒吗?", MessageBoxButton.OKCancel);
            if (result != MessageBoxResult.OK)
             {
                 App.Quit();
              }
        }
        #endregion
     3、谨慎和合理使用IsolatedStorageSettings.ApplicationSettings。实现本地的存储。
     4、对于java的webserivce接口特别是xfire的,最好转换一下,用WCF进行转换在从客户端调用。
     5、所有的资源文件,PNG等在程序中用到了需要将他的属性中的生成操作修改为 内容
     6、UI中如果需要用到控件的自动换行,WrapPanel效果是不错的。WrapPanel+HubTile
     7、需要用开关按钮 使用 Microsoft.Phone.Controls.Toolkit的ToggleSwitchButton
     8、建议程序大量使用系统自带的色彩。(SolidColorBrush)Application.Current.Resources["PhoneAccentBrush"];
          默认的图标ICON最好是透明底。当然最重要是的是根据自己应用的特色。
     9、解决WP7中html在WebBrowser中乱码的问题的方法:
          public static string ConvertExtendedASCII(string HTML)
        {
            StringBuilder str = new StringBuilder();
            char c;
            for (int i = 0; i < HTML.Length; i++)
            {
                c = HTML[i];
                if (Convert.ToInt32(c) > 127)
                {
                    str.Append("&#" + Convert.ToInt32(c) + ";");
                }
                else
                {
                    str.Append(c);
                }
            }
            return str.ToString();
        } 

       摸索学习中遇到很多问题一直没有解决。比如说hubtile的拖拽。微博分享等都没更多事件去深入研究。

搜索引擎你叫我如何相信你

前沿:朋友写的PHP网站,最近几次后台大量数据被删除,URL地址经过变形处理的,绝对不是常见的后台URL地址,而且robots.txt中也增加了禁止爬虫访问规则:
User-agent: *
Disallow: /xxxxxxxx/
但是还是数据还是大量丢失,查看程序:

于是叫朋友写了一个日志记录。第二天电话告知我,删除又被删除了,发现了一个惊奇的现象
以下日志:
2012-05-12 19:37:52 DELETE – 220.181.94.229 – [220.181.94.229] – Sogou web spider/4.0(+http://www.sogou.com/docs/help/webmasters.htm#07) – /xxxxxxxx/managecategorydelete.php?smallclassid=47
是被爬虫删除的。
可是robots.txt中是禁止了爬虫的呀,而且还有cookie和session验证。
难道爬虫可以伪造cookie和session。
搜索引擎一搜索URL地址发现 后台的很多地址被URL地址被收录了。

搜索引起爬虫是一回事,但是程序上做了验证了的呀。
<?php
if($_COOKIE['login']=='' || $_session['adminlogin']==null){
    //redirect to login page
}
?>
应该不会存在问题呀。而且后台删除的URL地址还做了 onclick="",是否删除的JS提示。
cookie可以伪造,但是session不可以伪造。
后来仔细发现程序判断有点问题。

经过这事事件发现,国内很多搜索引起很不遵守robots规则,不要太相信搜索引擎。

Spring mvc hibernate的tomcat到weblogic迁移经历

前言:
      研发基于spring3 mvc+hibernate开发的一套WEBAPP应用,开发环境是在tomcat,想要迁移到IBM的大型机上进行测试。在迁移过程中,除了遇到程序的版本问题和jdk的版本问题,还有很多关于程序的问题。
      最大的问题就是包的冲突和缺少包,由于weblogic本身很多内置程序也使用spring框架,导致程序的jar和weblogic的jar冲突,导致程序无法正常启动。
问题:
1、无法加载spring hibernate的配置文件。
       因为程序开发中为了方便一般都使用  classpath:*.xml。由于spring包的版本问题无法扫描。需要一个一个指定。
       将所有需要加载的xml一个一个加载。如:/WEB_INF/class/springContext.xml;/WEB-INF/class/spring-servlet.xml等等
2、缺少joda-time-2.1包。
       网上搜索一个,copy到lib下即可。
3、hibernate报错java.lang.NoSuchFieldError: org/springframework/web/context/ConfigurableWebApplicationContext.APPLICATION_CONTEXT_ID_PREFIX
       程序的可能有多余的spring的jar包。删除sprin-web.jar
4、CharScanner; panic: ClassNotFoundException: org.hibernate.hql.ast.HqlToken
    在hibernate3中需要用到antlr.jar,然而这个包在weblogic.jar中已经包含了antrl类库,就会产生一些类加载的错误,无 法找到在war或者ear中的hibernate3.jar。而出现这个错误之后,antlr会调用System.exit(),这样weblogic就 会中止服务。
    解决方法:在hibernate.properties文件中增加属性:hibernate.query.factory_class,属性的值是 org.hibernate.hql.classic.ClassicQueryTranslatorFactory. 但是我用的是cfg.xml文件, 所以我就在hibernate.cfg.xml中的下面添加一条声明:

WP7实现左右手势的监听和处理

1、在构造函数中声明触摸事件监听
   Touch.FrameReported += new TouchFrameEventHandler(Touch_FrameReported);
2、Touch_FrameReported处理方法
   

        #region 手势滑动处理事件
        void Touch_FrameReported(object sender, TouchFrameEventArgs e)
        {
            StringBuilder sb = new StringBuilder();

            // 传入null表明获取到的触控点信息是以屏幕左上角为原点的。
            var primaryPoint = e.GetPrimaryTouchPoint(null);

            if (primaryPoint != null)
            {
                if (primaryPoint.Action == TouchAction.Down)
                {
                    this.startX = primaryPoint.Position.X;
                    //Debug.WriteLine("Position: X:" + primaryPoint.Position.X.ToString() + " Y:" + primaryPoint.Position.Y.ToString() + "\n");
                }
                if (primaryPoint.Action == TouchAction.Up)
                {
                    this.endX = primaryPoint.Position.X;
                    Debug.WriteLine("thisselecttempid:" + thisselecttempid + " \n");
                    //Debug.WriteLine("Position: X:" + primaryPoint.Position.X.ToString() + " Y:" + primaryPoint.Position.Y.ToString() + "\n");
                    if (startX - endX > CloudMediaApp.SWIPE_MIN_DISTANCE)
                    {//向左滑动
                       // Debug.WriteLine("move to left \n");

                    }else if(endX-startX>CloudMediaApp.SWIPE_MIN_DISTANCE)
                    {//向右滑动
                       // Debug.WriteLine("move to right \n");

                    }
                }

            }

        }
        #endregion

主流浏览器对HTML5的兼容性分析和总结

随着HTML5技术的普及和推广,Web开发社区逐渐开始尝试在RIA(富互联网应用)中使用HTML5,这种实践主要优势在于开发人员能够通过 HTML5的各种技术以一种前所未有的统一、简洁、无插件依赖的方式实现炫目、复杂的Web应用,HTML5的优越性已经得到了开发社区的普遍认可。不 过,就像其他Web技术诞生时的情况一样,作为新生儿的HTML5在各种Web浏览器中的实现程度或者说平台兼容性一直是Web开发人员的心病。本文将介 绍Web浏览器对HTML5技术的兼容性,希望能够帮助Web开发人员在应用HTML5技术时充分考虑到平台差异性。

    从2006年WHATWG和W3C决定合作制定HTML5标准以来(预计2012年成为候选标准),浏览器厂商都不甘落后,一直在努力实现更多的 HTML5技术,不过由于各个厂商的步伐不一,导致HTML5在浏览器中的实现程度参差不齐。在这里我们将综合两种HTML5兼容性测试工具包 HTML5Test和Modernizr的测试结果来分析一下Web浏览器的支持程度。

考虑到HTML5标准的制定原则:新特性基于HTML、CSS、DOM 以及 JavaScript;减少对外部插件的需求(比如Flash);独立于设备等,我们选取了HTML 5的几项主要特性来评价浏览器系统。

  • 视频播放标记video
  • 音频播放标记audio
  • 绘图标记canvas
  • 表单控件标记url、email等
  • 本地客户端存储

Continue reading ‘主流浏览器对HTML5的兼容性分析和总结’ »