红包海

<html>
<head>
<title>DOM, CSS and Fonts – Sample Code: Animating Fonts with DOM</title>
<script>
////////////////////////////////////////////////////////////////////////////////
// Produced by Marcio Galli for Netscape Communications.
// Uses DOM 1 to dynamically create a set of text elements using
// the same content for all the texts but with different sizes.
// Then an animation loop uses Math.cos() and Math.sin() functions
// to start a wave effect.
//
// References:
//
// http://www.mozilla.org/docs/dom/technote/tn-dom-table/index.html
// http://dmoz.org/Computers/Programming/Languages/JavaScript/W3C_DOM/
// http://www.geckonnection.com
//

//**********************************************************************
// This is the default string to create and animate.
// You can change this before calling q1() to make it
// dynamic with your customization.
//
var defaultString=”✉✉✉✉✉✉✉✉✉✉✉✉✉”;

parentID=”area”; // This is the div element where all text will be created.

vala=160; // Initial color value that will be used to red and green color channels.
valc=255; // Initial color value that will be used to the blue color channel.
cc1=0; // Aux value to calculate color.
cc2=0; // Aux value to calculate color.

fontsize=16; // Font size.
posleft=120; // Left position of the div that contains the texts.
postop=50; // Top position of the div that contains the texts.

////////////////////////////////////////////////////////////////////////////////////////////////
// Creating all text dynamically with DOM Level 1.
// Use of getElementById, createElement, createTextNode, setAttribute and
// appendChild. See more info at www.dmoz.org at W3C DOM category.
//
function q1() {

// For statement to create 7 texts.
for(i=0;i<7;i++) {

// Each text is created inside the parentID div element.
node=document.getElementById(parentID);

// Creates the DIV element.
beforediv=document.createElement(“DIV”);

// cc1 and cc2 values that will be used to generate the color values.
cc1=255*(i/11);
cc2=160*(i/11);

gfx1=parseInt(vala-cc2); // Original color intensity value minus cc2.
gfx2=parseInt(valc-cc1); // Original color intensity value minus cc1.

// Creates the style attributes string.
str=”position:absolute;top:”+postop+”px;left:”+posleft+”px;bgcolor:rgb(“+gfx2+”,”+gfx1+”,”+gfx1+”);width:260px;height:100px;font-size:”+fontsize+”pt;”;

// Sets the style attribute using str as its value.
if (navigator.userAgent.indexOf(“Gecko”)>-1)

beforediv.setAttribute(“style”,str);
else
beforediv.style.cssText = str;

// Sets the id attribute using “object”+i as its value.
beforediv.setAttribute(“id”,”object”+i);

// Creates the text node.
newText=document.createTextNode(defaultString);

// Appends the text node in the new div element.
beforediv.appendChild(newText);

// Appends the new div element in the node object (div id=”area”).
node.appendChild(beforediv);

// Sets attributes to the next iteration.
fontsize+=2;
posleft+=5;
postop-=(3-((i/20)*2));

}

// Call to start the wave animation effect.
setTimeout(“a3danimation()”,100);

}

////////////////////////////////////////////////////////////////////////////////////////
// Variables used as parameters for the a3danimation function.
//

ox=100; // Reference parameter for the initial left position.
oy=100; // Reference parameter for the initial top position.
pi=3.141516*2; // Approximation of the PI value.
ccounter=0; // Animation counter.
ww=10; // Parameter for the animation.

////////////////////////////////////////////////////////////////////////////////////////////////
// Wave Animation
//
function a3danimation() {
ww-=.1; // ww parameter decreases slowly.
ccounter++; // counter increases by one.

// Animation has 350 steps. In the end the animation starts again – see else
// statement…
//
if(ccounter<350) {
// This for statement changes the position of the 7 div areas that contain the text.
for(i=0;i<7;i++) {

// Calculates the posx and posy position based on sine and cosine functions and
// pi, ccounter, i and ww parameters.
//
pis=pi*(ccounter/70)+(i/ww);
posx=i*10+ox-20+(Math.cos(pis)*5*i*ww/20);
posy=oy+(Math.sin(pis)*10*i*ww/5);

// Sets the left and top position for each object based on i value.
document.getElementById(“object”+i).style.left=posx+”px”;
document.getElementById(“object”+i).style.top=posy+”px”;
}
// Call a3danimation again…
setTimeout(“a3danimation()”,30);
} else {
// Resets animation parameters…
ccounter=0;
ww=10;
// Call a3danimation again…
setTimeout(“a3danimation()”,30);
}
}
</script>

</head>
<body onload=”q1()” bgcolor=”#a0a0ff” text=”white”>
<!– This is the area in which the text elements will be created. –>
<div id=”area” style=”position:absolute;left:100px;top:050px;color:rgb(255,0,0)”>
</div>

</body>
</html>

 

关于诱导关注/诱导分享的说明

2016年4月12日,微信团队对外发布公告,公布了外部链接内容相关管理规范。

具体规则及相关处罚如下:

一、诱导分享类内容

1、要求用户分享,分享后方可进行下一步操作,分享后方可知道答案等;

2 、含有明示或暗示用户分享的文案、图片、按钮、弹层、弹窗等的,如:分享给好友、邀请好友一起完成任务等;

3、通过利益诱惑,诱导用户分享、传播外链内容或者微信公众帐号文章的,包括但不限于:现金奖励、实物奖品、虚拟奖品(红包、优惠券、代金券、积分、话费、流量、信息等)、集赞、拼团、分享可增加抽奖机会、中奖概率,以积分或金钱利益诱导用户分享、点击、点赞微信公众帐号文章等;

4、用夸张言语来胁迫、引诱用户分享的。包括但不限于:“不转不是中国人”、“请好心人转发一下”、“转发后一生平安”、“转疯了”、“必转”、“转到你的朋友圈朋友都会感激你”等;

若内容中包含以上情况,一经发现,立即停止链接内容在朋友圈继续传播、停止对相关域名或IP地址进行的访问,短期封禁相关开放平台帐号或应用的分享接口;对于情节恶劣的情况,永久封禁帐号、域名、IP地址或分享接口。

二、诱导关注类内容

强制或诱导用户关注公众帐号的,包括但不限于关注后查看答案、领取红包、关注后方可参与活动等;

若内容中包含以上情况,一经发现,立即停止链接内容在朋友圈继续传播、停止对相关域名或IP地址进行的访问;对于情节恶劣的情况,永久封禁帐号、域名、IP地址。

三、H5游戏、测试类内容

以游戏、测试等方式,吸引用户参与互动的,具体形式包括但不限于比手速、好友问答、性格测试,测试签、网页小游戏等;

若内容中包含以上情况,一经发现,立即停止链接内容在朋友圈继续传播、停止对相关域名或IP地址进行的访问;对于情节恶劣的情况,永久封禁帐号、域名、IP地址。

四、欺诈类内容

1、虚假红包、活动

通过虚假的红包、活动等形式,以赚取现金、实物奖品、虚拟奖品等方式欺骗用户参与的,具体形式包括但不限于虚假现金红包、虚假话费卡、虚假流量红包、虚假优惠券、虚假优惠活动等;

2、宣传或销售侵害他人合法权益的商品

通过虚假宣传、恶意营销等方式,向用户宣传或诱骗用户购买侵害他人合法权益的物品的,例如以骗取邮费为目的的赠送物品活动、虚假付费服务等;

3、仿冒微信公众帐号排版、域名

仿冒微信公众帐号文章排版、域名,可能造成微信用户混淆的;

若内容中包含以上情况,一经发现,立即永久封禁帐号、域名、IP地址。

五、谣言类内容

发送不实信息,制造谣言,可能对他人、企业或其他机构造成损害的,例如自来水有毒、香蕉致癌、小龙虾不能吃等;

若内容中包含以上情况,一经发现,立即停止链接内容在朋友圈继续传播、停止对相关域名或IP地址进行的访问、短期封禁相关开放平台帐号或应用的分享接口;对于情节恶劣的情况,永久封禁帐号、域名、IP地址;

六、骚扰信息、广告信息及垃圾信息

1、传播骚扰、欺诈、垃圾广告等信息的,包括但不限于虚假中奖类信息,不符合国家相关法律法规的保健品、药品、食品类信息,假冒伪劣商品信息,虚假服务信息,虚假网络货币等;

2、若内容中包含以上情况,一经发现,立即停止链接内容在朋友圈继续传播、停止对相关域名或IP地址进行的访问;对于情节恶劣的情况,永久封禁帐号、域名、IP地址。

七、题文不符、内容低俗的信息

1、题文不符的信息

故意拟制耸动标题,或以明显倾向性、误导性、煽动性的标题吸引他人点击的,即俗称“标题党”;

2、内容低俗的信息

涉及性器官、性行为、性暗示的,传播低级趣味、庸俗、有伤风化内容的,或者宣扬暴力、恶意谩骂、侮辱他人内容的,例如:传播走光、偷拍、露点、一夜情、换妻、性虐待、情色动漫、非法性药品广告和性病治疗广告、推介淫秽色情网站等;

若内容中包含以上情况,一经发现,立即停止链接内容在朋友圈继续传播、停止对相关域名或IP地址进行的访问;对于情节恶劣的情况,永久封禁帐号、域名、IP地址。

八、非法获取用户数据、信息

1. 未经用户明确同意,并向用户如实披露数据用途、使用范围等相关信息的情形下复制、存储、使用或传输用户数据的,包括但不限于要求用户共享个人信息(手机号、出生日期等)才可使用其功能,或收集用户密码或者用户个人信息(包括但不限于,手机号,身份证号,生日,住址等);

2. 若内容中包含以上情况,一经发现,立即停止链接内容在朋友圈继续传播、停止对相关域名或IP地址进行的访问,短期封禁相关帐号;对于情节恶劣的情况,永久封禁帐号、域名、IP地址。

九. 其它违反国家法律法规的内容,包括但不限于:

1. 违反宪法确定的基本原则的;

2. 危害国家安全,泄露国家秘密,颠覆国家政权,破坏国家统一的;

3. 损害国家荣誉和利益的;

4. 煽动民族仇恨、民族歧视,破坏民族团结的;

5. 破坏国家宗教政策,宣扬邪教和封建迷信的;

6. 散布谣言,扰乱社会秩序,破坏社会稳定的;

7. 散布淫秽、色情、赌博、暴力、恐怖或者教唆犯罪的;

8. 侮辱或者诽谤他人,侵害他人合法权益的;

9. 煽动非法集会、结社、游行、示威、聚众扰乱社会秩序;

10. 以非法民间组织名义活动的;

11. 含有法律、行政法规禁止的其他内容的。

12. 若内容中包含以上情况,一经发现,立即停止链接内容在朋友圈继续传播、停止对相关域名或IP地址进行的访问,短期封禁相关帐号;对于情节恶劣的情况,永久封禁帐号、域名、IP地址。

数字自动格式化

$(‘#memberCodeEq’).unbind(‘keyup’)
$(‘#memberCodeEq’).on(‘keyup’,function(){if($(this).val().length==12)$(this).val($(this).val().replace(/^(\d{3})(\d{3})(\d{3})(\d{3})/,’$1 $2 $3 $4′))});

//失去焦点又回去

$(‘#memberCodeEq’).on(‘blur’,function(){$(this).val($(this).val().replace(/\s+/g,”))})

//3个字就变

$(‘#memberCodeEq’).on(‘keyup’,function(){$(this).val($(this).val().replace(/(\d{3})([^\s])/g,’$1 $2′));console.log(1)})

toggleClass用起来很邪性

用的是zepto

有一种写法是toggleClass(‘classA classB’)

很容易想当然地写成有一个逗号在中间。

也很容易误以为这样是两个class一起切。

实际上当有A时,A被干掉,没A时,A被加上,有B时,B被干掉,没B时,B被加上。

但是这样仍然有疑问,就是AB控制相同的属性时,会发生什么?

我以为是谁在后面谁生效,然而实测效果不对。

而且当我toggleClass(‘classA classB’).show()的时候,

发现先show,然后才切的。

看来链式写法有问题啊。

或者这个切换是自带了默认时间的?

还没查出来。

mysql命令行中加入linux的变量作为参数

这事以前搞定了,但是捡起来问题太多。

报错,通常是mysql的值类型造成的,因为我输出的结果里出现过company_id这种字符串,而当时用于in的字段类型是int

而且in(1,2,34,5,)这样的也会报错。

当我企图把文件内容给输出给$aa这样的变量时,不知道怎么弄的,把变量变成了一个快捷方式,以至于当我用vim来修改$aa的时候,那个文件也跟着变了。

那么直接in(`cat xx.txt`)是不是也行?我没试过,不过显然应该是可以的。

这几天遇到的跨不过的坑

好死不死,非要用原始的submit提交表单。

这时问题来了,后台php状态返回404。

而且感觉一开始是200,然后接着404。

原因很简单,我这个php文件引用了另外一个文件用于获取用户登录状态。

一开始我以为是引用的路径不对。

事实上,当我把报错提示打开之后,发现如果路径真的不对的话,就会在浏览器上看到php的报错,但是并没有报错。

显然,404是nginx弄出来的。

那么肯定是nginx的config不对,然而,如果我用ajax方法来提交,就不会有问题。

看了半天nginx及vhost的conf,看来看去,看不出个所以然来。

从逻辑上说,这有点像后端的防盗链或反跨域机制。

然而,一般的nginx防盗链方案怎么也得定义一个$invalid_referer。这个问题里似乎并没有这种事。

从php跳到php的时候也不会有问题,就是html跳php就有问题,不管是_self还是_blank,post还是get。

有几个地方可疑,一是本站的conf中拦截的location最后有一个:
location ~ /\.
{
deny all;
}

按说这个意思是\后直接带个.的方式,直接拒绝访问。但是这和require没关系啊。

还有一个地方可疑

enable-php.conf文件
location ~ [^/]\.php(/|$)
{
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
}

很显然404就是它弄出来的,但这也没错啊。

照这架式,就是fastcgi.conf的问题。

这个问题先留着吧。其实基本上不也不需要非ajax的提交。

现在做事,太容易被小问题牵绊了,还是要直奔目的而去。

安卓超级终端的组合键实现

要中止一个Linux命令的运行,必须按下ctrl+c或ctrl+z,但是安卓中大部分输入法都没ctrl键。

有段时间我曾经下载过一个叫黑客键盘的输入法,洋人搞的,其实并不好用。

刚才看了一眼超级终端的设置,里面明明可以把音量键或其他实体按键模拟成ctrl,一试之下,果然可以。

上次ping一下停不下来,非常怀疑网站就是被它卡死的,现在有了这招就不怕了。