上周我写了一篇快速获取图片大小的文章,参见《JavaScript快速获取图片宽高的方法》,在那篇文章里所获取的图片大小都是原始尺寸。既然这样,我今天为何还要再写一篇文章介绍如何获取页面上图片原始大小的方法呢?只是有些博友发邮件问我这个问题了,我感觉还是有必要写写。
通过去除样式获取原始大小
在JavaScript中获取页面中图片的大小都是最终样式呈现的大小,比如一张1000px宽的图片你给它设置宽为300px那么JavaScript获取到图片的宽度就是300px。
...
上周我写了一篇快速获取图片大小的文章,参见《JavaScript快速获取图片宽高的方法》,在那篇文章里所获取的图片大小都是原始尺寸。既然这样,我今天为何还要再写一篇文章介绍如何获取页面上图片原始大小的方法呢?只是有些博友发邮件问我这个问题了,我感觉还是有必要写写。
在JavaScript中获取页面中图片的大小都是最终样式呈现的大小,比如一张1000px宽的图片你给它设置宽为300px那么JavaScript获取到图片的宽度就是300px。
...
Golang写了一个小程序抓信息然后发送一个HTTP请求到指定的服务器
http.Get("/someapi")
服务运行了大概三天,发现有多处错误日志打印,并且转发没有工作
xxx dial tcp x.x.x.x:8070: socket: too many open files
判断了半天,发现是因为http创建的请求没有Close,导致连接数量过多,不能继续创建新的socket连接,解决方法很简单,在所有的请求都要Close
res, err := http.Get("/someapi")
if err != nil {
panic(err)
}
// 这句话很重要,就算你不需要响应数据,也需要总是关闭
defer res.Body.Close()
res.Close = true
...
在Linux中可以用tar打包目录以方便传输或者备份,我们先来看一个例子
test
文件夹有如下文件
[root@lee ~]# ll test
总用量 8
-rw-r--r--. 1 root root 0 4月 14 22:18 a.jpg
-rw-r--r--. 1 root root 0 4月 14 22:25 a.log
-rw-r--r--. 1 root root 0 4月 14 22:18 a.txt
-rw-r--r--. 1 root root 0 4月 14 22:18 b.jpg
-rw-r--r--. 1 root root 0 4月 14 22:25 b.log
-rw-r--r--. 1 root root 0 4月 14 22:18 b.txt
drwxr-xr-x. 2 root root 4096 4月 14 22:18 dir1
drwxr-xr-x. 2 root root 4096 4月 14 22:18 dir2
...
Nginx有时候POST请求是405错误,查到相关信息是说Nginx把请求的URL误认成静态页面地址,比如你定义的一个API如下
var express = require('express')
var app = express()
app.post('/handle.html', function (req, res) {
res.send('hello world')
})
以上代码,URL表面看好像是在请求服务器端的一个静态资源,但实际上是服务器端脚本在处理,解决方法是强制所有请求405都按200走,在server段加入以下代码
...
在Linux中Python默认是不安装Tkinter模块
[root@li250-193 ~]# python
Python 2.6.6 (r266:84292, Feb 22 2013, 00:00:18)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import Tkinter
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named Tkinter
>>>
...
Linode每周年都有惊喜,今天迎来十周年惊喜比往年力度要大!
流量内存翻十倍
现在登录Linode买VPS的朋友应该是升级后的配置,看看截图
价格也都涨了0.5刀,但这样的配置以及Linode的口碑实在很有诱惑力,VPS的性能主要就是内存,现在不少VPS提供商都在卖512M,设置diahosting还有180M/10刀/每月
新买用户能享受到升级,老用户同样也可以免费升级,在Dashboard标签的又下方有一个升级提示,点击它系统会引导你进入下一步升级,最后进入队列
...
快速获取图片的宽高其实是为了预先做好排版样式布局做准备,通过快速获取图片宽高的方法比onload方法要节省很多时间,甚至一分钟以上都有可能,并且这种方法适用主流浏览器包括IE低版本浏览器。
我们一步一步进入这个过程
// 图片地址 后面加时间戳是为了避免缓存
var img_url = 'https://www.qttc.net/static/upload/2013/13643608813441.jpg?'+Date.parse(new Date());
// 创建对象
var img = new Image();
// 改变图片的src
img.src = img_url;
// 打印
console.log('width:'+img.width+',height:'+img.height);
...
这道笔试题如下
var arr = ['第一次', '第二次', '第三次'];
for (var i=0; i < arr.length; i++) {
setTimeout(function () {
document.getElementById('info').innerHTML = arr[i];
}, i * 10000);
}
问你执行结果。第一眼看到这道题,我当即就知道考的是闭包,于是我最快就直接说三次的arr[i]
的值都是表示数组最后一个值,所以三次赋值结果都是第三次。时间是10秒第一次,20秒第二次,30秒第三次。
...
JavaScript原生函数没有提供判断DOM节点是否存在方法,我们通常获取DOM节点几乎都是document.getElement...
方法,会返回一个object数组合集,我们可以通过object[0],object[1]这样来访问这个合集的每一个对象。既然返回的是数组合集,那么就有length属性,而length大于等于1即表示DOM节点存在页面中
Code
Object.prototype.exist = function(){
if(typeof this !='undefined' && this.length >= 1){
return true;
}
return false;
};
...
使用给出的关联(或下标)数组生成一个经过URL-encode的请求字符串。参数formdata可以是数组或包含属性的对象。一个formdata数组可以是简单的一维结构,也可以是由数组组成的数组(其依次可以包含其它数组)。如果在基础数组中使用了数字下标同时给出了numeric_prefix参数,此参数值将会作为基础数组中的数字下标元素的前缀。这是为了让PHP或其它CGI程序在稍后对数据进行解码时获取合法的变量名
http_build_query有多种用法,不仅可以传入关联数组,同时也可以传入索引数组,甚至多维数组以及对象。
...