index

cate


程序员N定律和N原则---康威定律在实践中的一点思考

嫌 OSS 查询太慢?看我们如何将速度提升 10 倍

如何搭建自己的gitlab服务 Vim查找替换及正则表达式的使用

web组件

快捷地集成极光推送(JPush)到 Laravel 项目中

Laravel 集成 JPush 推送

解压到指定文件夹
tar -zxvf foo.tgz ./boo
tar -zxvf foo.tgz -C /opt/  
unzip -d /opt foo.zip


select B* from system_menu as A  
inner join system_menu as B 
on B.`parent_id`= A.id where A.id=9
Laravel:
shift()     pop()
prepend()   push()

from_unixtime();
unix_timestamp();

:Leaderf rg -e

查看外网地址
curl icanhazip.com
https://ipw.cn
https://ipaddress.my
https://iplocation.net

  PRIMARY KEY (`id`),
  KEY `t_u_s_index` (`topic_id`,`user_id`,`status`)
  
{!! !!} 相当于 <?php echo $value; ?>
{{ }}   相当于 <?php echo htmlspecialchars($value); ?>

laravel6移除了php artisan make:auth命令,
需要的时候执行composer require laravel/ui 下载扩展,
再执行php artisan ui vue --auth,
这里的vue可以换成 react或者bootstrap,决定使用的前端js框架。

$data = User::distinct()->offset(10)->limit(10)->get()->toArray();

查看版本
git log
git log -5
git log -5 filename
git log --oneline

查看版本更改详情
git show
git show {commit id}

回滚版本
git reset --hard HEAD^
git reset --hard HEAD^2
git reset --hard XXX
laravel5.6 频率限制throttle中间件,指定时间用户对路由的访问次数限制

yum -y update:升级所有包同时4102也升级软件和系统1653内核;
yum -y upgrade:只升级所有包,不升级软件和系统内核。

insert model, ctrl+r=, 计算
windows查看进程:
netstat -nato | finestr '443'
tasklist | findstr 6108


set_error_handler
set_exception_handler

2020-05-28

php debug输出问题
test中的测试方法

重新编译autoload.php文件
composer dump-autoload


PHP 7 标量类型声明 RFC,也可是 declare(strict_types = 1)

该RFC建议添加4种新的标量类型声明:int,float,string和bool,
这些类型声明将会和PHP原来的机制保持一致的用法。
RFC更推荐给每一个PHP文件,添加一句新的可选指令(declare(strict_type=1);),
让同一个PHP文件内的全部函数调用和语句返回,都有一个“严格约束”的标量类型声明检查。

diary:2020-05-18

2020-05-20

linux IP转发永久生效
vim /etc/sysctl.conf
>> net.ipv4.ip_forward = 1
sysctl -p /etc/sysctl.conf
systemctl restart network

leaderF
ctrl+F  -- fullpath to filename;  综合查找方式: filename;pathname
ctrl+R  -- to regex

批量删除buffers
:3,5bd
:bd 3 4 5
:bd *.vue <c-a>     --clear *.vue file buffer
:%bd                --clear all buffers

2020-05-15

批量替换diary路径
args **/*.html
set nomore
argdo %s/diary\/diary\.html/diary\//ge | update


R:则是不停的替换(一个挨着一个)
K → 帮助
'' 找到某个单词后, 再输入此命令则回到上次停留的位置.
`` 恢复

:abbr sprt System.out.println
输入sprt加非字母,显示System.out.println

/vim\|files 同时查找两个词
/jo[ha]n	Search john or joan
/\<the		Search the, theatre or then
/the\>		Search the or breathe
/\<the\>	Search the

/\CApp		只匹配App
/\cApp		匹配App app

/[\u4e00-\u9fa5]\+              匹配中文
/[\u4e00-\u9fa50-9A-Za-z]\+     匹配中文
/[\u4e00-\u9fa5_0-9A-Za-z]\+    下斜杠

%s/^\(\S\+ *\)\(\S\+ *\)/\2\1/g 交换空格隔开的两列
\S  --  非空格
*   --  0到多{0,}
\+  --  1到多{1,}
\?  --  0-1{0,1}
magic: 除了`^.*$`之外所有的字符都需要加反斜杠

##$subpattern = '/([\x{4e00}-\x{9fa5}_a-zA-Z0-9\s。?!,、;:“”’‘()【】《》]{0,6}?)';


\sE  topX
\st  光标下的table名
\sT  光标下的table名,并设置前多少行
\sdt desc tablename
\slt show tables;
\slv show views

增加图片链接
[[http://www.hkcd.com/images/a.jpg|{{http://localhost/image/aa.jpg}}]]

/pattern ?pattern 反向匹配

:%s/  */ /g		将多个空格换成一个空格
:g/^$/d			删除所有空行
:g/^ *$/d	    删除所有的空白行和空行

:%s/\([:.]\)  */\1 /g	使用空格替换句号或者冒号后面的多个空格

“abc……xyz”替换为“xyz……abc”
:%s/abc\(.*\)xyz/xyz\1abc/g
:%s/\(abc\)\(.*\)\(xyz\)/\3\2\1/g

远程编辑文件(使用操作系统的ftp)
:e ftp://192.168.10.76/abc.txt
:w ftp://192.168.10.76/abc.txt
:r ftp://192.168.10.76/abc.txt
vim ftp://username@hostname[:port]/full_directory/filename
$vim scp://user@host/[path_to_file] ???

Ctrl+a	Increment number under the cursor
Ctrl+x	Decrement number under the cursor
$array = array(
    0 => '霜天部落',
    1 => false,
    2 => 1,
    3 => null,
    4 => '',
    5 => 'http://www.hzhuti.com',
    6 => '0'
);
print_r(array_filter($array));
/*
输出结果为:
Array
(
	[0] => 霜天部落
	[2] => 1
	[5] => http://www.hzhuti.com
)
*/

2020-05-09

当使用 rem 单位,他们转化为像素大小取决于页根元素的字体大小,即 html 元素的字体大小。
html{font-size:16px; padding:10rem;}

当使用em单位时,像素值将是em值乘以使用em单位的当前元素的字体大小。
.container {font-size:16px; padding-top:10em;}

不要在多列布局中使用 em 或 rem ,改用%。

设计组件比如按钮,菜单。 当你修改字体大小的时候,你希望整个组件都适当缩放。
使用em单位,默认字体大小的元素上的padding、 margin、 width、 height和line-height等值。

font-family: -apple-system-font,"Microsoft YaHei","微软雅黑","黑体",Arial;
-apple-system-font              默认苹果字体
-webkit-text-size-adjust: 100%;
  -ms-text-size-adjust: 100%;
text-size-adjust                设置移动端随设备大小的字体
font: 12px/1.5 Arial            line-height=12*1.5=18px
letter-spacing: .034em          字间距
color: #333                     设置非纯黑字体
font-weight: 400                字体加粗,非blod
* { }                           通配符,指所有html标签

[hidden] { display:none; }
button[disabled] { }
input[type="text"] { }
[src][target] { }
div#video {}
div.title {}
.title:before { }

[class^='span']             <div class="span1" />
[class$='item']             <div class="firstitem" />
[class*='span']             <div class="colspan1" />
[class|='col']              <div class="col-1" />
[class~="glyphicon"]        <div class="glyphicon glyphicon-plus" />

2020-05-08

console.log('1','2','3');
console.log('%d + %d = %d', 1,1,2);

输出object对象
console.log('%o', document.body);
>>><body class style></body>
console.log('%O', document.body);
>>>输出详细节点

测试性能
console.time('lazy');var x=0;for(var i=0; i < 10000; i++) {x = x + i*i;} console.timeEnd('lazy');


输出DOM结构
console.dir(dom)

打印调用栈
console.trace()
console.error()

统计执行次数
console.count('xxx');

分组
console.group('group A');
console.log(1);
console.log('abc');
console.groupEnd('group A');

清空console
console.clear()

2020-04-28

模拟网页提交POST
curl -d "param1=value1&param2=value2" -H "Content-Type: application/x-www-form-urlencoded" -X POST http://localhost:3000/data

git pull                    #远程下载并合并分支
ps aux
ps -ef
ps -u www

netstat -nat | awk '{print $6}' | sort | uniq -c | sort -nr
netstat -l
netstat -p
netstat -r
netstat -n | awk '/^tcp/ {++S[$NF]} END {for (a in S) print a, S[a]}'

使用会话和viminfo

2020-04-25

ignore_user_abort(true);
set_time_limit(0)
error_reporting(E_ALL);
ini_set('display_errors', 1);


保存buffer列表
:let buffers = filter(range(1, bufnr('$')), 'bufexists(v:val)'
:let buffers = map(copy(getbufinfo()), 'v:val.bufnr')
:set sessionoptions=buffers
:mksession
:so Session.vim, or from the commandline with vim -S Session.vim


sessionoptions选项: 
blank       //空窗口
buffers     //所有的缓冲区
curdir      //当前目录
folds       //折叠(fold)相关的信息
help        //帮助窗口
options     //所有的选项和映射
tabpages    //所有的标签页
winsize"    //窗口大小
slash       //windows路径改为'/'
unix        //linux换行

session设置:
:set sessionoptions=buffers,sesdir,folds,options,slash
:mksession .vimses      //保存session
:source .vimses         //恢复session

自动打开session
vim -S .vimses

:wviminfo               //保存.viminfo
:rviminfo

:ls         buffer列表
:ba a.txt   增加buffer
:bd a.txt   删除buffer
:3,5bd      删除3,4,5buffer

\wd     删除wiki文件
\wr     重命名文件,自动修改相关链接
\whh -- convert current wiki page to HTML and open it in webbrowser.
\w\w -- open/new today's diary
\w\i -- update diary section in diary index
\w\t -- open/new today's diary in a new tab

跳转到函数、全局结构、全局变量等tag: 组合键 ctrl_]
从tag处返回跳转的位置:组合键 ctrl_t
跳转到全局变量处: 快捷键 gD
跳转到局部变量处: 快捷键 gd

ctrl+w]  切换在当前窗口
:ts <tag> <RET>	Search for a particular tag
:tn	        Go to the next definition for the last tag
:tp	        Go to the previous definition for the last tag
:ts	        List all of the definitions of the last tag

\\f
\\b
<f5>  更新目录缓存。
<c-f> / <c-b> 在模式之间切换
<c-d> 在”完整路径匹配“ 和 ”文件名匹配“ 之间切换
<c-r> 在“字符串模式” 和 “正则表达式模式” 之间切换

:1,10 w!a.txt	将1-10行写到文件a.txt

:res+5          resize window height 
:vert res+5     resize window width

zz zt zb
光标移动到屏幕的上下或中部:H L M

m[a-z]
m[A-Z] 			全局标签
'{a-zA-Z}		跳转到书签
:delm {marks} 	删除一个书签:delm a
:delm !			删除全部书签 (delete all marks)
:marks 			显示系统全部书签

vis 选中一个句子
vib 选中一个block
viw 选中一个单词
vip 选中一个段落
) :光标移至句尾
( :光标移至句首
{:光标移至段落开头
}:光标移至段落结尾

:g/string/d
:v/string/d

vimgrep /pattern/ %           在当前打开文件中查找
vimgrep /pattern/ *           在当前目录下查找所有
vimgrep /pattern/ **          在当前目录及子目录下查找所有
vimgrep /pattern/ *.c         查找当前目录下所有.c文件
vimgrep /pattern/ **/*        只查找子目录

:args 命令,vim 启动后还可以增删改
args \a\*.txt 			  a目录下的所有纯文本文件作上标记,
args \a\**\*.txt 		  包括子目录
:argdo %s/\<x_cnt\>/x_counter/ge | update 
:bufdo 是在所有 buffer 中执行命令