0%

又到小米发布会了,这次发布会将从发布评论的人里面选人,每分钟送一台小米手机。
于是写了几行代码自动发评论,省去了手工的麻烦。娱乐一下,碰个运气。

直播地址:https://hd.mi.com/x/12041b/index.html?client_id=180100041086&masid=17409.0195

代码如下:

1
2
3
4
5
6
7
8
9
10
11
// 随机选择一个当前评论列表里面的评论
var r = () => Math.floor((Math.random() * $('.livechat-list-wrapper .list li').length))
// 提取选中的评论的内容
var text = () => $($('.livechat-list-wrapper .list li')[r()]).find('.content').text()
// 使用选中的内容自动发评论
var c = () => {$('#J_chatContent').val(text());$('#J_sendChatBtn').attr('class', 'btn active');$('#J_sendChatBtn').click();}
// 生成随机的间隔时间
var rtime = () => Math.floor(Math.random() * 15000 + 5000)
// 设置一个计时器定时发评论
var st = () => stt = setTimeout(() => {c(); st()}, rtime())
st();

以上代码粘贴到控制台执行就可以了。

结构组织

1
2
3
4
5
css
|-[业务类文件夹]
|-[通用类-样式重置].css
|-[通用类-公用组件].css
|-[通用类-ie兼容].css

css样式排序

阅读全文 »

配置文件

继承和聚合

属性

内置、POM属性、自定义属性、settings属性、Java系统属性、环境变量

  • finalName: 配置最终生成的war包的文件名,可以用于替换默认的project.artifactId{project.artifactId}-{project.version},便于发布的时候生成合适的路径

生命周期

三套独立生命周期

阅读全文 »

Original:

1
2
3
4
5
6
7
8
9
10
11
.a {
&.a-b {
&:hover {
background-color: #5cb85c;
}
}
}

.a-c {
&:extend(.a .a-b:hover);
}
阅读全文 »

当子元素是浮动布局时,父元素无法获取到正确的宽高,这种情况常常使用clearfix方案来解决。

** 示例如下:**

1
2
3
<div> <!-- 父元素无法获取到正确的尺寸 -->
<div style="float:left; width:100px; height:100px;"></div>
</div>
阅读全文 »

像她一样,你也可以30岁成为外企高管

  • 跳出舒适区 - 找比你厉害的人聊天
  • 假装自信
  • Too complicated, can you send out an email about this?
  • If you feel it’s your fault, think twice before you raise it.
  • Try to spend some time finding every thing in the document before ask.
  • Ask yourself after a communication if this is a success one.

  • 工作过程:
1
2
3
4
    StandBy(待机)
Inqury(查询) Page(寻呼)
Authentication(配对)
Connection(连接)
  • 连接状态:

    • 活动状态:正在通信
    • 监听状态:随时准备通信
    • 保持状态:仅仅定时器工作,无法通信
    • 休眠模式:能耗最低,偶尔监听和检查网络信息

opengl es shading language

种类

  • 类型:vec2 vec3 vec4 mat2 mat3 mat4 int float
  • 结构体:
阅读全文 »

web.xml

error page

1
2
3
4
<error-page>
<error-code>404</error-code>
<location>/WEB-INF/jsp/errors/error.jsp</location>
</error-page>
1
2
3
4
5
6
7
8
9
10
11
@Bean
public ServerProperties serverProperties () {
return new ServerProperties() {
@Override
public void customize(ConfigurableEmbeddedServletContainer container) {
super.customize(container);
container.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/error/404"));
}
};
}

spring-context.xml

1
2
3
4
5
@ImportResource("classpath:spring-context.xml")
@EnableAdminServer
public class WebApplication extends SpringBootServletInitializer {
...
}

log back upgrade

1
2
3
4
5
<!-- change include to included for file that will be included, like this: -->
<!-- http://logback.qos.ch/manual/configuration.html -->
<included>
...
</included>

重复触发Jenkins build

当使用Jenkins build我们的一个repo的时候,一般我们会想要build master分支。在Jenkins添加git repo的时候,默认添加的监控branch为*/master,这个默认的设置就可以满足我们的需求。

但是,事实上*/master是可以匹配master xx/master分支的。如果当前repo里面有一个branch为xx/master,那么就会匹配到两个分支。在这样的设置之下,如果master有新的commit,Jenkins就会尝试build这两个分支,于是就会触发两次build。

grunt在压缩文件的时候,一些自动生成的文件没有包含进去,但当第二次运行编译,文件又被编译进去了

grunt可能在编译之前生成的待压缩的文件列表,由于第一次编译的时候,编译文件没有生成,在压缩的时候就不会包含这个中间文件。第二次编译的时候,中间文件已经存在(可能会在编译过程中更新这个文件),这个时候就可以包含这个文件了。