分类 默认分类 下的文章

1+6 linux deploy 记录

apt-get install nodejs npm curl wget python3 zip unzip
npm install pm2 -g

PS1='${debian_chroot:+($debian_chroot)}[033[01;32m]u[033[01;31m]@[033[01;36m]h[033[00m]:[033[01;34m]W[033[00m]$ '

bat脚本远程备份文件

配合Windows计划任务,编写脚本并设置定时启动

从192.168.1.1test文件夹下复制全部文件到本地test文件夹下,
并保留修改时间最近的3个sql文件,删除其他的sql文件

@echo off&setlocal enabledelayedexpansion

xcopy /F /d \\192.168.1.1\test\*.* F:\test\

pushd F:\test\
set n=0
for /f "delims=" %%a in ('dir /a-d-h /b /o-d *.sql') do (
if !n! geq 3 del "%%~a"
set /a n+=1
)
popd

脚本说明

xcopy

/f 复制时显示源文件名和目标文件名。
/d [:MM-DD-YYYY] 仅复制指定日期或之后更改的源文件。 如果未包含 MM-DD-YYYYY 值,xcopy则复制比现有目标文件更新的所有源文件。 此命令行选项允许更新已更改的文件。

setlocal enabledelayedexpansion 扩展本地环境变量延迟

在cmd执行命令前会对脚本进行预处理,其中有一个过程是变量识别过程,在这个过程中,如果有两个%括起来的如%value%类似这样的变量,就会对其进行识别,并且查找这个变量对应的值,再而将值替换掉这个变量,这个替换值的过程,就叫做变量扩展,然后再执行命令。
但如果出现动态的情况会怎样?在cmd执行中,发生动态的一种情况是在 for语句中进行变量赋值。
开启了变量延迟,在for循环中每次赋予str的值才会被传递下去,但这里的str变量符必须要写成!str!

Pushd&Popd

Pushd 命令
改变当前目录到指定目录,并保存当前的目录在堆栈顶端
Popd 命令
改变当前目录,跳转到堆栈顶端保存的目录,并将堆栈顶端的目录删除

for

delims= 用来告诉for每一行应该拿什么作为分隔符
用%%a代替循环中的每一行(每个文件名)

EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于

set /a 是指定一个变量等于一串运算字符

dir /a-d-h /b /o-d *.sql

dir官方文档

/a 仅显示具有指定属性的目录和文件的名称

d - 目录
h - 隐藏文件
s - 系统文件

可以使用这些值的任何组合,但不要使用空格分隔值。 (可选)可以使用冒号 (:) 分隔符,也可以使用连字符 (-) 作为前缀来表示“not”。 例如,使用 -s 属性不会显示系统文件

/b 显示目录和文件的裸列表,没有其他信息
/o[[:]<sortorder>] 根据 sortorder 对输出进行排序,它可以是以下值的任意组合

d - 按日期/时间,最早
-使用前缀反转排序顺序

获取昨天的日期并格式化输出

配合vbs脚本

:: yesterdays date

@echo off
set day=-1
echo >"%temp%\%~n0.vbs" s=DateAdd("d",%day%,now) : d=weekday(s)
echo>>"%temp%\%~n0.vbs" WScript.Echo year(s)^& right(100+month(s),2)^& right(100+day(s),2)
for /f %%a in ('cscript /nologo "%temp%\%~n0.vbs"') do set "result=%%a"
del "%temp%\%~n0.vbs"
set "YYYY=%result:~0,4%"
set "MM=%result:~4,2%"
set "DD=%result:~6,2%"
set "data=%yyyy%-%mm%-%dd%"

echo Yesterday was "%data%"
pause

pm2安装使用(录播姬为例)


PM2 官方文档


安装

apt-get install npm
npm install pm2 -g

使用

pm2 start --name recorder "/root/live/BililiveRecorder.Cli run '/mnt/bilibili'"

查看和控制运行状态

pm2 ps

# "recorder" 是上面运行 pm2 start 时传入的 --name 参数
pm2 start recorder
pm2 stop recorder
pm2 restart recorder

pm2 logs recorder

pm2 delete recorder

前端学习

2023/1/12

concat() 方法用于连接两个或多个数组
箭头函数不绑定this,默认去上一层作用域去找this,有用处
var 全局定义变量,变量会给到window

2023/1/6

学方老师昨天直播推荐的正则表达式30分钟入门教程

//匹配ip地址
((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)

后向引用用于重复搜索前面某个分组匹配的文本
零宽断言用于查找在某些内容(但并不包括这些内容)之前或之后的东西(指定一个位置)
负向零宽断言只是想要确保某个字符没有出现,但并不想去匹配它

\d{3}(?!\d)匹配三位数字,而且这三位数字的后面不能是数字
\b((?!abc)\w)+\b匹配不包含连续字符串abc的单词。
同理,我们可以用(?<!exp),零宽度负回顾后发断言来断言此位置的前面不能匹配表达式exp:
(?<![a-z])\d{7}匹配前面不是小写字母的七位数字。
一个复杂的例子:(?<=<(\w+)>).*(?=<\/\1>)匹配不包含属性的简单HTML标签内里的内容。

2023/1/5

听方老师讲2022年前端,vercel,figma公司
Figma-UI设计器 知乎-Figma是什么

听了一点js面试题。

  • setTimeout()打印循环
for(var i=1;i<4;i++){
    setTimeout(function(){
        console.log(i);
    },1000);
}

i为全局变量,会先执行完循环(js是单线程机制,先执行同步代码,最后执行异步代码,setTimeout是异步调用),
此时i的值已经为4,之前每次循环放入异步队列中的函数就会依次打印出i的值,即连续打印3次4

解决方法:

  1. 用let,let在循环中每一个值都会单独存在一个独立的作用域中不会被覆盖掉
  2. 闭包(不会)
for(var i=1;i<4;i++){
    (function(j){
        setTimeout(function(){
            console.log(j);
        },1000*j);
    })(i);
}
  • .this指向谁
    注意use script;严格模式

从0开始学Git

Git是什么?
Git是分布式版本控制系统

初始化

使用当前目录作为Git仓库并初始化

git init

使用指定目录作为Git仓库进行初始化

git init newrepo

git init命令只做一件事,就是在项目根目录下创建一个.git子目录,用来保存版本信息

添加新文件到暂存区

git add filename
git add *

从暂存区提交版本

git commit -m "代码提交信息"

如果不使用-m,会出现编辑器来让你写自己的注释信息
提交暂存区所有修改,使用-a标识

git commit -a -m "代码提交信息"

-a不会造成新文件被提交,只能修改

发布版本

从服务器克隆一个库

git clone ssh://example.com/~/www/project.git

修改之后可以推送到服务器

git push ssh://example.com/~/www/project.git

取回更新

下面命令表示,当前分支自动与唯一一个追踪分支进行合并

git pull

从非默认位置更新到指定的url

git pull http://git.example.com/project.git

代码高亮测试

$a = 1
$str = "hello world"
Set-Variable a 1
Set-Variable str "helloworld"




ipconfig /release
ipconfig /renew

set /a yyyy=%date:~0,4%,mm=1%date:~5,2%%%100,dd=1%date:~8,2%%%100

rar a E:\%yyyy%.%mm%.%dd%.zip E:\%yyyy%.%mm%.%dd%

rem ----邮件内容-----
set body=%yyyy%.%mm%.%dd%
rem ----邮件主题----
set s=%yyyy%.%mm%.%dd%
rem ----收件邮箱-----
set 
rem ----发件邮箱-----
set 
rem ----邮箱秘钥-----
set 
rem ----附件-----
set attach=%yyyy%.%mm%.%dd%.zip
set debug=-debug -log blat.log -timestamp

rem ----执行发送-----
E:
Blat -body %body% -s %s% -attach %attach% -t %t% -server smtp.126.com  -f %f% -u %f% -pw %pw% -base64 -charset utf8 %debug% -try 3

Linux cron命令

  1. 启动

    service cron restart/start/stop
  2. crontab
    显示出当前用户cron服务的详细内容。

    crontab –l

    打开默认的编辑当前用户cron服务的编辑器

    crontab –e

    分钟 (0-59) 

    小時 (0-23) 

    日期 (1-31)
    月份 (1-12) 

    星期 (0-6)//0代表星期天

css

后代选择器
.div p{}

子代选择器
.div > p{}
子代只包括儿子,可有多个

交集选择器
p.red{}
p标签下red类


emmet语法

生成普通标签
div + Tab

生成带类名标签
.red + Tab

生成带id标签
#red + Tab

类名+id标签
p.red#one + Tab

生成儿子,子代选择器
ul>li
复合:p.red#one>p.blue#one

生成内部文本,大括号{}
ul>li{内容}

多个标签
ul>li*5

hover伪类选择器 hover:悬停; 盘旋
a:hover{}


背景颜色
background-color:red
background-color:transparent 透明

preView