Anony https://blog.52learn.top/ Anony's Blog-学习与分享,生活与感受 富文本编辑工具TinyMCE首行缩进问题 https://blog.52learn.top/index.php/archives/61/ 2023-01-15T09:33:00+08:00 在调整字体大小之后首行缩进并不是两个字符,效果如下图所示查看一下生成的源码:原因:点击首行缩进是加在了外层的p标签上,而所有的字号大小都是加在了span标签上,p标签为默认字体大小,首行缩进两字符之后并不会对其解决直接将首行缩进设置为固定字体高度indent2em_val: "32px", // 首行缩进32px重写段落功能formats: { p: { block: "p", styles: { "font-size": "16px" } }, }, // 格式化段落以上第一种方式是将首行缩进设置为固定宽度,如果和字体宽度对不上,也会出现错位的情况。第二种方式是改变最外层p标签字体大小,同样具有局限性,失去了原有自动缩进两字符的效果 JavaScript数据类型及检测方法 https://blog.52learn.top/index.php/archives/60/ 2022-09-14T14:15:24+08:00 数据类型七种原始数据类型(值类型/基本类型):number :用于任何类型的数字:整数或浮点数,在 ±(253-1) 范围内的整数。bigint :用于任意长度的整数。string :用于字符串:一个字符串可以包含 0 个或多个字符,所以没有单独的单字符类型。boolean :用于 true 和 false。null :用于未知的值 —— 只有一个 null 值的独立类型。undefined :用于未定义的值 —— 只有一个 undefined 值的独立类型。symbol :用于唯一的标识符。非原始数据类型(引用数据类型/对象类型):object :用于更复杂的数据结构。对象(Object)数组(Array)函数(Function)检测数据类型typeof:string、number、boolean、null、undefined、symbol、object、function检测基本数据类型,null会被检测为object检测复杂数据类型,除function外,均为objectinstanceof:检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上只能检测复杂数据类型console.log([] instanceof Array) // truetoString:toString() 是 Object 的原型方法,调用该方法,默认返回当前对象的 [[Class]] 。这是一个内部属性,其格式为 [object Xxx] ,其中 Xxx 就是对象的类型。对于 Object 对象,直接调用 toString() 就能返回 [object Object] 。而对于其他对象,则需要通过 call / apply 来调用才能返回正确的类型信息。Object.prototype.toString.call('') ; // [object String] Object.prototype.toString.call(1) ; // [object Number] Object.prototype.toString.call(true) ; // [object Boolean] Object.prototype.toString.call(Symbol()); // [object Symbol] Object.prototype.toString.call(undefined) ; // [object Undefined] Object.prototype.toString.call(null) ; // [object Null] Object.prototype.toString.call(new Function()) ; // [object Function] Object.prototype.toString.call(new Date()) ; // [object Date] Object.prototype.toString.call([]) ; // [object Array] Object.prototype.toString.call(new RegExp()) ; // [object RegExp] Object.prototype.toString.call(new Error()) ; // [object Error] Object.prototype.toString.call(document) ; // [object HTMLDocument] Object.prototype.toString.call(window) ; // [object global] window 是全局对象 global 的引用 constructor: const arr = [] console.log(arr.constructor === Array)只能检测由字面量创建出来的数据类型isArray:console.log(Array.isArray([]));注意没有isObject Vue中使用Layui https://blog.52learn.top/index.php/archives/59/ 2022-07-20T19:21:00+08:00 前言在 Vue 中引入 layui 并使用的方法步骤下载在 GitHub 下载或者使用 npm 包管理工具进行安装作者原话: layui 原官网已于2021年10月13日下线。鉴于 Layui 相对庞大的受众群体,从此 Github 和 Gitee 平台将支撑起 Layui 的后续。 Layui GitHub地址 npm命令:npm install layui找到下载目录将整个文件夹放到 public 文件夹下引入文件注意:一定要将 layui 文件夹放到公共目录,不然会报错 引入两个关键文件即可 至此 layui 的全部功能即可在 vue 中使用 虽然但是,不推荐这么干!!! CSS实现鼠标悬停改变其他标签样式 https://blog.52learn.top/index.php/archives/55/ 2022-04-03T10:15:00+08:00 CSS实现鼠标悬停改变其他标签样式控制子标签(.div1:hover和.div2之间使用空格)<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> .div1,.div2 { width: 200px; height: 100px; background-color: pink; } .div2 { background-color: aqua; display: none; } .div1:hover .div2 { display: block; } </style> </head> <body> <div class="div1">div1 <div class="div3">div3</div> <div class="div2">div2</div> </div> </body> </html>被控制标签只要是控制标签的子标签就可以,里有其他标签(如.div3)不会影响效果!控制兄弟标签(.div1:hover和.div2之间使用+)<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> .div1,.div2 { width: 200px; height: 100px; background-color: pink; } .div2 { background-color: aqua; display: none; } .div1:hover+.div2 { display: block; } </style> </head> <body> <div class="div1">div1</div> <!-- <div class="div3">div3</div> --> <div class="div2">div2</div> </body> </html>使用“+”时,.div2必须紧贴在.div屁股后面才会有效果,否则无效!!!例如:将.div3取消注释后,.div1将无法控制.div2的样式!!!如果控制标签和被控制标签中间有内容,需要按照第三种方式写!控制兄弟标签(中间有内容)(.div1:hover和.div2之间使用~)<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> .div1,.div2 { width: 200px; height: 100px; background-color: pink; } .div2 { background-color: aqua; display: none; } .div1:hover~.div2 { display: block; } </style> </head> <body> <div class="div1">div1</div> <div class="div3">div3</div> <div class="div2">div2</div> </body> </html>这种方法的使用要求是被控制标签必须在控制标签的下面,中间可以有任意内容。 Iperf3安装及使用方法 https://blog.52learn.top/index.php/archives/54/ 2022-03-05T22:34:00+08:00 常用的内网测试工具,主要进行网络带宽测试。安装命令Debian/Ubuntu安装apt install iperf3Docker安装docker search iperf3 docker pull mlabbe/iperf3使用服务端启用iperf3 -s #默认端口5201客户端TCP 下行测试:iperf3 -c 服务端IP -R UDP 上行测试;iperf3 -c 服务端IP -u -b 300M UDP 下行测试:iperf3 -c 服务端IP -u -b 500M VPS脚本 https://blog.52learn.top/index.php/archives/53/ 2022-02-09T10:08:00+08:00 萌咖一键DD纯净系统脚本(2021年8月最新版)LOC论坛原帖 [acc status="" title="点击查看命令"] 推荐DD为Debian10 64位bash <(wget --no-check-certificate -qO- 'https://raw.githubusercontent.com/MoeClub/Note/master/InstallNET.sh') -d 10 -v 64 -p "自定义root密码" -port "自定义ssh端口"DD为CentOS 6.9 以下命令中的 -c 后面为CentOS版本号,-v 后面为64位/32位,可根据需求进行替换。# CentOS 6.9 64位: bash <(wget --no-check-certificate -qO- 'https://moeclub.org/attachment/LinuxShell/InstallNET.sh') -c 6.9 -v 64 -a # CentOS 6.9 32位: bash <(wget --no-check-certificate -qO- 'https://moeclub.org/attachment/LinuxShell/InstallNET.sh') -c 6.9 -v 32 -aDD为Debian以下命令中的 -d 后面为Debian版本号,-v 后面为64位/32位,可根据需求进行替换。# Debian 8 64位: bash <(wget --no-check-certificate -qO- 'https://moeclub.org/attachment/LinuxShell/InstallNET.sh') -d 8 -v 64 -a # Debian 9 64位: bash <(wget --no-check-certificate -qO- 'https://moeclub.org/attachment/LinuxShell/InstallNET.sh') -d 9 -v 64 -aDD为Ubuntu以下命令中的 -u 后面为Ubuntu版本号,-v 后面为64位/32位,可根据需求进行替换。# Ubuntu 12.04 64位: bash <(wget --no-check-certificate -qO- 'https://moeclub.org/attachment/LinuxShell/InstallNET.sh') -u 12.04 -v 64 -a # Ubuntu 14.04 64位: bash <(wget --no-check-certificate -qO- 'https://moeclub.org/attachment/LinuxShell/InstallNET.sh') -u 14.04 -v 64 -a # Ubuntu 16.04 64位: bash <(wget --no-check-certificate -qO- 'https://moeclub.org/attachment/LinuxShell/InstallNET.sh') -u 16.04 -v 64 -a # Ubuntu 18.04 64位: bash <(wget --no-check-certificate -qO- 'https://moeclub.org/attachment/LinuxShell/InstallNET.sh') -u 18.04 -v 64 -a开机密码#!/bin/bash echo root:Vicer |sudo chpasswd root sudo sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin yes/g' /etc/ssh/sshd_config; sudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication yes/g' /etc/ssh/sshd_config; sudo reboot[/acc]Docke[acc status="" title="点击查看命令"]curl -fsSL https://get.docker.com | sh[/acc]speed test-X(Docker版)GitHub[acc status="" title="点击查看命令"]拉取 Docker 镜像docker pull badapple9/speedtest-x(ARM 架构的机器,执行 docker pull stilleshan/speedtest-x,ARM 镜像由热心网友制作)运行容器 docker run -d -p 9001:80 -it badapple9/speedtest-x(ARM 架构的机器,运行 docker run -d -p 9001:80 -it stilleshan/speedtest-x)[/acc]BBR四合一脚本GitHub[acc status="" title="点击查看命令"] wget -N --no-check-certificate "https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/tcp.sh" && chmod +x tcp.sh && ./tcp.sh [/acc]X-uiGitHub [acc status="" title="点击查看命令"] 使用一键安装/升级脚本 bash <(curl -Ls https://raw.githubusercontent.com/vaxilu/x-ui/master/install.sh) [/acc]Caddy一键管理脚本原文 [acc status="" title="点击查看命令"] wget https://git.io/vra5C -O - -o /dev/null|bash[/acc] 《僵尸校园》阿里云盘分享 https://blog.52learn.top/index.php/archives/52/ 2022-01-28T22:29:06+08:00 2022.1.28上映Netflex喜欢丧尸题材的可以看看 阿里云盘:https://www.aliyundrive.com/s/ckJ3XustfQA Docker常用命令 https://blog.52learn.top/index.php/archives/51/ 2022-01-28T22:10:00+08:00 列出所有容器IDdocker ps -a删除某一镜像docker rmi 镜像ID 停止所有的容器docker stop $(docker ps -a)删除所有的容器docker rm $(docker ps -a)删除所有的镜像docker rmi $(docker images -q)删除所有不使用的镜像docker image prune --force --all 或 docker image prune -f -a删除所有停止的容器docker container prune -f 记:JD_Docker京东签到Docker版部署-自动领京豆 https://blog.52learn.top/index.php/archives/21/ 2021-03-12T16:13:00+08:00 前言记录一次根据lxk0301大佬的仓库搭建京东自动签到的过程。 作者仓库地址:https://github.com/wisz2021/jd_docker1. 所需环境DockerDocker-Compose 安装命令:#Ubuntu #安装Docker sudo curl -sSL get.docker.com | sh #安装Docker-Compose sudo apt-get update && sudo apt-get install -y python3-pip curl vim git moreutils pip3 install --upgrade pip pip install docker-compose2. 创建所需目录2.1 目录文件结构:jd_scripts├── logs├── my_crontab_list.sh└── docker-compose.yml#命令创建所需文件 mkdir -p jd_scripts/logs2.2 编辑docker-compose.yml文件nano ./jd_scripts/docker-compose.yml docker-compose.yml文件内容:jd_scripts: image: lxk0301/jd_scripts # 配置服务器资源约束。此例子中服务被限制为使用内存不超过200M以及cpu不超过0.2(单核的20%) # 经过实际测试,建议不低于200M # deploy: # resources: # limits: # cpus: '0.2' # memory: 200M container_name: jd_scripts restart: always volumes: - ./logs:/scripts/logs tty: true # 因为更换仓库地址可能git pull的dns解析不到,可以在配置追加hosts extra_hosts: - "gitee.com:180.97.125.228" - "github.com:13.229.188.59" - "raw.githubusercontent.com:151.101.228.133" environment: #脚本更新仓库地址,配置了会切换到对应的地址 - REPO_URL=git@gitee.com:lxk0301/jd_scripts.git # 注意环境变量填写值的时候一律不需要引号(""或者'')下面这些只是事例,根据自己的需求增加删除 #jd cookies # 例: JD_COOKIE=pt_key=XXX;pt_pin=XXX - JD_COOKIE= #微信server酱通 - PUSH_KEY= #Bark App通知 - BARK_PUSH= #telegram机器人通知 - TG_BOT_TOKEN= - TG_USER_ID= #钉钉机器人通知 - DD_BOT_TOKEN= - DD_BOT_SECRET= #企业微信机器人通知 - QYWX_KEY= #京东种豆得豆 - PLANT_BEAN_SHARECODES= #京东农场 # 例: FRUITSHARECODES=京东农场的互助码 - FRUITSHARECODES= #京东萌宠 # 例: PETSHARECODES=东东萌宠的互助码 - PETSHARECODES= # 宠汪汪的喂食数量 - JOY_FEED_COUNT= #东东超市 # - SUPERMARKET_SHARECODES= #兑换多少数量的京豆(20,或者1000京豆,或者其他奖品的文字) # 例: MARKET_COIN_TO_BEANS=1000 - MARKET_COIN_TO_BEANS= #是否开启debug模式打印日志 # 例: JD_DEBUG=false - JD_DEBUG= #如果设置了 RANDOM_DELAY_MAX ,则会启用随机延迟功能,延迟随机 0 到 RANDOM_DELAY_MAX-1 秒。如果不设置此项,则不使用延迟。 #并不是所有的脚本都会被启用延迟,因为有一些脚本需要整点触发。延迟的目的有两个,1是降低抢占cpu资源几率,2是降低检查风险(主要是1) #填写数字,单位为秒,比如写为 RANDOM_DELAY_MAX=30 就是随机产生0到29之间的一个秒数,执行延迟的意思。 - RANDOM_DELAY_MAX=120 #新版docker单容器多账号自动互助(多账号删除下一行#开启) #- ENABLE_AUTO_HELP=true2.3 编辑my_crontab_list.sh文件nano ./jd_scripts/my_crontab_list.sh my_crontab_list.sh文件内容:# 每3天的23:50分清理一次日志(互助码不清理,proc_file.sh对该文件进行了去重) 50 23 */3 * * find /scripts/logs -name '*.log' | grep -v 'sharecode' | xargs rm -rf ##############短期活动############## # 小鸽有礼2(活动时间:2021年1月28日~2021年2月28日) 34 9 * * * node /scripts/jd_xgyl.js >> /scripts/logs/jd_jd_xgyl.log 2>&1 #女装盲盒 活动时间:2021-2-19至2021-2-25 5 7,23 19-25 2 * node /scripts/jd_nzmh.js >> /scripts/logs/jd_nzmh.log 2>&1 #京东极速版天天领红包 活动时间:2021-1-18至2021-3-3 5 0,23 * * * node /scripts/jd_speed_redpocke.js >> /scripts/logs/jd_speed_redpocke.log 2>&1 ##############长期活动############## # 签到 3 0,18 * * * cd /scripts && node jd_bean_sign.js >> /scripts/logs/jd_bean_sign.log 2>&1 # 东东超市兑换奖品 0,30 0 * * * node /scripts/jd_blueCoin.js >> /scripts/logs/jd_blueCoin.log 2>&1 # 摇京豆 0 0 * * * node /scripts/jd_club_lottery.js >> /scripts/logs/jd_club_lottery.log 2>&1 # 东东农场 5 6-18/6 * * * node /scripts/jd_fruit.js >> /scripts/logs/jd_fruit.log 2>&1 # 宠汪汪 15 */2 * * * node /scripts/jd_joy.js >> /scripts/logs/jd_joy.log 2>&1 # 宠汪汪喂食 15 */1 * * * node /scripts/jd_joy_feedPets.js >> /scripts/logs/jd_joy_feedPets.log 2>&1 # 宠汪汪偷好友积分与狗粮 13 0-21/3 * * * node /scripts/jd_joy_steal.js >> /scripts/logs/jd_joy_steal.log 2>&1 # 摇钱树 0 */2 * * * node /scripts/jd_moneyTree.js >> /scripts/logs/jd_moneyTree.log 2>&1 # 东东萌宠 5 6-18/6 * * * node /scripts/jd_pet.js >> /scripts/logs/jd_pet.log 2>&1 # 京东种豆得豆 0 7-22/1 * * * node /scripts/jd_plantBean.js >> /scripts/logs/jd_plantBean.log 2>&1 # 京东全民开红包 1 1 * * * node /scripts/jd_redPacket.js >> /scripts/logs/jd_redPacket.log 2>&1 # 进店领豆 10 0 * * * node /scripts/jd_shop.js >> /scripts/logs/jd_shop.log 2>&1 # 京东天天加速 8 */3 * * * node /scripts/jd_speed.js >> /scripts/logs/jd_speed.log 2>&1 # 东东超市 11 1-23/5 * * * node /scripts/jd_superMarket.js >> /scripts/logs/jd_superMarket.log 2>&1 # 取关京东店铺商品 55 23 * * * node /scripts/jd_unsubscribe.js >> /scripts/logs/jd_unsubscribe.log 2>&1 # 京豆变动通知 0 10 * * * node /scripts/jd_bean_change.js >> /scripts/logs/jd_bean_change.log 2>&1 # 京东抽奖机 11 1 * * * node /scripts/jd_lotteryMachine.js >> /scripts/logs/jd_lotteryMachine.log 2>&1 # 京东排行榜 11 9 * * * node /scripts/jd_rankingList.js >> /scripts/logs/jd_rankingList.log 2>&1 # 天天提鹅 18 * * * * node /scripts/jd_daily_egg.js >> /scripts/logs/jd_daily_egg.log 2>&1 # 金融养猪 12 * * * * node /scripts/jd_pigPet.js >> /scripts/logs/jd_pigPet.log 2>&1 # 点点券 20 0,20 * * * node /scripts/jd_necklace.js >> /scripts/logs/jd_necklace.log 2>&1 # 京喜工厂 20 * * * * node /scripts/jd_dreamFactory.js >> /scripts/logs/jd_dreamFactory.log 2>&1 # 东东小窝 16 6,23 * * * node /scripts/jd_small_home.js >> /scripts/logs/jd_small_home.log 2>&1 # 东东工厂 36 * * * * node /scripts/jd_jdfactory.js >> /scripts/logs/jd_jdfactory.log 2>&1 # 十元街 36 8,18 * * * node /scripts/jd_syj.js >> /scripts/logs/jd_syj.log 2>&1 # 京东快递签到 23 1 * * * node /scripts/jd_kd.js >> /scripts/logs/jd_kd.log 2>&1 # 京东汽车(签到满500赛点可兑换500京豆) 0 0 * * * node /scripts/jd_car.js >> /scripts/logs/jd_car.log 2>&1 # 领京豆额外奖励(每日可获得3京豆) 33 4 * * * node /scripts/jd_bean_home.js >> /scripts/logs/jd_bean_home.log 2>&1 # 微信小程序京东赚赚 10 11 * * * node /scripts/jd_jdzz.js >> /scripts/logs/jd_jdzz.log 2>&1 # 宠汪汪邀请助力 10 9-20/2 * * * node /scripts/jd_joy_run.js >> /scripts/logs/jd_joy_run.log 2>&1 # crazyJoy自动每日任务 10 7 * * * node /scripts/jd_crazy_joy.js >> /scripts/logs/jd_crazy_joy.log 2>&1 # 京东汽车旅程赛点兑换金豆 0 0 * * * node /scripts/jd_car_exchange.js >> /scripts/logs/jd_car_exchange.log 2>&1 # 导到所有互助码 47 7 * * * node /scripts/jd_get_share_code.js >> /scripts/logs/jd_get_share_code.log 2>&1 # 口袋书店 7 8,12,18 * * * node /scripts/jd_bookshop.js >> /scripts/logs/jd_bookshop.log 2>&1 # 京喜农场 0 9,12,18 * * * node /scripts/jd_jxnc.js >> /scripts/logs/jd_jxnc.log 2>&1 # 签到领现金 27 */4 * * * node /scripts/jd_cash.js >> /scripts/logs/jd_cash.log 2>&1 # 京喜app签到 39 7 * * * node /scripts/jx_sign.js >> /scripts/logs/jx_sign.log 2>&1 # 京东家庭号(暂不知最佳cron) # */20 * * * * node /scripts/jd_family.js >> /scripts/logs/jd_family.log 2>&1 # 闪购盲盒 27 8 * * * node /scripts/jd_sgmh.js >> /scripts/logs/jd_sgmh.log 2>&1 # 京东秒秒币 10 7 * * * node /scripts/jd_ms.js >> /scripts/logs/jd_ms.log 2>&1 #美丽研究院 1 7,12,19 * * * node /scripts/jd_beauty.js >> /scripts/logs/jd_beauty.log 2>&1 #京东保价 1 0,23 * * * node /scripts/jd_price.js >> /scripts/logs/jd_price.log 2>&1 #京东极速版签到+赚现金任务 1 1,6 * * * node /scripts/jd_speed_sign.js >> /scripts/logs/jd_speed_sign.log 2>&1 # 删除优惠券(默认注释,如需要自己开启,如有误删,已删除的券可以在回收站中还原,慎用) #20 9 * * 6 node /scripts/jd_delCoupon.js >> /scripts/logs/jd_delCoupon.log 2>&1[RainBowText]编辑完记得保存[/RainBowText]3. 配置京东Cookie3.1 获取Cookie只需要pt_pin和pt_key这两个值可参考教程:通过浏览器插件获取京东Cookie获取3.2 填写Cookie将上面获取的pt_pin和pt_key填入docker-compose.yml文件相应位置 如下图所示(多个账号的cookie使用&隔开):3.3 启动在jd_scripts文件夹内执行此命令启动:docker-compose up -d[RainBowText]注:每次修改docker-compose.yml文件之后要运行此命令使更改生效[/RainBowText]4. 其他命令4.1 Docker-Compose命令(需要在jd_scripts文件夹内执行)命令用法docker-compose logs打印日志docker-compose pull更新镜像docker-compose stop停止容器docker-compose restart重启容器docker-compose down停止并删除容器4.2 其他命令命令用法docker exec -it jd_scripts /bin/sh -c 'git -C /scripts pull && node /scripts/jd_bean_change.js'手动运行一脚本docker exec -it jd_scripts /bin/sh -c 'env'查看设置的环境变量docker exec -it jd_scripts /bin/sh -c 'git pull'手动更新jd_scripts仓库最新脚本docker exec -it jd_scripts /bin/sh仅进入容器命令rm -rf logs/*.log删除logs文件夹里面所有的日志文件 浏览器插件获取京东Cookie https://blog.52learn.top/index.php/archives/24/ 2021-03-12T13:35:00+08:00 适用浏览器ChromeFireFox新版Edge其他Chrome内核浏览器安装步骤Chrome浏览器在插件商店直接搜索EditThisCookie,或打开链接安装。Edge浏览器在插件商店搜索Cookie Editor安装,或者打开链接安装。另外提供一个插件下载地址,直接搜索EditThisCookie或点击链接进行安装。获取Cookie打开网址https://m.jd.com登录之后点击插件找到pt_pin和pt_key并复制里面的值注:如果需获取第二个京东账号的cookie,不要在刚才的浏览器上面退出登录账号一(否则刚才获取的cookie会失效),需另外换一个浏览器(Chrome浏览器 ctr+shift+n 打开无痕模式也行),然后继续按上面步骤操作即可。