zoukankan      html  css  js  c++  java
  • 总结:*项目维护后的感想

    2019-09-03 20:51:13

    市面上好多版本的caipiao项目

    最近有个项目是php版本的,要做相关的维护,修改。

    客户买了一个现成的,做些修改。问题那个多呀。搞了几天,头大。

    不得不说原作者真是low到家了,好吧不批评人家了,还是说说所得吧!

    1、php网站问题

    因为mysql数据库版本问题导致的各种小问题:sql_mode

    a、not null 结果insert时候不给值会错误,没有任何提示的insert失败。STRICT_TRANS_TABLES

    b、group by 非强制列。ONLY_FULL_GROUP_BY

    附上sql_mode常用值:
    
    ONLY_FULL_GROUP_BY: 对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中
    NO_AUTO_VALUE_ON_ZERO: 该值影响自增长列的插入。默认设置下,插入0或NULL代表生成下一个自增长值。如果用户 希望插入的值为0,而该列又是自增长的,那么这个选项就有用了。
    STRICT_TRANS_TABLES: 在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做限制 
    NO_ZERO_IN_DATE: 在严格模式下,不允许日期和月份为零
    NO_ZERO_DATE: 设置该值,mysql数据库不允许插入零日期,插入零日期会抛出错误而不是警告。
    ERROR_FOR_DIVISION_BY_ZERO: 在INSERT或UPDATE过程中,如果数据被零除,则产生错误而非警告。如 果未给出该模式,那么数据被零除时MySQL返回NULL
    NO_AUTO_CREATE_USER: 禁止GRANT创建密码为空的用户
    NO_ENGINE_SUBSTITUTION: 如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常
    PIPES_AS_CONCAT: 将”||”视为字符串的连接操作符而非或运算符,这和Oracle数据库是一样的,也和字符串的拼接函数Concat相类似
    ANSI_QUOTES: 启用ANSI_QUOTES后,不能用双引号来引用字符串,因为它被解释为识别符
    

     

    2、apk问题

    客户需求打包apk性质访问,但是也成功遇到了webview版本兼容问题,低版本对js支持不够完美。

    webview用的是android系统内置模块,所以不同的android版本对应的webview不一致。

    a、webview 39版本,android 5.1;ES6语法不支持。layui倒是支持的不错的。

    b、webview版本低导致不能用chrome76远程调试页面,inspect不能成功调试js。

    c、alert、confirm不直接原生支持。要webview处理下。

    public class MainActivity extends AppCompatActivity {
    
        private WebView webView1;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            WebView.setWebContentsDebuggingEnabled(true);
            setContentView(R.layout.activity_main);
            webView1 = (WebView) findViewById(R.id.webView1);
            WebSettings webSettings = webView1.getSettings();
            webSettings.setJavaScriptEnabled(true);
            webView1.setWebViewClient(new WebViewClient());
            webView1.setWebChromeClient(new WebChromeClient() {
                @Override
                public boolean onJsAlert(WebView view, String url, String message, final JsResult result) {
    
                    AlertDialog.Builder builder = new AlertDialog.Builder(view.getContext());
                    builder.setTitle("")
                            .setMessage(message)
                            .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                                    result.confirm();
                                }
                            })
                            .setCancelable(false)
                            .create()
                            .show();
                    return true;
                }
    
                @Override
                public boolean onJsConfirm(WebView view, String url, String message, final JsResult result) {
                    AlertDialog.Builder builder = new AlertDialog.Builder(view.getContext());
                    builder.setTitle("")
                            .setMessage(message)
                            .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                                    result.confirm();
                                }
                            })
                            .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                                    result.cancel();
                                }
                            })
                            .setCancelable(false)
                            .create()
                            .show();
                    return true;
                }
    
                @Override
                public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, final JsPromptResult result) {
    
                    final EditText et = new EditText(view.getContext());
                    AlertDialog.Builder builder = new AlertDialog.Builder(view.getContext());
                    builder.setTitle("")
                            .setMessage(message)
                            .setView(et)
                            .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                                    result.confirm(et.getText().toString());
                                }
                            })
                            .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                                    result.cancel();
                                }
                            })
                            .setCancelable(false)
                            .create()
                            .show();
                    return true;
                }
            });
            webView1.loadUrl("http://192.168.0.107");
        }
    
    }
  • 相关阅读:
    BizTalk 2010 Adapter for mySAP Business Suite 所支持版本
    BizTalk Adapter Pack for Oracle 实现Oracle 11g的CRUD
    BizTalk 360 功能介绍 CTP版
    以小见大——那些基于 protobuf 的五花八门的 RPC(5 完)
    BizTalk Server 2010 + SQL Server 2008 R2 通过集成创造更大价值 [ 上篇 ]
    double to float
    Office 2003 PIA
    matlab传参数
    Convert.ToInt16
    矩阵转换
  • 原文地址:https://www.cnblogs.com/Running_Zhang/p/11455663.html
Copyright © 2011-2022 走看看