首页
留言
导航
统计
Search
1
追番推荐!免费看动漫的网站 - 支持在线观看和磁力下载
2,512 阅读
2
推荐31个docker应用,每一个都很实用
1,312 阅读
3
PVE自动启动 虚拟机 | 容器 顺序设置及参数说明
931 阅读
4
一条命令,永久激活!Office 2024!
618 阅读
5
优选 Cloudflare 官方 / 中转 IP
490 阅读
默认分类
服务器
宝塔
VPS
Docker
OpenWRT
Nginx
群晖
前端编程
Vue
React
Angular
NodeJS
uni-app
后端编程
Java
Python
SpringBoot
SpringCloud
流程引擎
检索引擎
Linux
CentOS
Ubuntu
Debian
数据库
Redis
MySQL
Oracle
虚拟机
VMware
VirtualBox
PVE
Hyper-V
计算机
网络技术
网站源码
主题模板
登录
Search
标签搜索
Java
小程序
Redis
SpringBoot
docker
Typecho
Cloudflare
docker部署
虚拟机
WordPress
群晖
uni-app
CentOS
Vue
Java类库
Linux命令
防火墙配置
Mysql
脚本
Nginx
微醺
累计撰写
264
篇文章
累计收到
11
条评论
首页
栏目
默认分类
服务器
宝塔
VPS
Docker
OpenWRT
Nginx
群晖
前端编程
Vue
React
Angular
NodeJS
uni-app
后端编程
Java
Python
SpringBoot
SpringCloud
流程引擎
检索引擎
Linux
CentOS
Ubuntu
Debian
数据库
Redis
MySQL
Oracle
虚拟机
VMware
VirtualBox
PVE
Hyper-V
计算机
网络技术
网站源码
主题模板
页面
留言
导航
统计
搜索到
69
篇与
的结果
2023-08-14
一个通用型PDF文件处理工具,完全开源,个人免费使用!
🔥本项目系统是一款通用型PDF文件处理工具,包含PDF合并、拆分、旋转、水印、加密、转换等20多项常用功能,完全开源,个人免费使用,界面简洁,简单易用。虽然目前网上关于PDF处理的工具有很多,但是都有一些缺点:专业的PDF编辑软件对于高级一点的功能(添加水印、页面编辑等)需要收费或限制功能在线PDF工具类网站需要上传PDF到服务器处理再下载,有泄露隐私风险各大编程语言的PDF处理库虽然可以免费实现一些高级功能,但是需要一定的编程经验,使用没有图形界面程序方便部分小众工具虽然可以满足部分特殊需求,但是功能较为单一由于PDF处理是一个很常见的需求,为了绕开上述这些限制,提高工作效率,诞生了此项目。本项目具有如下优势:完全本地化:无需联网,不必担心隐私泄露功能丰富:支持包括PDF批量合并、拆分、添加水印、加密/解密、提取、OCR识别在内的20余项功能跨平台:支持在Windows、Mac、Linux设备上使用开源免费界面简洁,使用简单体积小巧(~30M),绿色免安装,随用随开插件化:根据需要选择是否安装额外组件,减小安装包体积功能演示上手指南安装二进制安装去Releases版块下载对应平台的安装包安装即可。编译安装安装go环境、node环境和python环境# 确认go安装成功 go version # 确认 "~/go/bin" 位于PATH环境变量中 echo "export PATH=$PATH:$HOME/go/bin" >> $HOME/.bashrc source $HOME/.bashrc echo $PATH | grep go/bin # 确认nodejs安装成功 npm --version编译项目git clone https://github.com/kevin2li/PDF-Guru.git cd PDF-Guru ROOT=$(pwd) go install github.com/wailsapp/wails/v2/cmd/wails@latest go mod tidy # 安装前端依赖 cd ${ROOT}/frontend npm install # 安装后端环境 cd ${ROOT}/thirdparty pip install -r requirements.txt pyinstaller -F -w pdf.py mkdir ${ROOT}/build/bin # 1) for darwin, linux cp dist/pdf ocr.py convert.py ${ROOT}/build/bin # 2) for windows cp dist/pdf.exe ${ROOT}/build/bin cp ocr.py ${ROOT}/build/bin cp convert.py ${ROOT}/build/bin cd $ROOT wails dev # 开发预览 wails build # 编译将build/bin目录打包,运行PDF Guru即可。最后,想学习这个项目的可以查看 项目地址 !!
2023年08月14日
47 阅读
0 评论
0 点赞
2023-07-21
Flex 布局教程:语法篇
Flex 布局教程:语法篇作者: 阮一峰日期: 2015年7月10日网页布局(layout)是 CSS 的一个重点应用。布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性。它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现。2009年,W3C 提出了一种新的方案----Flex 布局,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能。Flex 布局将成为未来布局的首选方案。本文介绍它的语法,下一篇文章给出常见布局的 Flex 写法。网友 JailBreak 为本文的所有示例制作了 Demo,也可以参考。以下内容主要参考了下面两篇文章:A Complete Guide to Flexbox 和 A Visual Guide to CSS3 Flexbox Properties。一、Flex 布局是什么?Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。任何一个容器都可以指定为 Flex 布局。 .box{ display: flex; } 行内元素也可以使用 Flex 布局。 .box{ display: inline-flex; } Webkit 内核的浏览器,必须加上-webkit前缀。 .box{ display: -webkit-flex; /* Safari */ display: flex; } 注意,设为 Flex 布局以后,子元素的float、clear和vertical-align属性将失效。二、基本概念采用 Flex 布局的元素,称为 Flex 容器(flex container),简称"容器"。它的所有子元素自动成为容器成员,称为 Flex 项目(flex item),简称"项目"。容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)。主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end;交叉轴的开始位置叫做cross start,结束位置叫做cross end。项目默认沿主轴排列。单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size。三、容器的属性以下6个属性设置在容器上。flex-directionflex-wrapflex-flowjustify-contentalign-itemsalign-content3.1 flex-direction属性flex-direction属性决定主轴的方向(即项目的排列方向)。 .box { flex-direction: row | row-reverse | column | column-reverse; } 它可能有4个值。row(默认值):主轴为水平方向,起点在左端。row-reverse:主轴为水平方向,起点在右端。column:主轴为垂直方向,起点在上沿。column-reverse:主轴为垂直方向,起点在下沿。3.2 flex-wrap属性默认情况下,项目都排在一条线(又称"轴线")上。flex-wrap属性定义,如果一条轴线排不下,如何换行。 .box{ flex-wrap: nowrap | wrap | wrap-reverse; } 它可能取三个值。(1)nowrap(默认):不换行。(2)wrap:换行,第一行在上方。(3)wrap-reverse:换行,第一行在下方。3.3 flex-flowflex-flow属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap。 .box { flex-flow: <flex-direction> || <flex-wrap>; } 3.4 justify-content属性justify-content属性定义了项目在主轴上的对齐方式。 .box { justify-content: flex-start | flex-end | center | space-between | space-around; } 它可能取5个值,具体对齐方式与轴的方向有关。下面假设主轴为从左到右。flex-start(默认值):左对齐flex-end:右对齐center: 居中space-between:两端对齐,项目之间的间隔都相等。space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。3.5 align-items属性align-items属性定义项目在交叉轴上如何对齐。 .box { align-items: flex-start | flex-end | center | baseline | stretch; } 它可能取5个值。具体的对齐方式与交叉轴的方向有关,下面假设交叉轴从上到下。flex-start:交叉轴的起点对齐。flex-end:交叉轴的终点对齐。center:交叉轴的中点对齐。baseline: 项目的第一行文字的基线对齐。stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。3.6 align-content属性align-content属性定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。 .box { align-content: flex-start | flex-end | center | space-between | space-around | stretch; } 该属性可能取6个值。flex-start:与交叉轴的起点对齐。flex-end:与交叉轴的终点对齐。center:与交叉轴的中点对齐。space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。stretch(默认值):轴线占满整个交叉轴。四、项目的属性以下6个属性设置在项目上。orderflex-growflex-shrinkflex-basisflexalign-self4.1 order属性order属性定义项目的排列顺序。数值越小,排列越靠前,默认为0。 .item { order: <integer>; } 4.2 flex-grow属性flex-grow属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。 .item { flex-grow: <number>; /* default 0 */ } 如果所有项目的flex-grow属性都为1,则它们将等分剩余空间(如果有的话)。如果一个项目的flex-grow属性为2,其他项目都为1,则前者占据的剩余空间将比其他项多一倍。4.3 flex-shrink属性flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。 .item { flex-shrink: <number>; /* default 1 */ } 如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。负值对该属性无效。4.4 flex-basis属性flex-basis属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。 .item { flex-basis: <length> | auto; /* default auto */ } 它可以设为跟width或height属性一样的值(比如350px),则项目将占据固定空间。4.5 flex属性flex属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选。 .item { flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ] } 该属性有两个快捷值:auto (1 1 auto) 和 none (0 0 auto)。建议优先使用这个属性,而不是单独写三个分离的属性,因为浏览器会推算相关值。4.6 align-self属性align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。 .item { align-self: auto | flex-start | flex-end | center | baseline | stretch; } 该属性可能取6个值,除了auto,其他都与align-items属性完全一致。(完)
2023年07月21日
19 阅读
0 评论
0 点赞
2023-07-13
苹果虚拟定位 欺骗iOS设备位置,无需越狱或在设备上安装应用程序
前言LocationSimulator 是一款macOS应用程序(10.15.x及更高版本),允许欺骗iOS或iPhoneSimulator设备的位置。该项目的目标受众是想要测试其基于位置服务的应用程序的开发人员。我不鼓励使用此应用程序在iOS游戏中作弊,也不为这些游戏提供支持。如果您在预期目的之外使用此应用程序,则只能靠自己。特征欺骗iOS设备位置,而无需越狱或在设备上安装应用程序。欺骗 iPhoneSimulator 设备位置。自动尝试下载适用于您的iOS版本的DeveloperDiskImage文件。在地图上长按设置设备位置。支持自定义和预定义(步行/自行车/驾驶)移动速度。使用箭头键控制移动。从当前位置导航到新位置。支持网络设备。搜索位置。支持暗模式。安装从 github 下载最新版本版本以获取最新更改或通过在终端中输入以下命令来安装自制软件:/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"使用自制软件安装位置模拟器:brew install locationsimulator官网地址https://github.com/Schlaubischlump/LocationSimulator
2023年07月13日
46 阅读
0 评论
0 点赞
2023-07-07
再见了 Xshell、iTerm2、FinalShell,这款开源的终端工具真香
现目前的的远程终端工具有很多,功能齐全好用的收费,免费的功能外观又不怎么满意。XShell 收费而且感觉用起来也一般,putty 免费但很不方便,我们的 FinalShell 好用、功能齐全可以说是一款非常好的终端工具但外观总是觉得不尽人意。直到我发现这款「Tabby」。引言Tabby 是一个高度可配置的终端模拟器、SSH 和串行客户端,适用于 Windows、macOS 和 Linux。特性集成的 SSH 和 Telnet 客户端和连接管理器集成串口终端主题和配色方案完全可配置的快捷键和多和弦快捷键拆分窗格记住你的标签PowerShell(和 PS Core)、WSL、Git-Bash、Cygwin、MSYS2、Cmder 和 CMD 支持通过 Zmodem 从/到 SSH 会话的直接文件传输完整的 Unicode 支持,包括双角字符不会因快速流动的输出而窒息Windows 上的正确 shell 体验,包括选项卡完成(通过 Clink)用于 SSH 机密和配置的集成加密容器SSH、SFTP 和 Telnet 客户端可用作 Web 应用程序 (也可自托管)。地址GitHub:https://github.com/Eugeny/tabby官网:https://tabby.sh/在线体验:https://tabby.sh/app 大家可以先在线体验,这个还挺厉害的功能介绍默认打开是本地终端,如果对本地终端工具不满意也可以试试它创建远程连接点击右上角齿轮点击左侧菜单的 Profiles&connections点击蓝色按钮 New profile 添加新的远程连接选择第一个,创建 SSH 连接填入服务器信息等,保存连接点击窗口按钮选中你创建的远程连接支持FTP 没错他直接支持文件的上传和下载总结Tabby 市面上少见的既好用又好看还免费开源的远程终端工具。
2023年07月07日
57 阅读
0 评论
0 点赞
2023-07-06
利用docker搭建home-assistant打造全屋智能
home-assistant 安装打开注册表搜索 homeassistant/home-assistant 下载 docker映像 下载完成后启动网络类型一定 不要选择bridge ,选择 bridge-host 或者 host 否则未在同一局域网 homekit 无法绑定选择高级-添加环境变量-保存TZ:Asia/Shanghai端口本地 8321 - 容器 8321,如果选择的 host 则不需要设置端口添加一个文件夹并装载到 /config,完成并运行容器Home Assistant 安装 HACS什么是 HACS?HACS 可以理解为 Home Assistant 上的一个第三方应用商店打开容器详情页面-选择终端-新建命令右键粘贴并运行以下命令wget -O - https://get.hacs.xyz | bash -运行完成后重启容器浏览器打开并输入 群晖ip + 端口8123 并访问根据向导完成并创建自己的账号点击「配置」,点击「集成」,点击右下角的「添加集成」,在搜索框里输入「HACS」并点击,接受协议。需要全选,无法不选。点击「提交」,设备注册。需要先拥有Github账号,没有的话注册一个并在浏览器上登录。打开 HACS商店 浏览并下载存储库:Xiaomi Miot Auto,下载完成后重启容器重新登录后打开 配置-设备与服务-添加集成-搜索xiaomi-安装Xiaomi Miot Auto-选择账号集成模式配置 HomeKit 后打开通知手机扫描二维码后即可使用iphone控制小米设备
2023年07月06日
25 阅读
0 评论
0 点赞
2023-07-06
解决WordPress开启CDN后评论IP不正确的方法
前言最近启用CDN内容分发后发现评论评论人的IP都是CDN的节点IP(也有可能是服务器IP),由于使用CDN后访问用户服务器的IP都变成CDN服务器的IP。百度一下,发现了一个好的方法。只要添加一段代码,IP地址就可以正常了,其实CDN在头部应该有把访问者IP发送的,那段代码就是把 wordpress 的 ip 中变量换成 $_SERVER 获取的。这个可以用在任意CDN和反代里面,IP地址可以获取正确的。在 WordPress 安装根目录 下面 wp-config.php 文件,打开后,在其内添加下面代码:if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $list = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']); $_SERVER['REMOTE_ADDR'] = $list[0]; }
2023年07月06日
45 阅读
0 评论
0 点赞
2023-07-03
一款开源的匿名聊天工具,太牛了
今天推荐的这个项目是 「anonymous-chat-room 」 ,一个基于 livekit 和 Next.js 的匿名聊天室,可以进行文字、语音聊天,并支持语音录屏。特点部署简单:前端支持直接部署到 vercel ,后端可以直接使用 livekit cloud 的免费服务,也可以按照官方文档自建支持视频,语音聊天(默认只允许语音),无需登录支持文本聊天,也可以使用 emoji支持emoji表情搜索支持更多的消息类型,如图片、视频(开发中)支持浏览器直接录制麦克风,扬声器和屏幕(Chrome、 Edge 可以完全支持,safari 不支持扬声器录制)延迟测试(当前版本实现很简陋)设置房间密码前端可以选择使用多个 apikey ,通过轮询的方式选择可用的入口本地部署1、克隆或下载本仓库git clone git@github.com:velor2012/anonymous-chat-room.git cd anonymous-chat-room yarn install2、在 http://cloud.livekit.io 上创建一个新的 Project ,然后生成 apikey project settings 3、按照提示,修改 env.example 中的环境变量,重命名为 env.local 4、运行以下命令npm run dev之后就可以在 http://localhost:3000 打开。在线体验地址: https://chat.cwy666.eu.org/开源项目地址: https://github.com/velor2012/anonymous-chat-room
2023年07月03日
82 阅读
0 评论
0 点赞
2023-06-29
拿来就能用的网页炫酷特效代码
前言:网上收集能美化网页的代码,比如给网页加个背景,给鼠标加个特效,来来回回也收集到了一些“使用简单”,“效果爆炸” 的页面,给大家分享出来。{collapse}{collapse-item label="鼠标点击弹出爱心"}<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <!-- 网页鼠标点击特效(爱心) --> <script type="text/javascript"> ! function (e, t, a) { function r() { for (var e = 0; e < s.length; e++) s[e].alpha <= 0 ? (t.body.removeChild(s[e].el), s.splice(e, 1)) : (s[ e].y--, s[e].scale += .004, s[e].alpha -= .013, s[e].el.style.cssText = "left:" + s[e].x + "px;top:" + s[e].y + "px;opacity:" + s[e].alpha + ";transform:scale(" + s[e].scale + "," + s[e] .scale + ") rotate(45deg);background:" + s[e].color + ";z-index:99999"); requestAnimationFrame(r) } function n() { var t = "function" == typeof e.onclick && e.onclick; e.onclick = function (e) { t && t(), o(e) } } function o(e) { var a = t.createElement("div"); a.className = "heart", s.push({ el: a, x: e.clientX - 5, y: e.clientY - 5, scale: 1, alpha: 1, color: c() }), t.body.appendChild(a) } function i(e) { var a = t.createElement("style"); a.type = "text/css"; try { a.appendChild(t.createTextNode(e)) } catch (t) { a.styleSheet.cssText = e } t.getElementsByTagName("head")[0].appendChild(a) } function c() { return "rgb(" + ~~(255 * Math.random()) + "," + ~~(255 * Math.random()) + "," + ~~(255 * Math .random()) + ")" } var s = []; e.requestAnimationFrame = e.requestAnimationFrame || e.webkitRequestAnimationFrame || e .mozRequestAnimationFrame || e.oRequestAnimationFrame || e.msRequestAnimationFrame || function (e) { setTimeout(e, 1e3 / 60) }, i( ".heart{width: 10px;height: 10px;position: fixed;background: #f00;transform: rotate(45deg);-webkit-transform: rotate(45deg);-moz-transform: rotate(45deg);}.heart:after,.heart:before{content: '';width: inherit;height: inherit;background: inherit;border-radius: 50%;-webkit-border-radius: 50%;-moz-border-radius: 50%;position: fixed;}.heart:after{top: -5px;}.heart:before{left: -5px;}" ), n(), r() }(window, document); </script> </body> </html>{/collapse-item}{/collapse}{dotted startColor="#ff6c6c" endColor="#1989fa"/}{collapse}{collapse-item label="鼠标点击弹出文字"}<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <script> (function () { var a_idx = 0; window.onclick = function (event) { var a = new Array("❤富强❤", "❤民主❤", "❤文明❤", "❤和谐❤", "❤自由❤", "❤平等❤", "❤公正❤", "❤法治❤", "❤爱国❤", "❤敬业❤", "❤诚信❤", "❤友善❤"); var heart = document.createElement("b"); //创建b元素 heart.onselectstart = new Function('event.returnValue=false'); //防止拖动 document.body.appendChild(heart).innerHTML = a[a_idx]; //将b元素添加到页面上 a_idx = (a_idx + 1) % a.length; heart.style.cssText = "position: fixed;left:-100%;"; //给p元素设置样式 var f = 16, // 字体大小 x = event.clientX - f / 2, // 横坐标 y = event.clientY - f, // 纵坐标 c = randomColor(), // 随机颜色 a = 1, // 透明度 s = 1.2; // 放大缩小 var timer = setInterval(function () { //添加定时器 if (a <= 0) { document.body.removeChild(heart); clearInterval(timer); } else { heart.style.cssText = "font-size:16px;cursor: default;position: fixed;color:" + c + ";left:" + x + "px;top:" + y + "px;opacity:" + a + ";transform:scale(" + s + ");"; y--; a -= 0.016; s += 0.002; } }, 15) } // 随机颜色 function randomColor() { return "rgb(" + (~~(Math.random() * 255)) + "," + (~~(Math.random() * 255)) + "," + (~~(Math .random() * 255)) + ")"; } }()); </script> </body> </html>{/collapse-item}{/collapse}{dotted startColor="#ff6c6c" endColor="#1989fa"/}{collapse}{collapse-item label="鼠标小星星拖尾跟随"}<!DOCTYPE html> <html lang="en"> <head> </head> <body> <span class="js-cursor-container"></span> <script> (function fairyDustCursor() { var possibleColors = ["#D61C59", "#E7D84B", "#1B8798"] var width = window.innerWidth; var height = window.innerHeight; var cursor = { x: width / 2, y: width / 2 }; var particles = []; function init() { bindEvents(); loop(); } // Bind events that are needed function bindEvents() { document.addEventListener('mousemove', onMouseMove); window.addEventListener('resize', onWindowResize); } function onWindowResize(e) { width = window.innerWidth; height = window.innerHeight; } function onMouseMove(e) { cursor.x = e.clientX; cursor.y = e.clientY; addParticle(cursor.x, cursor.y, possibleColors[Math.floor(Math.random() * possibleColors.length)]); } function addParticle(x, y, color) { var particle = new Particle(); particle.init(x, y, color); particles.push(particle); } function updateParticles() { // Updated for (var i = 0; i < particles.length; i++) { particles[i].update(); } // Remove dead particles for (var i = particles.length - 1; i >= 0; i--) { if (particles[i].lifeSpan < 0) { particles[i].die(); particles.splice(i, 1); } } } function loop() { requestAnimationFrame(loop); updateParticles(); } /** * Particles */ function Particle() { this.character = "*"; this.lifeSpan = 120; //ms this.initialStyles = { "position": "fixed", "display": "inline-block", "top": "0px", "left": "0px", "pointerEvents": "none", "touch-action": "none", "z-index": "10000000", "fontSize": "25px", "will-change": "transform" }; // Init, and set properties this.init = function (x, y, color) { this.velocity = { x: (Math.random() < 0.5 ? -1 : 1) * (Math.random() / 2), y: 1 }; this.position = { x: x + 10, y: y + 10 }; this.initialStyles.color = color; this.element = document.createElement('span'); this.element.innerHTML = this.character; applyProperties(this.element, this.initialStyles); this.update(); document.querySelector('.js-cursor-container').appendChild(this.element); }; this.update = function () { this.position.x += this.velocity.x; this.position.y += this.velocity.y; this.lifeSpan--; this.element.style.transform = "translate3d(" + this.position.x + "px," + this.position.y + "px, 0) scale(" + (this.lifeSpan / 120) + ")"; } this.die = function () { this.element.parentNode.removeChild(this.element); } } /** * Utils */ // Applies css `properties` to an element. function applyProperties(target, properties) { for (var key in properties) { target.style[key] = properties[key]; } } if (!('ontouchstart' in window || navigator.msMaxTouchPoints)) init(); })(); </script> </body> </html>{/collapse-item}{/collapse}{dotted startColor="#ff6c6c" endColor="#1989fa"/}{collapse}{collapse-item label="鼠标笑脸跟随+仙女棒+泡泡+雪花+点击烟花效果(自由组合)"}<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <!--光标特效仙女棒--> <script src="https://blog-static.cnblogs.com/files/axqa/fairyDustCursor.js"></script> <!--光标之泡泡--> <script src="https://blog-static.cnblogs.com/files/axqa/bubbleCursor.js"></script> <!--笑脸--> <script src="https://blog-static.cnblogs.com/files/axqa/emojiCursor.js"></script> <!--雪花--> <script src="https://blog-static.cnblogs.com/files/axqa/snowflakeCursor.js"></script> <!-- 点击后出现烟花效果 --> <script src="https://blog-static.cnblogs.com/files/axqa/cursor-effects.js"></script> </body> </html>{/collapse-item}{/collapse}
2023年06月29日
30 阅读
0 评论
0 点赞
2023-06-29
备用机消息转发神器:小转发
最近我新弄了一台水墨屏的手机看小说,同时因为它待机时间相对久一点,也可以作为备用机使用。为了保证它能上网,我从双卡双待的主力机中拿出了一张卡放了进去。但我并不想随时都带着两个手机,电话可以做来电转移,但是最常用的短信验证码很麻烦。幸好我们有 「小转发」 。安装 「小转发」 貌似很低调,没有找到它的官网,不过我们可以从酷安下载。如果你是在微信中阅读这篇文章,长按下图应该可以识别到二维码。什么是小转发 「小转发」是一个Android应用,它可以读取手机收到的短信和未接来电,并转发到微信。有了它,我们只需要把备用机接上电,扔到有网络的地方就可以不管它了(如果你担心长期充电不好,还可以接一个定时电源,每天充2个小时)使用 「小转发」 的界面很简单,安装完成后直接点击 「规则设置」 。再点击 「转发模式设置」 选项。输入 Sendkey 点击右上方的测试,如果能收到测试推送就发送成功了。优化 这个时候如果有短信发过来,我们就能收到微信通知了。但是很多手机厂商为了省电,会把长时间没有互动的应用从后台杀掉。这会让我们收不到新的转发,所以我们需要配置下系统权限。回到应用首页,点击 「白名单」 。点击 「确定」 按钮,对电池优化进行授权。需要注意的是,不同的手机厂商在这一块的优化策略不同,有时候可能无法弹出窗口,这就需要我们手动添加了,总之能保证「小转发」 一直在后台 就可以。最终效果 找台手机发条短信试试:
2023年06月29日
118 阅读
0 评论
0 点赞
2023-06-15
Typecho打赏插件,为网站添加打赏功能
效果图如下下载地址{cloud title="typecho打赏插件" type="lz" url="https://wwua.lanzoup.com/id7Ah0z727pc" password=""/}解压放到usr/plugins目录下,后台启用即可,设置对应的信息然后在主题下面post.php文件里的文章末尾添加如下代码<?php Typecho_Plugin::factory('rootvip.cn.Donate')->Donate(); ?>代码位置截图
2023年06月15日
22 阅读
0 评论
0 点赞
1
...
4
5
6
7