工作经历(四)——奔步

工作生活  |  3年前

当初在3G门户离职时,我还没有找到下家公司,甚至是还没开始找(因为不想一边上班一边找工作)。后来去了几家公司面试,待遇和工作内容都不太理想,奔步算是稍微好一点的,但还是没达到我的期望。考虑到HR说转正之后还有加薪机会(事实上,转正之后并没有调薪,算是被坑了一把),而且暂时也没有更好的选择了,所以就勉勉强强把自己卖了。

严格来说,奔步不属于互联网公司而是外包公司。公司业务分为两大块——设计外包(包装盒、海报之类)和技术外包(企业内部系统之类),分别由奔步广告设计有限公司和奔步电脑有限公司负责。而我和另外一位PHP工程师被安排在广告设计公司负责技术开发工作,主要原因是接的单来自广告设计公司的客户。

909次阅读,2条评论

从千分位格式化谈JS性能优化

前端开发  |  3年前

所谓的数字千分位形式,即从个位数起,每三位之间加一个逗号。例如“10,000”。针对这个需求,我起初写了这样一个函数:

// 方法一
function toThousands(num) {
	var result = [ ], counter = 0;
	num = (num || 0).toString().split('');
	for (var i = num.length - 1; i >= 0; i--) {
		counter++;
		result.unshift(num[i]);
		if (!(counter % 3) && i != 0) { result.unshift(','); }
	}
	return result.join('');
}
2303次阅读,3条评论

动态创建iframe在IE下的两个问题

前端开发  |  3年前

表单提交到动态创建的iframe

问题描述

以下代码,一般用于在当前页无刷新提交表单,其原理是把表单的target设为页面上某个iframe的id,使该iframe成为提交的目标,避免新开窗口或跳转。但这段代码在IE 6、7下无效。

<form action="http://www.baidu.com/" method="post" target="testframe">
	<input type="submit" value="Submit" />
</form>
<script>
var iframe = document.createElement('iframe');
iframe.id = 'testframe';
iframe.name = 'testframe';
document.body.insertBefore(iframe, document.body.firstChild);
</script>
1122次阅读,1条评论

通过WebRTC获取摄像头影像

前端开发  |  3年前

WebRTCWeb Real-Time Communication,网页实时通信),是一个支持网页浏览器进行实时语音对话或视频对话的API,目前已经是W3C的推荐标准。本文主要阐述如何通过WebRTC的接口获取摄像头影像并截图。

获取摄像头影像

要播放摄像头的影像,首先需要一个video标签:

<video id="video"></video>

获取摄像头影像主要是通过navigator.getUserMedia这个接口,在caniuse.com上查询一下这个接口的支持情况,可以看到目前只有Chrome和Firefox支持得比较好,而且都要加上自家的前缀,移动端几乎全线不可用。

getUserMedia支持情况

5103次阅读,3条评论

通过开发者工具监控事件触发

前端开发  |  4年前

我们经常会通过这样的代码去判断某个元素的某些事件有没有被触发:

$('body').on("click", function(e) {
	console.log(e);
});

事实上,Chrome开发者工具以及Firebug都提供了内置事件监控方法——monitorEvents。下面我们介绍一下具体用法。

审查一个元素,此时,你可以在控制台中通过变量$0获取这个元素:

$0变量

1061次阅读,2条评论

了解模块化开发

前端开发  |  4年前

小A是某个创业团队的前端工程师,负责编写项目的Javascript程序。

全局变量冲突

根据自己的经验,小A先把一些常用的功能抽出来,写成函数放到一个公用文件base.js中:

var _ = {
	$: function(id) { return document.getElementById(id); },
	getCookie: function(key) { ... },
	setCookie: function(key, value) { ... }
};

小A把这些函数都放在_对象内,以防过多的全局变量造成冲突。他告诉团队的其他成员,如果谁想使用这些函数,只要引入base.js就可以了。

小C是小A的同事,他向小A反映:自己的页面引入了一个叫做underscore.js的类库,而且,这个类库也会占用_这个全局变量,这样一来就会跟base.js中的_冲突了。小A心想,underscore.js是第三方类库,估计不好改,但是base.js已经在很多页面铺开,不可能改。最后小A只好无奈地把underscore.js占用的全局变量改了。

此时,小A发现,把函数都放在一个名字空间内,可以减少全局变量冲突的概率,却没有解决全局变量冲突这个问题

4115次阅读,4条评论

Javascript日期类型的妙用

前端开发  |  4年前

获取某个月份的天数

相信大家读小学的时候就知道一年十二个月各有多少天了,这里面有个特殊的存在——2月。闰年的2月有29天,非闰年的2月只有28天。估计不少人跟我一样,已经不记得闰年的规则了,这时候,下面的这个方法就派上用场了。

var date = new Date(2013, 2, 0);
date.getDate();  // 28
date = new Date(2012, 2, 0);
date.getDate();  // 29

创建Date对象时可以传入三个参数,分别是年、月(0~11,0表示一月)、日,如果日的参数为0,那创建出来的对象表示的就是上个月的最后一天,如此就可以知道上个月有多少天了。

同样的,我们也可以通过这个方法判断某年是否闰年:

function isLeapYear(year) {
	return new Date(year, 2, 0).getDate() === 29;
}
isLeapYear(2012);  // true
1289次阅读,2条评论

工作经历(二)——网易下篇

工作生活  |  4年前

文接上篇,本篇主要讲一下工作以外的事情。

入职

正式入职后,HR安排了一系列的培训,让新人熟悉公司的历史、文化、制度等。此外,公司还给应届毕业生组织了广州一日游,我虽是广州人,但广州的很多景点也没去过,所以也跟着一起去了。没想到这一去还闹出大麻烦了。旅游当天天气很热,车里面又有空调,结果进进出出,冷热切换频繁,导致重感冒,几天后的户外拓展也只好缺席了。

UED163.com

当年前端组和美术中心有一个团队博客,为了鼓励大家发文章,每个月都会进行一次投票,得票最多的前几篇文章的作者,可获得购物卡。久而久之,优秀文章也不少,部分文章还被转到蓝色理想。不过这个博客最终还是走向了没落,现在UED163.com已经不可访问了。

食堂与美食节

食堂在网易大厦10F,我刚入职那会儿,很多菜都是辣的,吃着很不习惯。后来换了家承包商,合口味多了。

每年中秋节前,公司都会举办一次美食节。简单来说,就是当天食堂有很多好吃的,想吃什么拿什么,想吃多少拿多少。不过糟糕的是,大家都忙着拿吃的,现场堵得水泄不通。

1021次阅读,3条评论

工作经历(三)——3G门户篇

工作生活  |  4年前

从网易离职之后,我选择了进入另一个领域——后端开发。之所以做这个选择,是想让自己的知识更全面些。后端技术中,我最熟悉的就是ASP.NET,找工作的时候自然也是往这个方向找。然而,做互联网的人都知道,能在自家产品中应用微软技术的,是少之又少,3G门户是其中一家。

用过手机上网的朋友都应该知道3G门户网站(3G.cn),它可以说是国内最早的移动门户网站。经过几轮面试,我顺利被这家公司录用,不过由于我在ASP.NET方面的经验并不丰富,所以薪资还是跟在网易的时候差不多。

公司给我安排的辅导员是一位项目经理(不过真正辅导我的是另一位同事),在他身上我学到了不少项目管理的经验,其中最有趣的是打牌。这里的打牌既不是锄大地也不是斗地主,而是评估某项功能工时的时候,每人以半天为时间单位打出自己的牌(比如1天,就打数字为2的牌)。如果大家评估的工时不一致,就得各自说明原因后再决定;如果大家都评估出较长的工时,则把这项功能分解为几项子功能后再评估。

1030次阅读,2条评论

写在《高达SEED重制版》即将结束之际

工作生活  |  4年前

我对《高达SEED》这部动画的印象是非常深刻的,除了剧情和机械设定的吸引,最重要的是它曾经带给我很多美好的回忆。

《高达SEED》首播期间,我在读高中。当时是每逢周六播一集,一般当天晚上就有生肉(没字幕的版本),第二天就有清晰度稍低的熟肉(带字幕的版本),大约一周后就有清晰度稍高的熟肉。那会儿家里还是用的56K拨号网络,下载一集的时间成本和金钱成本都挺高的,所以主要还是求助于家里有ADSL的亲戚和同学帮忙下载,再用一个旧硬盘拷回来。而那时候的硬盘容量还在几十G的水平,不断往里面塞视频的话,很快就会满。所以在凑够一定集数之后,我就把它们刻录成光盘保存。班上几个感情比较好的同学也问我借这些光盘,拷回家里看(成非法传播了)。

此外,我还开办了高达主题的网站和论坛,它们随着《高达SEED》的播出而红火,也随着《SEED Destiny》的结束而没落。这里面有我与几位网友的努力及不舍。

BBS.GundamGene.Net

1585次阅读,3条评论