10 / 07 / 2015 buling

《暖暖内含光》
讲述故事的方式很特别,珍惜眼前,享受当下的爱情就足够。片尾曲很好听,Everybody’s Gotta Learn Sometimes –2015.11.22

《荒野生存》
很容易让人很冲动的电影,也想抛弃世俗的成见,放弃物质欲望的追逐,寻求生存的意义。真实的故事总是发人深省,让人敬畏别人的能 –2015.11.20

《弱点 The Blind Side》
很励志,每个人都有自己的发光点,简单的爱能融化一切,把喜欢擅长的事情发挥的淋淋尽致就赢了 –时间未知

《极速风流》
每个人在每件事上都有风险控制线,超过了适可而止;成功固然重要,相比你有的幸福,珍惜更好。 –2015.07.19

《编舟记》
以为大大咧咧的是生活,小心翼翼的更美好。把一生献给了一件事情,最后未必荣耀灌体,但对于你和懂你的人,这一生,很有意义。 –2015.07.10

《百元之恋》
丑是因为你懒,和自己赌气,和那个深藏的梦想赌气,最后是你,即便是输了你也成功。– 2015.07.08

06 / 06 / 2015 buling

1、单行超出省略号方法
限定高宽, 设置css:overflow: hidden; text-overflow:ellipsis; white-space:nowrap;

2、多行超出省略号方法
css:overflow: hidden; display: -webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical;

3、rgba的向下兼容方法
css:background:#ccc; background:rgba(0, 0, 0, 0.8);

=========================JS============================
1、获取窗口大小

View Code JAVASCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
function getWindowHeightAndWidth(){
    var obj = window,
        sname = 'inner';
    if(!('innerWidth' in window)){
        sname = 'client';
        obj = document.documentElement || document.body;
    }
    return {
        width : obj[sname+'Width'],
        height : obj[sname+'Height']
    };
}

2、array-like object 在jquery中的使用方法。如果需要让一个object在console.log时看起来像一个数组

View Code JAVASCRIPT
1
2
3
//The object has to have length and splice
var x = {length:2, '0':'foo', '1':'bar', splice:function(){}};
jQuery.fn.init.prototype.splice = [].splice;

3、摇一摇时禁止Iphone在页面提示“撤销键入”

View Code JAVASCRIPT
1
2
3
4
$(window).off('devicemotion').on('devicemotion',function(eventData){
    //dosomething(eventData.accelerationIncludingGravity);
    eventData.preventDefault(); //就是这句了
});

4、禁止页面被拖动
//去掉IOS滚动到顶部回弹一下的效果

1
<meta name="apple-mobile-web-app-capable" content="yes" />
View Code JAVASCRIPT
1
2
3
4
5
6
7
8
9
//这里是列表可以滚动
$('#J_userchat-list').on('touchmove', function(event){
    event.stopPropagation();
});
//全局阻止移动,防止页面被拽
$(document).on('touchmove', function(event){
    //$('#J_page-box-1').prepend('<div>move body</div>');
    event.preventDefault();
});
无标签信息 0 条
31 / 12 / 2015 admin

咚,又是两个月没更新了,2015年的最后一天,来总结一下这一年,再期望一下2016.

很多时候我都觉得时间过得太快,来不及想回想也是多年,10年毕业,一晃5年,再看,一无所有,时间总是在不经意间走过,虽然很少感觉到会有无聊的时间,相比很多时候都是很忙,上半年不知道再玩什么,除了工作还是工作吧。

已经12点了….20分钟写了几个字

下半年,受到一些刺激,突然很想赚钱,疯狂的想赚钱。以前我不太想接外包项目,觉得很累,那本不该成为的我一样。D又找我帮忙,我就答应了,之后同事L介绍了个朋友需要做m站,这是今年下半年的第二笔收入吧。快到年底了,太多运营需求让我倍感苦恼,讨厌花了时间却做给几个人用的产品。我一直忍着,因为到年终了。总有很多事情不是能那么随性。很有可能考核一般,还没有拿到结果,不过已经不再重要。

前几周,P过来和我一起聊了一下图站,很是诱惑,花费了一周多时间撸了一个图片站,已经上线了好几天了,今晚,IP2k,PV3.5w;有帮带量,等待搜索收录。有量的感觉很好,曾经也折腾过,迟迟看不到希望,最后不得不放弃。

昨天,D过来问我2016年,其实我不是很愿意过去,主要是不想加班,直接表明我希望2016年能为了钱做事,他表示很理解,我更愿意选择Z,但和D实在是太熟,没有办法拒绝,他说同价位就不要考虑别家了。

啊,已经是今天了,买了今天一早去长沙的票,和Y,新年第一天就为了一些事情开始忙碌起来了,这一年要多劳累多努力,结果不是很重要,等16年的总结。

过去的就让它过去吧,2016,来,多尝试,多结交,happy new year!

-2016.01.01 00:45

01 / 11 / 2015 buling

周1看了一下公众号后台,然后再仔细体验了一下,实在太难用了,难用到自己都不想用,但公众号后台限制不认证拿不到openid没有办法记录用户操作,极大影响体验。周2想起了万能的淘宝,果然没有让我失望,400块搞定,其中300块是公众号本身认证费用,卖家赚100。

周5下午,老大出去了,工作也在可控范围,然后做了一下午,晚上和朋友吃火锅,回来10点,继续,到早上6点基本完成了重构工作,用的那台联想本,屏幕效果渣到我眼睛都要瞎掉,6点睡觉,10点钟小碗电话要我和他们去南澳,实在不想去,以下午要去卡丁车拒绝了,下午xp约的卡丁车,一行9人,参加公司羽毛球认识了一些人。4点过到,排队到5点,15分钟90块的,确实很爽,总觉得要飞出去其实不会,最后30多人跑了个13名,比第一少了两圈,改天再试,必定好很多。

说跑题了,回到公众号,更新完成后就我自己体验好了很多,方便查询深圳通卡余额,方便查看自己收藏的班车,早上6点上线,到晚上用户量并没与太大增加,然后我去看了cnzz数据统计,发现还有搜索引擎的量,因为上线的时候是微信外不能正常使用,晚上又修改了,本身是打算中午群发升级文章,想了想算了,会骚扰用户,昨天晚上2点发出去了,一会就又8个访问量,看粉丝,直掉,证明了理论。今天早上看了一下,大概掉了几十个,还好,新增了10几个,基本没有影响,今天有200多IP,之前PV量基本过千,现在改为spa(单页应用)不好统计PV了。做点用户量还是很难,没有关键点打动用户就没办法

前几天携程和去哪儿合并了,那晚我在去哪儿涨了14%的时候买入,到了21%没卖,晚上起来两次都是15左右,实在不想买,早上起来直接到了7%,然后第二天晚上开盘就跌成-7%,一下子就亏了21%,我还拿了小郭的一起炒,实在是内疚,后半夜10点过蹭蹭涨起来了,睡觉前卖掉了,还可以,第二天看到twitter盘前大跌10%,我觉得是机会,然后又一起砸进去了,慢慢涨起来了,虽然不是最高点卖,还是可以,又抄了gopro,现在还没回来,之前我本比较多,但后来亏在唯品会和聚美了,小郭后来进来的本金比我多,然后上周5我决定收购小郭多余的股份,花了1w5,终于我们各占50%了,哈哈

原来这么久没写文章了,本来10.1是打算去贵州,王风结婚,因为我兼职的事情10.1要敢最后和大学4友商议直接打钱。然后10.1的时间全部砸在那事上了,事实证明,付出才会有回报。最近确实做了很多手机方面的开发,越来越有收获,微信智能硬件的相关绑定,交互,微信确实设计的很好。后来又做一个手机站,spa,花了很多时间就为了更好的体验,效果也还可以。

以前总觉得生活很重要,突然也想这样也想那样,有了欲望的时候,就什么都想做了。

从app页面选择手机中的图片一般都比较大,动则N个M,然后页面就挂在那里玩了,接下来就是讨论解决方案,之道的img压缩方案就是使用canvas压缩图片,那现在问题变为canvas压缩图片后如何上传的问题了
1、从input file中读出图片的方法

View Code JAVASCRIPT
1
2
3
4
5
6
7
var loadImageFromFile = function(file, callback) {
    var reader = new FileReader();
    reader.onload = function (e) {
        callback(e.target.result);
    };
    reader.readAsDataURL(file);
};

参考链接:https://hacks.mozilla.org/2011/01/how-to-develop-a-html5-image-uploader/

2、使用canvas压缩图片同上链接已给出

3、canvas转为blob格式

View Code JAVASCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var dataURItoBlob = function(dataURI){
    var byteString;
    if (dataURI.split(',')[0].indexOf('base64') >= 0)
        byteString = atob(dataURI.split(',')[1]);
    else
        byteString = unescape(dataURI.split(',')[1]);
    // separate out the mime component
    var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];
 
    // write the bytes of the string to a typed array
    var ia = new Uint8Array(byteString.length);
    for (var i = 0; i < byteString.length; i++) {
        ia[i] = byteString.charCodeAt(i);
    }
    return new Blob([ia], {type:mimeString});
};

参考链接:http://stackoverflow.com/questions/4998908/convert-data-uri-to-file-then-append-to-formdata

4、异步上传,新建一个formdata对象,添加blob到formdata中

View Code JAVASCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var formdata = new FormData();
formdata.append('imgfile', blob);
 
var url = "upload.php";
$.ajax({
    type:'POST',
    url:url,
    data:formdata,
    contentType:false,
    processData:false,
    success : function(jdata){
        console.log(jdata);
    }
});

综上所述给一个Helper

View Code JAVASCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
var ScaleImageHelper = {
    //从FILE中加载img
    loadImageFromFile : function(file, callback) {
        var reader = new FileReader();
        reader.onload = function (e) {
            callback(e.target.result);
        };
        reader.readAsDataURL(file);
    },
 
    dataURItoBlob : function(dataURI){
        var byteString;
        if (dataURI.split(',')[0].indexOf('base64') >= 0)
            byteString = atob(dataURI.split(',')[1]);
        else
            byteString = unescape(dataURI.split(',')[1]);
 
        // separate out the mime component
        var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];
 
        // write the bytes of the string to a typed array
        var ia = new Uint8Array(byteString.length);
        for (var i = 0; i < byteString.length; i++) {
            ia[i] = byteString.charCodeAt(i);
        }
 
        return new Blob([ia], {type:mimeString});
    },
 
    resizeImgToCanvas : function(img, maxHeight, maxWidth){
        maxHeight = maxWidth||640;
        maxWidth = maxWidth||640;
        var width = img.width;
        var height = img.height;
 
        if(width > height){
            if (width > MAX_WIDTH) {
                height *= MAX_WIDTH / width;
                width = MAX_WIDTH;
            }
        }else{
            if (height > maxHeight) {
                width *= maxHeight / height;
                height = maxHeight;
            }
        }
 
        var canvas = document.createElement('canvas')
        canvas.width = width;
        canvas.height = height;
        var ctx = canvas.getContext("2d");
        ctx.drawImage(img, 0, 0, width, height);
        return canvas;
    },
 
    canvasToBlob : function(canvas){
        var dataURL = canvas.toDataURL('image/jpeg', 0.5);
        return this.dataURItoBlob(dataURL);
    },
 
    post : function(url, formdata, callback){
        $.ajax({
            type:'POST',
            url:url,
            data:formdata,
            contentType:false,
            processData:false,
            success : function(jdata){
                console.log(jdata);
            }
        });
    }
};

测试案例如下:

1
<input type="file" id="J-file" accept="image/*">
View Code JAVASCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//监听文件变化
$('#J-file').on('change', function(){
    if(this.files.length<1){
        return ;
    }
    var file = this.files[0];
    //从文件中加载图片
    ScaleImageHelper.loadImageFromFile(file, function(src){
        var img = document.createElement('img');
        //插入图片到body中
        //$(document.body).append(img);
        //图片加载完成
        img.onload = function(){
            //通过canvas缩放图片
            var canvas = ScaleImageHelper.resizeImgToCanvas(this, 10, 10);
            //把canvas转成blob格式
            var blob = ScaleImageHelper.canvasToBlob(canvas);
 
            //插入到form中异步上传
            var formdata = new FormData();
            formdata.append('imgfile', blob);
            ScaleImageHelper.post('./scale-canvas.php', formdata);
        };
        img.src = src;
    });
});

最近一个小应用需要做播放器,当然首选jplayer,由于是手机应用,还是用zepto代替了jquery,昨晚折腾了很晚,也没找到为何出错了,比较晚耐心也不好,最终放到了今天。

官方文档,硬是把使用zepto代替jquery的说明拆成了几段,一不小心就跳过了重点

View Code JAVASCRIPT
1
2
3
//如果使用了AMD module需要修改下面的代码
//替换define(['jquery'], factory); 为
define(['zepto'], factory);

那么zepto源码中是没有amd加载支持,这个时候我们需要补充一下

View Code JAVASCRIPT
1
define("zepto", [], function(){return Zepto;});

但发现其实还是使用不了,设置如下可以使jplayer打印出错误日志

View Code JAVASCRIPT
1
2
3
my_jPlayer.jPlayer({
    errorAlerts: true //显示错误信息
})

发现错误日志如下:

jPlayer 2.9.2 : id=’jquery_jplayer’ : Error!
Attempt to issue media playback commands, while no media url is set.
Use setMedia() to set the media URL.
Context: play

那么就是setMedia没有调用到,跟一下源码,在第57行代码var instance = $(this).data(name);得到的结果是”[object Object]”,一看zepto不支持data为object,然后我再看官方文档,重点来了

Zepto
Compatibility verified with:
Zepto 1.0 compiled with Data module

整个人都很难受,为何不仔细看文档,为何不仔细看文档

13 / 09 / 2015 buling

很久没有记事了,也找不到一个点想去记录,某人竟然说好久没更新了,真是不喜欢别人看我的底,正如不想告诉别人我会什么,有什么,缺什么。

今天下午约了个朋友陪我去买了一下衣服,回来直接点了必胜客的披萨,我第一次买披萨当主食,完了看了会极限挑战,送她回去,uber太远,最后选了滴滴,习惯性专车,真NN贵。路上又(之前有次和师傅聊天忘了开始计费,最后师傅拒绝我补钱)和师傅聊天。他说无聊就出来跑一下,然后说他今天就在家洗了一天发动机,然后顺势给我介绍如何清理发动机。后来讲到他做外贸行业,进口转内销,具体是工业相机,他们的客户群是华为,富士康之流。起初我以为就是个普通销售,后来说刚开始做这行他们只有三个人。现在去年又和他姐夫开了一家汽车租赁公司,主要是给企业提供商务车。这些都没什么,无非是成功人在讲他们的成绩而已,成功的例子多了,牛逼的事情也太常见。但成功的路上不是所有人都能知道。

他刚来深圳找不到工作,在大新一个小区做保安,后来混不下去了,去了酒店做服务员,用了几个月的时间升职为主管,开始认识了一群很牛逼的人,09年酒店出事了,他就离职开始做现在的行业,去年和姐夫开了租赁公司,去哪儿来和他们谈南山片区的接送服务,最后没有谈成。他说做人就是心态的问题,做事也如此,对人好,别人才会对你好,别人对他一分好,他会还以四分。(这句话我理解的很透彻,一直以来我也尽量这么做,就是伤钱,不伤钱不赚钱不是)。做事前需要先想明白,他都会用笔记录下来之后要做的每一点,做到一点打个完成标志。说的很是,回想我们规划的很多事情都是在后来不了了之。做事最重要的是能放下面子,不要计较得失,为了面子丢掉了更重要的东西,往上爬可以,用能力,不要踩着他人上去,行人做事态度第一。他玩御龙在天,在上面花了10几w,认识了一堆朋友。这是另一个境界了,不是我暂时能参悟的了的。

很受益无穷的一堂成功学,因为朋友住的有点远,回来的时候他结单送回来,其实他要去福田,留了张名片,谢谢。

我记得前不久刚和谁聊说真正成功人的心态。因为这次考核又得了个3星,很是失落,然后和朋友聊,他说眼界放远点,可以在做点别的事情,然后,然后我一口气做了三份副业,一份任务,一份友谊帮忙,一份兼职。接的那事是一个手机web站,本来是答应今天完成的,结果哎,又违背了承诺,还好那哥也是人生专家级别了。因为期间纪念日放假去了黄山,最后就耽误了。

那什么纪念日,stone筹划了很久的男人日终于定下来了,mvp/小碗/荣/stone/群主(竟然带老婆,哎),去的路上一路升级,好爽,让我想起了很多往事,高中的时候,我、阿毛、彭子,还有谁忘了,每晚自习完就从2升到A睡觉,有时候一晚打两圈。大学的时候我们吃喝组(猛/风子/肾宝)隔三差五去喝酒,都白酒,然后升级。时隔这么多年再次有这种什么事情都不想一心升级。到酒店升级,没事就升级。第一天到黄山脚下,第二天一早起床上山,上山做车大巴排队,做缆车排队,等真正上山也接近1点了,去了XXX/XXX等等景点,都没记住,主要人多,不过风景确实很美,然后3点过,滴滴答答的下个不停,还好山下的时候买了雨衣,mvp给我买了鞋套,然后那两天最是喜爱的物品。然后径直上光明顶,休息片刻直接白云宾馆(山上)。因为下雨,价格可,还好是提前网上订的床位(和宿舍类似,一个房价,4张床,上下铺,有卫生间,热水,没有空调),晚上准备出去完,打算换长裤(外面细密的风雨),发现没带,欲哭无泪,带的厚衣服也没有办法配这短裤。第二天早起还是飘着雨,先是去了什么来着,我和mvp计划继续前行去步仙桥,因为雾很大,他们是想放弃,最后不得已又一起,因为雨雾,一路基本没有人,那感觉很好,这才是我想要的旅游,到了步仙桥合照一张,继续下车去坐缆车,哎,我把所有的路径都忘记了。总之第二天虽然天气不好,但整天是我很喜欢的。

每次都很喜欢用倒叙的方式来写,想了半天终于想起一些事情了,8月24号的那一周简直是悲催至极,周1科目二考试挂掉了,考试时候前面有个妹子,后面一妹子一哥们,聊各种驾校的坑爹,去考场练车交钱,我说没有,前面那妹子更是,她是6月练的,后来教练走了,换了个新教练,教了三天就考试,各种蒙圈,我怕她误导我,我尽量不和她聊天,结果因为方向盘非常紧,倒车入库挂了,两次都挂在那里了,奶奶的,这完全不在意料范围,晚上和教练的饭都约好了,结果,我刚出考场等教练过来,接二连三那三个人都出来了,一脸的没过,然后继续开始喷什么破车,什么破考场,什么破dang。周4T3评审,这次准备的很仓储,PPT都没有勇气让老大过,面前richard看了一眼说完全不知所云的ppt,然后果然,评委一致认为不能在烂得ppt了,有个评委全程提得建议很中肯,很有大家风范。年底再来吧,那一周各种被揭伤疤。

最近开始迷上了羽毛球,会长技术很牛逼,我一直很虚心的从基础开始学习练习,现在也是大有进步,羽毛球真是一件很锻炼的运动,简直大爱,现在已经完全不能自拔。前不久因为他们非得让我请吃饭,最后选定香蜜轩,也是个环境很好的地方,最后大家也没有拼,7个人,人均100多点就搞定了,不知道找什么借口就说庆祝我生日,我生日哪是这个季节

唐在8月底去了九寨沟,之前计划的是他们去的时候我顺便回去,后来他们这个时间完全不在我控制范围内,他们在四川待了好多天,可惜我不在,否则应该会玩的更好吧,昨天他们过来了买家具,还有四姑娘山要去,等着我结婚,哈哈,好,就这么定。

昨天加班一天,今天加班半天,去茂业买了3件T,买了一件lee T恤6折230,后来看到安踏,两件才170,哈哈,就随便穿穿吧,现在买安踏袋子都不想提,会觉得有点丢人了,不知道什么心态。想刚高中毕业,我哥买361二送1的时候,我就是穿那个送1。晚上那为成功师傅穿的是361。

终于写回来了,还有很多事情,希望能把时间规划好,做完该做的事情,有所得,有所为。

网络断了,用手机热点发,用我的new macbook写日志的感觉,还是很好用。

–2015.09.14 00:43

22 / 07 / 2015 buling

这几天一直在做XX活动,明天发,主要负责手Q平台,微信平台被人抢了,所以。有如下些点分享
1、页面字体大小,

1
2
3
html {font-size:62.5%}
/*未经调整的浏览器都符合: 1em=16px,所以10px=0.625em,设置html为62.5%,那1rem就是10px*/
/*之后页面布局均使用rem来布局,方便统一调整*/

2、音乐播放操作

1
2
<!--music dom; preload属性自行查阅-->
<audio id="audio" src="./static/WeAreYoung.mp3" loop preload="auto" autoplay="true"></audio>
View Code JAVASCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
(function(){
    //audio dom
    var videoMusic = $('#audio')[0];
 
    //监听回调
    var videoLoaded = function(){
        //控制按钮
        var $controll = $('#J_music-controller');
        //设置音量
        videoMusic.volume = 0.5;
        //开始播放
        videoMusic.play();
 
        $controll.show().on('tap', function(){
            var $this = $(this);
            if($this.hasClass('music-close')){
                $this.removeClass('music-close');
                videoMusic.play();
            }else{
                $this.addClass('music-close');
                videoMusic.pause();
            }
        });
    };
 
    //监听是否加载完成可以播放
    videoMusic.addEventListener('canplay', videoLoaded);
    if(videoMusic.readyState==4){
        videoLoaded();
    }
}());

3、陀螺仪模拟摇一摇

View Code JAVASCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
var AcceHelper = (function(){
    var lastAcceTime = 0, 
        lastAcceInfo = false,
        firstAcceInfo = false,
        lastDistance = 5000,
        isStart = false,
        stopTimer = 0,
        config = {
            timeLimit : 100, //两次感应间隔时间为200
            speedLimit : 80, //速度限制为80
            stopLimit : 400
        };
 
    var getDistance = function(a, l){
        var powDis = Math.pow(a.x-l.x, 2) + Math.pow(a.y-l.y, 2);
        return Math.sqrt(powDis);
    };
 
    var doAccelerationIncludingGravity = function(acceleration, oncallback, stopcallback){
        var curTime = (new Date()).getTime(),
            a = acceleration,
            l = lastAcceInfo,
            time = curTime-lastAcceTime;
 
        if(time>config.timeLimit && lastAcceInfo){
            //debugFunc('on acceleration call['+(a.x+'_'+a.y+'_'+a.z)+']');
 
            lastAcceTime = curTime;
 
            var distance = getDistance(a, l),
                speed = distance/time*1000;
 
            if(speed>config.speedLimit){
                isStart = true;
                if(stopTimer){ //清除结束
                    clearTimeout(stopTimer);
                }
 
                if(!firstAcceInfo){ //设置第一次
                    firstAcceInfo = {
                        x : a.x,
                        y : a.y,
                        z : a.z
                    };
                }
 
                var aDistance = getDistance(a, firstAcceInfo);
                debugFunc('on acceleration call['+(aDistance+'_'+lastDistance+'_'+distance)+']');
                if(aDistance<lastDistance){ //回退的时候回调
                    oncallback && oncallback.call(null, {
                        distance : distance,
                        time : time,
                        speed : speed
                    }, a);
                }
                lastDistance = aDistance;
 
            }else if(isStart){
                if(stopTimer){ //清除结束
                    clearTimeout(stopTimer);
                }
 
                isStart = false;
                stopTimer = setTimeout(function(){
                    firstAcceInfo = false;
                    lastAcceInfo = false;
                    lastDistance = 5000;
 
                    debugFunc('on acceleration stop!'); //回调
                    stopcallback && stopcallback.call(null, {
                        distance : distance,
                        time : time,
                        speed : speed
                    }, a);
                }, config.stopLimit);
            }
        }
 
        lastAcceInfo = {
            x : a.x,
            y : a.y,
            z : a.z
        };
    };
 
    var beginAccelerometer = function(oncallback, endcallback){
        if(false && mqq.support("mqq.sensor.startAccelerometer")){
            mqq.sensor.startAccelerometer(function(ret, x, y, z){
                doAccelerationIncludingGravity({
                    x:x, y:y, z:z
                }, oncallback, endcallback);
            });
            Helper.showAlert('启用Q的陀螺仪');
            return ;
        }
 
        //浏览器内调用自测用
        if(window.addEventListener){
            $(window).off('devicemotion').on('devicemotion',function(eventData){
                doAccelerationIncludingGravity(eventData.accelerationIncludingGravity, oncallback, endcallback);
                eventData.preventDefault();
            });
        }else{
            Helper.showAlert('不支持摇一摇功能');
        }
    };
 
    var endAccelerometer = function(oncall, endcall){
        var timer = 0,
            num = 0;
        beginAccelerometer(function(info, acceleration){
            num += 1;
            oncall && oncall.call(null, num, info, acceleration);
        }, function(info, acceleration){
            //$('#J_page-box-1').prepend('<div>[[[[['+num+'</div>');
            endcall && endcall.call(null, num, info, acceleration);
            num = 0;
        });
    };
 
    var removeAccelerometer = function(){
        $(window).off('devicemotion');
    };
 
    return {
        on  : endAccelerometer,
        remove : removeAccelerometer,
 
        init : function(options){
            $.extend(config, options);
        }
    };
}());
 
//使用方法
AcceHelper.on(function(num, info, acceleration){
    //晃动第几次
    debugFunc('on acceleration num:' + num);
 
}, function(num){ //结束
    //结束时回调总共摇动了几次
    debugFunc('on acceleration end num:' + num);
});

3、分享一些动画

无标签信息 0 条
27 / 06 / 2015 buling

还是要说,以下内容空洞乏味毫无营养,还不如去看看重筹网站或者smzdm,我很喜欢买些白菜价的小玩意,比如,自行车坐垫啊,夹子,数据线啥的

又是好久没有写博客了,前几天小郭问怎么没更新,每次都想,但总是被懒打败了,本来下了个电影看,看到最美和声,那我就来更新一下吧,都有点忘了上次打算更新博客是想记录什么了

12号团建去了日本,6天的假期,第一天和最后一天基本都在车上。东京进大板出,去了秋叶原,银座,富士山,清水寺,其它都不怎么记得了,一路大家都在做任务,是药店就进,买买买(给我姐带了一堆化妆品),买了一大堆巧克力,711买的巧克力,折合人民币5元一盒,大爱。每天晚上都尽量出去体验一下当地的生活,第一次发现有那么群人和我们生活差距那么远。刺身、寿司、清酒,没有吃过一点炒菜。不会日语交流简直是伤,很不便,其中一次完全不能交流,老板最后还是把我们拒绝了,很多小日本英语都不会。干净的城市,难以想象的干净,即便很偏远也那么干净,街上很少垃圾桶,估计就是这样的氛围以至于大家都爱护这样的环境。真是好到不能不爱。羊羔有晚给我买了个什么礼物(不是杯子就是娃娃)我没有拆。回到深圳uber了一个车,从深圳湾入境的,去蛇口港口还随身wifi,结果和师傅聊天,到了蛇口才发现忘了计价,我给他补钱他不要。师傅年纪属于父亲辈,他说之前每天麻将都是几百几百,玩的心跳,出来开uber改变一下生活方式….

最近很长一段时间都玩股票和基金,500的股票亏死我了,沉寂了一段时间开始买聚美,赚了点去超vips的底,然后现在已经跌了10%+了,基金更厉害,买了一万,已经亏了快2000了,拓总也是跌的厉害,我不买a股,现在看来,美股的中概股就是a股,哭了

前几周有一天一早起来玩gta,一直玩到凌晨3点半,玩了接近20的进度,上周继续,60%,主线任务就玩了,暂时不想做支线任务,打算换个游戏,然后比较很久买了美国末日(the last of us),前天晚上玩了会,不太好玩啊,没有地图,指引也少。小郭也买了ps4,一早发信息说昨晚玩到4点

最近很长一段时间都很忙,处理应用宝的事情,主要是在新需求和性能优化上,这次最大的进步是没有用任何框架,写了一个很mini的jquery,有20k,上线前把requirejs重写了,不到1k。新加入了一个同事,老大让多给点任务,抽身做一些性能提升,数据统计方面的事情,太忙,一直忙于做事,最后都没有时间学习,都有点感觉不到进步了。终于快一个段落了,最近也会看一些技术的东西,周末时间也会做一些别事情。

上周发了一箱水果,我一个人吃不了就给xing了,结果xing给了一大盒巧克力,我去日本买了那么多,然后周五带了7种不同口味到巧克力到公司。闲来无事事总是想做些什么,上周拓总说有什么好玩智能硬件,现在的智能硬件看来都大同小异,没有什么能戳动的点,晚上又看了些资料,还是想买套arduino玩玩,想刺激一下想法。到底能做什么呢

想起小时候在家妈做的焖饭,最近连续几个周末都做,很香,买点豆角切成颗粒下锅炒一下,不要太熟,把电饭锅蒸好的饭晾冷盖在豆角上,很小的火焖,如果有腊肉炒在豆角中,那更是美味。没事周末也约点朋友去骑自行车,深圳不是很好骑车,不过骑车途中路过超市买一西瓜,扔地上,然后吃完继续这种感觉很爽。

不久前见了一面小学同学,李艳,话说小学的时候都喜欢人家,现在都是娃的妈了,更漂亮了。吃完聊了很久,最后送走我叫了个uber,走时她问安全吗,第一次才意识到这个问题去,她走了我也很后悔,确实这是个问题,只是以前自己从来没有意识过,看来还得单身很久….

写着写着才发现有很多事情,也是前几周,堂哥突然电话说,堂姐病了在医院要钱,我说要多少,他说先给5k,随即我就打给他,他让打给医生卡上,他取不方便,我竟然信了,过会又说还需要,我问多少,他说2w,想了想决定借1w,我也没有那么多现钱,后来他说姐生气了,先不借。第二天早上,他告诉我被人洗脑了。都是两个孩子的爹了,我都跪了

上周去吃的邻海体验式海鲜主题餐厅,非常赞,自己现场点海鲜,处理好后,自己蒸就好了,味道很赞,就是有点贵。顺便忘记,王林生了个儿子,真是大喜。高中喜欢的一个妹子,前几年她想,我觉得这么多年过去了不太适合,然后她就把我给拉黑了,最近某人拉了一个高中群,我知道她结婚怀孕了,最后我忐忑的加了她微信,也是聊了很晚,她在家,呆着无聊,然后我就陪她扯了很多,家里确实很无聊,可谓是谁待谁知道

今天这机顶盒信号真是…就写到这里

无标签信息 0 条
09 / 05 / 2015 buling

最近开始看discuz论坛,二次开发,填坑行动开始

一、discuz论坛安装后默认不开始手机访问
安装了触屏风格代码,发现死活都不生效,后来跟代码,发现检查了配置,最后找到 【全局】->【手机版访问设置】->开启手机版。哎

二、discuz设置门户为首页,手机端不自动跳转到门户
在【界面】->【导航设置】中设置门户为默认首页,手机端访问始终跳转到论坛页面,跟代码,在source/class/discuz/discuz_application.php中_init_mobile方法,大概在768行左右,下面这行代码

1
if(strpos($this->var['setting']['domain']['defaultindex'], CURSCRIPT) !== false && CURSCRIPT != 'forum' && !$_GET['mod']) {

改为

1
if(strpos($this->var['setting']['domain']['defaultindex'], CURSCRIPT) === false && CURSCRIPT != 'forum' && !$_GET['mod']) {

对此我很难受