仿微博滚动插件 – jQuery.iscroll

查看插件效果

如题,模仿新浪微博首页滚动效果写的一个jQuery插件。
刚开始练习写jQuyer的插件,还不大熟手,凑合着用先。
代码如下:

(function(){
    /**
     * .weibo
     * Date: 2012/01/22
     *
     * @projectDescription 仿照微薄滚动效果
     *
     * @author Joe nikejaycn#gmail.com
     * @version v0.1
     */
    .fn.iscroll = function(params){
        options = {
            ShowTime: 500, //显示时间
            moveTime: 3000, //移动时间
            charElement:"li", //子节点
            ajaxTrunOn: false, //是否开启ajax请求,定时获取数据
            ajaxTime: 30000, //发出一次ajax请求时间,默认是30秒获取一次数据
            ajaxUrl: "", //ajax数据请求路径
            setAjaxHtml: function(data){ //数据源输出设置
                //data是ajax返回数据
				//在这里都其进行格式化输出
            }
        };
        .extend(options, params);
        //保存当前对象
        var _this = this,
            isIE = !!window.ActiveXObject,
            isIE6 = isIE&&!window.XMLHttpRequest,
            jsonData = false,
            jsonCount = -1;

        //鼠标经过设置name值为"hovered"
        function setHover(){
            _this.hover(function(){
               _this.attr("name","hovered");
            },function(){
               _this.removeAttr("name");
            });
        }setHover();

        function animateHandler(){
            if(options.ajaxTrunOn){
                //处理请求数据
                handlerJson();
            }
            var height = _this.find(".itemt:last").height();
            _this.find(".itemt:last").css({"opacity":0,"height":0});
            _this.find(".itemt:first").before( _this.find(".itemt:last") );
            _this.find(".itemt:first").animate({"height":height},options.ShowTime);
            _this.find(".itemt:first").animate({"opacity":"1"},options.ShowTime);
        }

        function setMove(){
            if(_this.attr("name") != "hovered"){
                animateHandler();
            }
        }

        //设置定时滚动
        setInterval(function(){
            jsonCount++;
            setMove();
        },options.moveTime);

        //定时查询一次数据
        if(options.ajaxTrunOn){
            setInterval(function(){
               getNewsList();
            },options.ajaxTime);
        }
        //ajax请求
        function getNewsList(){
            $.ajax({
                url: options.ajaxUrl,
                dataTypes: "json",
                success: function(json){
                    jsonCount = -1;
                    jsonData = json;
                }
            })
        }

        //处理请求回来的json
        function handlerJson(){
            if(jsonData){
                _jsonData = eval( "(" +jsonData + ")");
                var _length = _jsonData.length;
                if(jsonCount < _length){
                    //处理相应的函数
                    _this.find(".itemt:last").css("height","auto");//清除高度
                    _this.find(".itemt:last").html(options.setAjaxHtml(_jsonData[jsonCount]));
                }
            }
        }
    }
})();

JSON View – JSON格式化查看工具

一个JSON格式文件查看器,提供JSON可视化操作。带有代码格式化功能,效果嘛,谁用谁知道。
官方站点
备用下载

jQuyer Table插件 – colorize(修改版)

查看插件效果
本插件的作用是为了支持table鼠标经过变色和选中效果,原始版本是只能单列或者单行选取。
修改了后的版本只是单个表格选取,配置参数如下:

options = {
	ltColor: '#fbfbfb', // 行背景交互色。默认为 '#ECF6FC', 设置为 'none' 则不使用背景交互色。
	bgColor: '#fff', // 背景色(默认背景色为白色)。
	hoverColor: '#eff6ff', // 当鼠标在行上悬停时的背景色。默认为 '#BCD4EC'。
	hoverClass:'', // mouseover样式类;hoverColor属性优先。
	hiliteColor: '#ffffe5', // 行高亮色。默认为 'yellow',设置为 'none' 时关闭高亮。
	hiliteClass:'', // 行或列高亮时使用的样式类,当设置了hiliteColor时被优先使用。
	oneClick: false, // 每次只允许一行或一列高亮,当点击新行/新列时取消当前高亮。默认为false。
	hover:'row', // 设置mouseover特性,可使用如下值:'row'、'column'、'cross' 。默认值为 'row'。
	click:'row', // 设置鼠标点击时的高亮选项,可用值:'row'、'column'、 'cross'。当设置为 'row',点击时行高亮;当设置为 'column',点击时列高亮;当设置为 'cross',点击时行和列同时高亮。默认值为 'row'。
	banColumns: [], // 防止某些列点击时高亮,还有鼠标悬停时也一样。可提交一个列数组作为参数,当使用'last'值时最后一列不能高亮。如第一第二列不高亮 banColumns: [0,1]
	banRows:[], // 防止某些行高亮,可提交一个行数组作为参数。如第一第二行不高亮 banColumns: [0,1]
	banDataClick:false, // 如果为true,你只能点击表头行。默认为为false。
	ignoreHeaders:true, // 如果为true,表头行不变色(没有斑马线)。默认为true。
	nested:false, // 默认为false。如果一个表中嵌套有表格,使用它可获得一致的斑马线。
    singleTd:false //是否启用单个表格高亮模式,默认是单列高亮
};

再见了2011 总结一下

2012就到了,想起去年的这个时候,颇有感触。

工作:
去年的这个时候,我还在ylmf里面当实习生,氛围与环境都很不错,但是很可惜后来因为某些原因离开了ylmf。
但是也借此机会认识了不少人,如@Alpha@leiicon等,thanks~

然后从2月份开始就一直呆在广州,和迈,我的另一家公司。一直待到了10月底。经手两个项目:
一、大河马水上乐园
一个在线订票系统,我只能说,你看到的东西都是我做的,当然还有一些你看不到的。^_^
二、蓝想网
我一直很在意这个项目,从我的手中经过就更新了2版。但是到了最后还是流产了,why?总结了一下:

  1. 从人手来说:我们都是新手,对互联网不熟悉,公司技术负责人是从电信行业出生的,也不熟悉互联网这一块,大家都过于理想化了。
  2. 从技术来说:JAVA,我不是说JAVA不好,在一些前期需要快速开发并上线的产品上面,它确实是过于笨重了。开发过程中动不动就要重启服务器,每一次的过程都很漫长,而且还配合着IDE使用,实在不爽。一天的时间就浪费在这里了。
  3. 从团队来说:我只能说,团队的执行力不行,我不针对谁谁谁,但是确实是这样的。比如我一个功能,一个设计稿出来,等了几天不能定下来。还有一些应承而没有做到的,哥就不吐槽了

这是一次失败的经历,同时为我累积了不少经验。
其中最大的收获就是读了很多书,直到10月底要搬走收拾的时候,才发现已经差不多3大箱的书。花了差不多1500元~不错,不错

还去了一次webRebuild的年会。只能用“啊”来感叹一下~
11月,来到了期望已久的杭州,坐上了人生第一班飞机。新的公司叫做:丁香园,继续做着我喜欢并且愿意做的事情。
一切安好。

知识:
离开了学校之后,才开始骂自己在学校的时候为什么不好好的看多点书呢。
本年前端最热门的话题估计就是HTML5了,感觉到了下半年后,一大堆了html5应用,web app,html5游戏涌现出来。随着智能手机和各种pad的普及,移动开发果然是大热啊~
很高兴也参与了公司@丁香园的用药助手HTML5版本的开发(http://drugs.dxy.cn/m/),iOS用户和android的,可以试试哦。
然后还学习了一些ROR的知识,遗憾是现在还没有一个成型的作品。
常规的javascript、css、HTML等等,今年还行,可以给自己一个交代了。
还有一些如php,node.js等等blah blah blah~,就不多说了。

生活:
生活一团糟糕,浪费了很多无所谓的钱。想去的地方都没有去成。时间都宅在宿舍里面了。惰性啊,锻炼身体的也要赶紧操行起来了,不然这骨头就废掉了。

2012:

  • 多关心家人,希望大家都能健健康康。
  • 能在@丁香园体现自己的价值,一些有意义的事情。
  • 多看点书。
  • 完成自己的第一个HTML5应用(http://itoyou.cc),当然不能止于一个
  • 希望fish同学能找到一份好工作。
  • 能到处走走看看。
  • 培养自己的业余爱好(钢琴/小提琴)。
  • 务必要坚持锻炼身体,就算是简单的跑跑步也好。
  • 为开源社区做点贡献

最后,终于赶在12点把总结写好了,祝大家新年快乐,重要是身体健康。你懂得~

–EOF–

Debian/Ubuntu下PPTP一键安装脚本

使用方法非常简单,在linux的终端进行如下操作:

$ wget http://parazzi.me/sh/pptp.sh
$ chmod +x pptp.sh
$ ./ppth.sh

然后按照提示输入你要创建的用户名/密码就可以了。

Debian/Ubuntu上的openvpn搭建

今天总算是把OpenVPN配置好了。在diahostingmyhost123测试通过。
因为之前用的iptables规则不正确,所以一直能连接到VPN但无法访问外部网络,于是就记录一下吧.

系统有现成的包,直接安装:

$ apt-get -y install openvpn

复制配置文件和生成证书的工具

$ cp -R /usr/share/doc/openvpn/examples/easy-rsa/ /etc/openvpn
$ cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
$ cd /etc/openvpn
$ gzip -d server.conf.gz
$ cd easy-rsa/2.0/

准备生成证书,如果不需要指定证书的信息,可以跳过编辑vars文件的步骤

$ vi vars
$ . ./vars
$ ./clean-all

生成ca证书,可以一路回车

$ ./build-ca

下面生成服务器和客户端的证书,每次生成到最后有2个提问必须回答y,才能真正生成证书,如果一路按回车,到最后可能发现一个空证书

$ ./build-key-server server
$ ./build-key client1

再生成一个DH PARAMETERS,OpenVPN的服务器需要这个

$ ./build-dh

OpenVPN所需要的key就生成好了.

$ cd keys
$ cp ca.crt dh1024.pem server.crt server.key /etc/openvpn/

然后就可以直接用工具把/etc/openvpn/easy-rsa/2.0/目录下的ca.crt client1.crt client1.key文件保存到本地,连接的时候要用。win平台下推荐使用winscp
之后就是修改配置文件了.先修改服务器端的/etc/openvpn/server.conf

port 1234 #连接端口
;proto tcp
proto udp #连接方式
;dev tap
dev tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key  # This file should be kept secret
dh /etc/openvpn/dh1024.pem
server 10.8.0.0 255.255.255.0 #ip分配,不能跟本地冲突
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8" #dns
push "dhcp-option DNS 8.8.4.4"
;duplicate-cn #如果你要多人共用一个证书的话,请开启本项。
keepalive 10 120 #连接测试,意思是10秒ping一次,120秒没有返回就断开重连
comp-lzo #开启压缩传输
persist-key
persist-tun
status openvpn-status.log
log-append  openvpn.log
verb 3

然后需要在服务器端设置iptables,假设我的服务器ip是12.34.56.78

$ iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source 12.34.56.78

启动服务器端

$ /etc/init.d/openvpn start

再编辑一个本地的配置文件client.ovpn,大部分信息都跟上面的server.conf对应

client
;dev tap
dev tun
;proto tcp
proto udp
remote 12.34.56.78 1234 #连接ip/域名 端口
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
ns-cert-type server
comp-lzo
verb 3

然后,下载客户端并安装
我用的是windows的客户端,安装完毕后如果安装目录下没有config和log目录,要手动建立它们
将刚刚保存的ca.crt client1.crt client1.key client.ovpn这几个文件复制到config目录下,运行桌面上的OpenVPN GUI就可以连接了.

如果出现无法连接的错误或者是连接后,不能访问外网的情况,可以尝试一下在服务器端开启一下相应的端口:

#TCP
$ iptables -A INPUT -p tcp --dport 1234 -j ACCEPT
$ iptables -A OUTPUT -p tcp --sport 1234 -j ACCEPT
#UDP
$ iptables -A INPUT -p udp --dport 1234 -j ACCEPT
$ iptables -A OUTPUT -p udp --sport 1234 -j ACCEPT

参考资料:
Linode VPS OpenVPN安装配置教程(基于Debian/Ubuntu)
官方HOWTO