作者:matrix
发布时间:2018-07-31
分类:零零星星
快速插入当前时间的功能倒是很少需要,只是现在注释的时候需要有时间标记方便查看。windows上的记事本F5
可以获取当前时间,或者手动敲也行。作为IDEA系列的编辑器使用上应该是有这种快捷键的,然而找了大半天的确是没有的。但是有解决办法,还可以自由控制很多快捷关键字。这功能就像java ide中输入sout
中达到快捷输入System.out.println()
的效果 很方便。
测试:PhpStorm for Mac V2018.1
适用于IDEA系列编辑器
添加group
点击右侧的「+」号
这里添加了group
名称为commonInsertTime
,故曰 全局范围插入时间
添加/配置Live Template
这里的Abbreviation
就是触发快捷输入的关键字 time
右侧的Description
为关键字提示的描述信息,可以输入中文的。
填写Template Text 模版变量 $date$
,名称都可以自定义
Expand with
表示触发的操作,默认是输入time
触发关键字之后按tab键触发快捷输入。
然后点击Edit Variables
编辑变量,窗口中会出现刚刚定义的date
,Expresssion
表达式中输入date("yyyy-MM-dd HH:mm:ss")
点击ok保存。
date函数属于官方模版的预定义函数,具体可参考下方IDEA官方资料
来源。
红字提示No application contexts yes
是指没有为当前模板设置使用的语言环境,我这里是所有地方都可以使用 点击Define->Everywhere
。
保存之后在IDEA中任意地方都快速输入当前时间。
输入time
,按Tab键即可。
PEACE~
参考:
https://icewing.cc/post/how-to-insert-template-content-into-phpstorm.html
IDEA官方资料
作者:matrix
发布时间:2018-06-28
分类:零零星星
使用jquery的时候可以直接animate
方法完成滑动滚动条的动作,但是在vue项目中会很蛋疼。
$('.findcar_brand_ul').animate({scrollTop: liheight}, 300);
vue中又没有相关的组件可以调用,载入jquery麻烦,要是需要临时解决的话可以使用js的scrollTop
。
看了网上各路大神的文章才恍悟。要做到渐缓动画 只是需要setTimeOut执行step操作就好,频率快,人眼也就察觉不出。先取使用js操作获取dom的scrollTop
取出需要让滚动条定位的目标位置,之后递增/减setTimeout
操作。
//方法2。js操作
var jump = document.querySelector('#postion');
var total = jump.offsetTop;//要定位的目标滚动条位置
console.log('纵坐标', total)
// var distance = document.documentElement.scrollTop || document.body.scrollTop
var distanceDom = document.querySelector('.findcar_brand_ul');//滚动条所在的容器
var distance = distanceDom.scrollTop;//容器的滚动条照度
// 平滑滚动,每1ms一跳,共20跳
var time = 15;//毫秒
var stepnum = 20;//共20跳
//时长(time*stepnum) ms
var step = total / stepnum //因为除法会出现余数情况 导致最终定位有偏差
if (total > distance) {
// console.log('smoothDown')
// console.log('distance:'+distance)
// console.log('total:'+total)
smoothDown()
} else {
// var newTotal = distance - total + 100
var newTotal = distance - total
step = newTotal / stepnum
// console.log('smoothUp')
smoothUp()
}
function smoothDown () {
if (distance < total) {
// console.log('distance < total')
distance += step
// Firefox
// document.documentElement.scrollTop = distance
// // Chrome
// document.body.scrollTop = distance
distanceDom.scrollTop = distance;
setTimeout(smoothDown, time)
} else {
// console.log('distance < total: else ')
// document.documentElement.scrollTop = total
// // document.body.scrollTop = total
// window.pageYOffset = total
// console.log('standard:'+standard)
distance = total;//将最后一小步的滚动操作的偏移量还原到目标位置。若不加此操作 会导致定位偏移不准的情况出现。因为step = newTotal / stepnum 的值会有除不尽的情况 !!important
// console.log('distance end:'+distance)
distanceDom.scrollTop = distance;
}
}
function smoothUp () {
if (distance > total) {
distance -= step
// // Firefox
// document.documentElement.scrollTop = distance
// // Chrome
// document.body.scrollTop = distance
distanceDom.scrollTop = distance;
setTimeout(smoothUp, time)
} else {
// document.documentElement.scrollTop = total
// document.body.scrollTop = total
// window.pageYOffset = total
distance = total;
distanceDom.scrollTop = distance;
}
}
说明:
demo环境:Vue.version >> "2.2.6"
修改代码使用div中滚动条,取消浏览器窗口滚动条的获取。
代码简单修改了下最终的定位偏移问题。因为step = newTotal / stepnum
至少这能解决问题,还需后面完善。
代码来自@wisewrong
PEACE~
参考:
https://www.cnblogs.com/wisewrong/p/6495726.html
作者:matrix
发布时间:2018-05-08
分类:零零星星
处理返回数据的时候进行json编码/解码可能会因为不是标准的json字符导致出现一系列的连锁反应问题,没有正确的拦截错误信息的显示。
TP5获取器getAttr中进行json处理,结果出现不可预料的false值,且抛出异常 syntax error 语法错误
。很蛋疼啊,明明相应的处理判断,但是错误定位行却是json_encode进行json编码的操作。
后面替换掉以前使用的默认全局函数json()
进行自定义json字符输出,解决。
创建自定义Json类
继承\think\response\Json
<?php
/**
* Created by PhpStorm.
* User: panc
* Date: 2018/5/8
* Time: 上午11:24
*
* 自定义处理json的数据【避免json_encode报错:Syntax error 以及各种杂七杂八的问题】
*/
namespace app\common\output;//自定义命名空间
class json extends \think\response\Json
{
// protected function output($data) //可以自定义重写数据输出即可
}
调用Response类输出
控制器中调用执行
// return json($result);
return new \app\common\output\Json($result);
关键操作如上,虽然只是继承没有任何重写,但是实际上是解决了大问题。可以跟好的控制输出的结果和抛错。
peace~
作者:matrix
发布时间:2018-05-03
分类:零零星星
业务要求按照type,city分组,然后各取前面的100条数据输出,网上找到了类似的需求直接sql语句就可以解决。
测试表结构
CREATE TABLE `esc_catch` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`city` varchar(20) NOT NULL DEFAULT '' COMMENT '城市',
`price` decimal(10,2) unsigned NOT NULL DEFAULT '0.00' COMMENT '报价',
`type` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '1,2',
`add_time` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '添加时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
解决办法
set @row=0;set @city=''; set @type='';
select a.city,a.price,a.type ,from_unixtime(a.add_time,'%Y-%m-%d %H:%i:%s') as add_time from esc_catch as a
inner join (
SELECT id,add_time, case when (@city = city and @type= type) then @row:=@row+1 else @row:=1 end as rownum, @city:=city as city , @type:=type as type FROM esc_catch order by type,city,add_time desc
) as b on b.id = a.id
where b.rownum>=100 order by b.type,b.city ;
说明:
头部事先声明变量
row
用于统计指定分组下出现的次数,
city
和type
是分组条件
核心在于inner join
的的临时表操作,其中使用变量操作追加rownum
字段
如果变量city
,type
值等同于临时表的同名字段则该行数据排序下标row++,否则为1
@city:=city as city , @type:=type as type 表示给每行数据的字段值赋给变量
之后在inner join内联表 之后使用自定义的rownum
字段b.rownum<=100
进行数量条件的限制即可,最后order by
操作便于查看数据
参考:
https://blog.csdn.net/ylqmf/article/details/39005949
https://blog.csdn.net/woshihaiyong168/article/details/78803655
https://zhidao.baidu.com/question/618263527798895012.html
PEACE~
作者:matrix
发布时间:2018-04-24
分类:零零星星
去年@TESTV BBT系列 看到女后期的基因测序,种草已久。网上找到其他很多相关的是国外的23andMe,蛋疼的是不支持中国地区。后来跟同事聊过,大多觉得没卵用,感觉是自己语言表达能力不够 没能安利出去啊(感觉被说微商了)。我不管。。反正我很想知道像我一样来自四川盆地边缘的非少数民族说63话的祖源分析图。对~ 我对此很感兴趣。。
WeGene算是国内较大的一家了,至少很容易找到它。交钱后等待收到采集器,之后采集自己的口水填写信息后寄回去等待报告就好。高科技算命就是这么的容易。
21号提交的订单,昨天到的口水采集器,回家按照WeGene官网提示进行口水装填作业。今天中午直接丢去丰巢快递柜 顺丰到付。期待后面的报告~
官网链接
https://www.wegene.com/shop/?_source=R_252713_F29657
后续 更新:
04-27 到达
05-08 DNA提取
05-10 上机检测
05-14 检测完成
祖源分析
85的北方汉族,很是意外.没一点和巴蜀沾边
报告预览
后续
自己估算有6-7层较为符合情况
180916 中国之声《央广新闻》 报道 #11时12分28秒
60%真实性 消费者若有需求应该选择有资质的机构
http://cnvod.cnr.cn/audio2018/live/zgzs/201809/qlglx_20180916021905zgzs_h.m4a#2:12:32
http://www.radio.cn/pc-portal/erji/radioStation.html
作者:matrix
发布时间:2018-03-31
分类:零零星星
项目中有需要将统一的json接口数据转换为驼峰式字段名,但是网上的确没找到能解决的代码。
还好难度不大,直接正则替换就好。代码都是去年写的了,一直放在有道云笔记里面,早就想拉出来分享下,趁着还是3月份 补一片文章来占位。
代码是php的,其他语言同理用正则替换解决。
/**
* json编码处理 传入数组
* json字段名统一输出为驼峰式
* @param $data
* @return array
*/
protected function json_encode($data)
{
$data = json_encode($data);
return preg_replace_callback('/[_]([a-zA-Z])(?=[^"]*?":)/',
function ($matches) {
return strtoupper($matches[1]) ;
}, $data);
}
说明:
代码不需要过多解释,传入数组数据 结果值会返回json字符,字段名推统一替换为驼峰式。
核心在于[_]([a-zA-Z])(?=[^"]*?":)
的正则表达式
PEACE~
作者:matrix
发布时间:2018-01-25
分类:零零星星
昨晚听DaoTangBill说了下wakatime,感悟以前代码都TM白写了,连基本的时间记录都看不到 这工具简直是神器,没想过能统计编码时间,真是coder必备啊。
wakatime支持了很多IDE编辑器,IDEA家族,eclipse,sublime等 都有对应插件。只要编辑器是跨平台的,自然附加插件也就可以。
使用上只需要在IDE安装wakatime插件,输入key即可,完全不影响编码,不需要安装其余软件和设置开机启动操作。
官网
https://wakatime.com
获取账户 获取key
重新注册账户或者链接到GitHub之类的三方账户登录即可。
settings->account->Api Key
安装IDE对应的插件
在ide的插件中搜索wakatime安装,最后输入key即可。
Quantify your coding
系统会自动默认会每周发送一周的统计报表到邮箱,使用中。。。 巴适
参考:
http://www.iamlj.com/2016/07/recommend-tools-wakatime/
作者:matrix
发布时间:2017-12-13
分类:零零星星
github项目地址:https://github.com/wendux/ajax-hook/blob/master/src/ajaxhook.js
项目页面中有很多ajax接口请求,每次需要手动判断数据code进行错误消息提示,再加上有些使用jQuery,有些使用fetch操作,要是能有一个统一的$.ajaxSetup那就爽翻。搜索下ajax的全局拦截,有大神写好了,打开即食,NICE。代码量不大,大致的原理好像是把内置的XMLHttpRequest对象给代理了,克隆一份,进行伪装。请求操作都是通过的代理层,拦截、修改操作也都是可以的~
使用
加载ajaxhook.js
文件,代码中给浏览器window对象注册全局方法:hookAjax,unHookAjax。
hookAjax //挂载拦截钩子
unHookAjax() //取消ajax请求代理
拦截处理操作
hookAjax
方法注册拦截的切入点,执行回调操作。
这里用到onload
即请求完成获取数据的时候。
代码是放在vue项目里面,手动挂载DOM。若出现第一次错误请求没有成功拦截的情况,那就需要把代码放置在头部。
//全局监听ajax请求,用于提示会话过期,和其他的错误消息。
if ('function' === typeof(hookAjax)) {
hookAjax({
onload: function (xhr) {
if (xhr.status >= 500) return layer.alert('服务器报错,请联系管理员!'+"</br>请求地址:</br>"+xhr.responseURL, {icon: 2, title: '无形之刃 <3'});
var data = JSON.parse(xhr.responseText);
if (!!data) {
if (data.code !== 0) {
if (!!data.msg) {
layer.alert(data.msg, {icon: 2, title: 'ERROR'});
}
}
}
}
})
}
拦截函数 如:onload
返回值是一个boolean,如果为true
则会阻断
ajax请求,默认为false,不会阻断请求。
参考:
http://www.jianshu.com/p/9b634f1c9615
- 1
... - 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
... - 23