2017-05-18知识分享

来源:互联网 发布:甘比面相很好知乎 编辑:程序博客网 时间:2024/06/08 19:39

ruby

hash的用法:

  • has_keys?(key)
  • delete_if{}
  • slice()和slice!()

xls和csv比较(引用,点击可以跳转原文链接)

  • 把数据写成csv格式文件。

    • csv文件可以直接用Excel打开。

    • 写csv文件的效率和写txt文件的效率一样高。

    • 同样的数据内容,生成的csv文件的大小远远小于生成的Excel文件。

从以上优点就可以看出生成csv文件消耗的内存绝对小于生成Excel文件。

  • 按一定的格式去生成csv文件,在Excel中打开的时候就是完整的行和列格式。

  • 看一下同样的数据内容,csv文件和Excel文件的大小对比:

导出excel确实有些麻烦,不能流式处理,导致占用比较大的内存,很容易导致内存溢出;并且excel的数据量是有限制的,不能超过65536行。
一旦超过,将无法生成excel文件。

用csv方式导出,则可以像导出txt一样,以文本流的方式进行流式处理,不但能导出海量信息,而且流式处理占用内存极低,服务器对浏览器的响应也是非常迅速的。轻松导出几百万行数据,理论上是不限量的。

不过,csv方式导出也存在问题:
首先,如果用excel来打开csv,超过65536行的数据都会看不见,这是excel程序的问题。

其次,如果你要导出一个身份证号码,手机号码,邮政编码等,纯数字构成的字符串,在excel中打开csv时,这些字段很容易被识别成数字,造成误解。
解决方法是在字符串前加“’”(单引号),然而这样处理后,excel打开scv时会看到这个“’”,又不对了,并且单击该单元格再离开后,这个单引号会自动消失,这是’在excel中的特殊用途导致的,如果此时再保存文件,文件中的’会丢失,如果再打开该csv文件,问题就更严重了,编码全成数字了(因为’丢了)!
看来这也是excel的问题。

上面两个问题按下不说的话,那么csv文件还是有些基本规则的,比如用”“括起来那么里面的”,”不会作为分隔符等转义操作。

总体而言,我也倾向于csv格式,它可以流式处理。

邮件附件过大无法发送问题

  • 每天通过rake统计数据时,需要将数据详情通过邮件附件形式发送,当附件超过限制之后,程序就会报错:“552 5.3.4 Error: message file too big”
    具体可参考:http://stackoverflow.com/questions/9396624/error-message-file-too-big-is-the-limit-on-outgoing-or-receiving-end

解决方式

目前想到的解决方式如下,如有更好的解决方式,欢迎交流
* 将邮件附件上传到远程,得到一个远程下载链接,并将下载地址附在邮件中,通过点击链接下载方式下载。

HTML

阻止浏览器标签关闭事件——onbeforeunload
关于jquery文档里的unload事件,在项目中尝试后并不可行,所以不建议使用jquery的unload方法。文档链接:http://jquery.cuishifeng.cn/unload.html

$(window).unload( function () { alert("Bye now!"); } );

DOM本身的方法:onbeforeunload
在火狐和chrome中试过,并不会弹出return中的内容,弹出的是该事件在当前浏览器下的内容。其他浏览器没有尝试过。

window.onbeforeunload=function(){ return 'MR.TAO IS THE GREATEST MAN OF THE WORLD!'};
  • 火狐:
    firefox
  • chrome:
    chrome

CSS

蒙版:
.cover-layer {
position: fixed;
top: 0px;
left: 0px;
width: 100%;
height: 100%;
background-color: #000;
opacity: 0.1;
display: none;
}

jquery

ajax请求返回partial

 <div class='show_params_box' id="box_<%= price_check_export.id %>">


$('.show_params').click(function(){
var id = $(this).attr('data-id');
var cover_layer = $('.cover-layer');
var box_id = '#box_'+id
var box = $(box_id)
$.ajax({
url: "/admin/zhuanchang/deal_price_checks/"+id+"/show_export_params",
type: "GET",
success: function(data){
cover_layer.show();
box.show();
box.html(data);
},
error:function(){
alert('服务器出错,请稍后重试!');
}
});
});

原创粉丝点击