2018年08月

  • 使用 YUI Compressor 压缩 CSS 导致 image/svg+xml 无法显示的问题

    2018-08-06 22:04:20 1460 0 技术文章

    bootstrap 升级到 4.3 以后,.navbar-toggler-icon 的背景是一个 svg 图像,但被压缩后,url 中的空格全部消失了,所以无法显示这个图标。

    .navbar-light .navbar-toggler-icon { background-image: url(data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://ww…p='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E); }
    

    于是想到修改 java 代码,重新编译。

    https://github.com/yui/yuicompressor/blob/master/src/com/yahoo/platform/yui/compressor/CssCompressor.java
    

    修改源码

    找到 CssCompressor.java,修改第 141 行,

    css = this.preserveToken(css, "url", "(?i)url\\(\\s*([\"']?)data\\:", true, preservedTokens);
    

    改为

    css = this.preserveToken(css, "url", "(?i)url\\(\\s*([\"']?)data\\:", false, preservedTokens);
    

    重新编译

    安装 ant

    # yum -y install ant
    # ant // 编译为 jar 文件
    

    生成 .jar 文件位于 build 目录。

    THE END

  • 2058 年的假设

    2018-08-06 13:06:07 1465 0 生活随笔

    IMG_3547.JPG

    我看完后,眼睛湿润了,这只是假设,但现实情况时间是不可倒流的。

    为了 2058 年的今天不后悔,那么我们就:珍惜现在,活在当下,行在今日。

    • Tengine 2.2.2 配置 http2 协议出现的坑

      2018-08-01 12:46:11 2113 1 技术文章

      昨天本站将 nginx 配置改为支持 http2 协议,发帖,浏览帖子都很正常,但上传图片出现 504,改回 http 1.1 恢复正常,于是确定是配置 http2 造成的恶果,于是 google 搜索 "tengine http2 504" 等关键字,最终发现了阿里官方 issue:

      https://github.com/alibaba/tengine/issues/1003

      此 issue 作者遇到同样的情况:

      从 nginx 1.10.1 升级为 tengin 2.1.2 后, 用户通过 multipart/form-data 上传文件时 如果文件大于 1M 就会上传失败 抓包分析后,发现在用户在上传大文件时,http body 内容不完整 导致 java MultipartHttpServletRequest request 拿到的 request.getFileNames() size 为 0

      抓取了 tengin 与 tomcat 之间的报文,异常报文中 http body 内容异常

      看这个 issue,确定是 2.2.2 的一个 BUG,接着回退到 2.2.1,问题依旧,回退到 2.2.0,问题得到解决。

      在此提醒大家,如果使用 Tengine 需要配置 http2,建议不要使用 2.2.1 和 2.2.2 版本。