找到
87
篇与
技术
相关的结果
- 第 3 页
-
SyncTV-同步观影 / 异地同步观看程序 SyncTV 是一款允许您远程一起观看电影和直播的程序。它提供同步观看、实时流媒体和聊天等功能。有了 SyncTV,无论亲朋好友身在何处,您都可以与他们一起观看视频和直播,同步观看功能可确保每个观看视频的人都处于同一时刻。这意味着您可以进行暂停、快进、后退、改变播放速度等操作,其他人也会同步到相同的点。 演示站点:https://live.wuzuhua.cn 支持特点 ✅同步观看 ✅视频同步 ✅直播同步 ✅影院模式 ✅聊天 ✅弹幕 ✅代理 ✅视频代理 ✅直播代理 ✅解析 ✅视频解析 ✅Alist ✅Bilibili ✅Emby ❎直播解析 安装方式 1.Docker 安装并运行 SyncTV。 docker run -d --name synctv -v /opt/synctv:/root/.synctv -p 8080:8080 synctvorg/synctv 2.二进制您可以从发布页面下载最新的二进制文件并手动安装。 发布页面地址:https://github.com/synctv-org/synctv/releases 3.一键脚本您可以使用该脚本来安装和运SyncTV。 sudo -v ; curl -fsSL https://raw.gitmirror.com/synctv-org/synctv/main/script/install.sh | sudo bash -s -- -v latest 4.Docker compose--docker-compose.yml 下载地址:https://github.com/synctv-org/synctv/blob/main/script/docker-compose.yml 每次启动会检测是否有root权限的用户,如果没有则会初始化一个root用户,用户名和密码均为root,请及时修改用户名密码。 用户注册功能需要启用任意 OAuth2 服务,如 Google、Github 等等,具体配置请参考文档。 -
怎么样用夸克网盘查看各大XX网站的资源? 如果没有夸克网盘,可以先通过我的链接宅男区 进行注册,保存就有1T空间。(吾爱资源网) 最好下载一个夸克APP,保存下来在线看!另外,本教程保存的特殊资源寿命短,基本一天不到就会被禁,所以建议现看现存。 然后进入网站:磁力网站 直接进入磁力网站,或者自己有磁力网站的自己搜就行。 以这个网站为例: mbi0bsum.png图片 进入磁力页面,这里有磁力地址,复制地址到夸克APP中,会自动识别到相应资源,然后保存即可。如果无法保存或者保存缓慢,换个资源就行。 mbi0c0l7.png图片 电脑版如果下载了夸克网盘软件的话,点击磁力地址就会跳转到夸克网盘程序。 mbi0c6zz.png图片 mbi0cbmw.png图片 然后就可以随意保存了。 手机版的话,进入磁力网站,然后你搜到资源后就会有以下两种提示,都可以保存资源到网盘。同样的,如果保存不了或者保存缓慢就换个资源。 特别提醒,部分磁力网站有恶意跳转广告,请注意甄别! mbi0cjr9.png图片 如果觉得不错就评论下,让我知道你看过!
-
表单提交中的用户体验优化,数据保存与清理 在吾爱资源网的网站设计中,我在提交资源的页面,原本的设计是这样的: <form method="post"> <div class="form-group my-2"> <label for="name">资源名称<sup style="color:red;">*</sup></label> <input type="text" class="form-control" id="name" name="name" required> </div> <div class="form-group my-2"> <label for="yunurl">资源链接<sup style="color:red;">*</sup></label> <textarea class="form-control" id="yunurl" name="yunurl" rows="3"" required></textarea> </div> <div class="form-group my-2"> <label for="tips">资源备注</label> <input type="text" class="form-control" id="tips" name="tips" maxlength="50"> </div> <button type="submit" name="submit" value="submit" class="btn btn-primary btn-block w-100" id="submitBtn" <?php echo $success ? 'disabled' : ''; ?>>提交</button> </form>实现的效果就是判断是否满足我设置的条件,如果条件满足直接提交数据,否则提交按钮变成无效。提交后数据清空,不管是否成功,数据都会清理掉。但是我设置的条件中反馈一些错误提示,然后数据清零。比如会设置资源链接中是否包含链接,如果不包含,就提示链接有误,然后数据清理完了,这样其实体验比较差,应该是数据有误,就直接在原有基础上修改的。 我在原有的基础上第一,设置了input标签和textarea标签的数据保留,然后为了保证在提交成功后数据清理掉,我使用了提交成功的判断,这个方法其实在提交按钮上已经用过,这样设置的话,避免了使用后端处理比较麻烦。 <form method="post"> <div class="form-group my-2"> <label for="name">资源名称<sup style="color:red;">*</sup></label> <input type="text" class="form-control" id="name" name="name" value="<?php echo !$success && isset($_POST['name']) ? $_POST['name'] : ''; ?>" required> </div> <div class="form-group my-2"> <label for="yunurl">资源链接<sup style="color:red;">*</sup></label> <textarea class="form-control" id="yunurl" name="yunurl" rows="3" required><?php echo !$success && isset($_POST['yunurl']) ? htmlspecialchars($_POST['yunurl']) : ''; ?></textarea> </div> <div class="form-group my-2"> <label for="tips">资源备注</label> <input type="text" class="form-control" id="tips" name="tips" value="<?php echo !$success && isset($_POST['tips']) ? $_POST['tips'] : ''; ?>" maxlength="50"> </div> <div class="form-group my-2"> <div class="form-check"> <input type="checkbox" class="form-check-input" id="redirect" name="redirect"> <label class="form-check-label" for="redirect">提交后跳转到首页</label> </div> </div> <button type="submit" name="submit" value="submit" class="btn btn-primary btn-block w-100" id="submitBtn" <?php echo $success ? 'disabled' : ''; ?>>提交</button> </form>2024-10-20T11:42:23.png图片 大家在实操的时候,也要考虑到用户反馈,保证产品有更好的体验。 -
输入框的默认值是怎么设置的? 2024-10-06T13:03:10.png图片输入框的默认值是指在用户开始输入之前,输入框内已经预设的文本或占位符。这个默认值通常会在输入框中显示,直到用户输入内容覆盖它。设置输入框默认值可以提高用户体验,使用户更清楚地了解输入框的用途,同时也可以减少用户输入错误的机会。 在不同的应用场景中,设置输入框默认值的方法也有所不同: HTML:可以通过value属性来设置输入框的默认值。例如,<input type="text" value="默认值">会在页面加载时显示"默认值"。 JavaScript:可以使用setAttribute方法来动态设置输入框的默认值。例如,document.getElementById("myInput").setAttribute("value", "动态设置的默认值");会在JavaScript代码执行时设置输入框的值为"动态设置的默认值"。 Element UI(一个基于Vue.js的组件库):可以使用v-model指令来绑定输入框的值,并通过data属性设置初始值。例如,<el-input v-model="inputValue" placeholder="请输入内容"></el-input>,并在Vue实例的data中定义inputValue: 'Hello World',这样输入框就会显示"Hello World"作为默认值。 EasyUI(一个基于jQuery的UI插件集合):可以使用value属性或者通过JavaScript的setValue方法来设置输入框的默认值。例如,<input class="easyui-textbox" value="默认值">或者$('#myTextbox').textbox('setValue', '默认值');。 在设计输入框默认值时,需要注意以下几点: 用户体验:默认值应该清晰、简洁,有助于用户理解输入框的用途。避免使用过长或复杂的默认值,以免用户感到困惑。 避免混淆:当用户开始输入时,应清除默认值或占位符,确保用户输入的内容不会被错误地提交。 动态设置:在某些情况下,可能需要根据用户的交互动态设置默认值。例如,当用户点击输入框时,可以清除默认值,以便用户输入自己的内容。 通过上述方法,可以有效地设置和管理输入框的默认值,提升应用的用户友好性和交互体验。 -
宝塔一键迁移网站后出现错误“unknown "connection_upgrade" variable” 在迁移网站的时候,大家往往都会使用宝塔一键迁移,但是确实也会面临一些问题,首先docker容器的资源无法进行转移,再者就是会报错,且网站无法访问: nginx: [emerg] unknown "connection_upgrade" variable nginx: configuration file /www/server/nginx/conf/nginx.conf test failed不太清楚为什么会出现这个错误,但是我找到了解决办法,就是: Snipaste_2024-09-27_05-11-09.jpg图片 也就是在Nginx管理的配置修改中,在底部加上代码: map $http_upgrade $connection_upgrade { default upgrade; '' close; }然后就发现没有报错了,网站也能正常访问了! -
新手小白都能搭建的留言系统 今天给大家带来的教程是使用PHP和Bootstrap构建响应式布局,搭建一个简单的留言系统。 这个留言系统是早期博客给我的灵感,所以对于这个系统来说,并没有什么创新,但是对于新手小白来说可以借鉴一二。 图片 网页示例 上面这个网站是发布资源的一个网站,为了让人不登录就能发布留言,我首先设置了只带有昵称(nickname)、邮箱(email)、留言内容(message)的数据库: CREATE TABLE messages ( id INT AUTO_INCREMENT PRIMARY KEY, nickname VARCHAR(255) NOT NULL, email VARCHAR(255) NOT NULL, message TEXT NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );从上面不难看出,我也在留言数据上加了一个发布时间,这样方便排序和整理。 图片 留言列表 我们要获取数据的话,可以创建一个config.php文件用于保存数据库信息,具体操作可以看我之前的文章。然后后端调用这个config.php文件,如下: <?php // 引入数据库配置文件 include 'config.php'; // 检查是否是 POST 请求 if ($_SERVER["REQUEST_METHOD"] == "POST" && empty($_SESSION['form_submitted'])) { // 接收表单数据 $nickname = $conn->real_escape_string($_POST['nickname']); $email = $conn->real_escape_string($_POST['email']); $message = $conn->real_escape_string($_POST['message']); // 验证邮箱 if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { echo '<script>showError("email", "无效的邮箱地址!");</script>'; exit; } // 检查昵称是否为空 if (empty($_POST['nickname'])) { echo '<script>showError("nickname", "昵称不能为空!");</script>'; exit; } // 检查邮箱是否为空 if (empty($_POST['email'])) { echo '<script>showError("email", "邮箱不能为空!");</script>'; exit; } // 检查留言是否为空 if (empty($_POST['message'])) { echo '<script>showError("message", "留言内容不能为空!");</script>'; exit; } // 准备 SQL 语句并绑定参数 $sql = "INSERT INTO messages (nickname, email, message) VALUES (?, ?, ?)"; $stmt = $conn->prepare($sql); $stmt->bind_param("sss", $nickname, $email, $message); // 执行 SQL 语句 if ($stmt->execute()) { echo '<script>showSuccess("留言成功!");</script>'; } else { echo '<script>showError("server", "留言失败:" . ' . json_encode($conn->error) . ');</script>'; } $stmt->close(); } // 获取留言总数 $total_sql = "SELECT COUNT(*) AS total FROM messages"; $total_result = $conn->query($total_sql); $total_row = $total_result->fetch_assoc(); $total_messages = $total_row['total']; // 获取留言列表 $page = isset($_GET['page']) ? $_GET['page'] : 1; $limit = 5; // 每页显示10条留言 $start = ($page - 1) * $limit; $sql = "SELECT id, nickname, email, message, created_at FROM messages ORDER BY id DESC LIMIT $start, $limit"; $result = $conn->query($sql); ?>在这里我对留言为空的状态,都做了相应的提示,其实这里直接也可以在input组件上设置“required”属性就行了,我只是习惯这样去写。 然后为了跟主站保持统一,也是使用的bootstrap来布局。 图片 (代码详见:新手小白都能搭建的留言系统 ) 这里我设计了一个小技巧,只有管理员才能查看到留言人的邮箱。这里的登录是检测是否登录主站,大家用来测试的时候就不用加条件了。 <?php if (isset($_SESSION['username']) && $_SESSION['groupid'] <= 2) { ?> <small class="text-muted"><?php echo htmlspecialchars($row['email']); ?></small> <?php } ?>显示效果如下: 图片 登录网站会显示留言人邮箱 需要知道的是,留言多了之后,页面就会显得很长很杂,一般都是设置分页,保证页面整洁有规划。 <!-- 分页导航 --> <nav> <ul class="pagination justify-content-center mt-2"> <?php $sql = "SELECT COUNT(*) as count FROM messages"; $result = $conn->query($sql); $row = $result->fetch_assoc(); $total_pages = ceil($row['count'] / $limit); // 计算上一页和下一页的链接 $prev_page = $page - 1; $next_page = $page + 1; // 生成上一页链接 if ($prev_page > 0) { echo "<li class='page-item'><a class='page-link' href='?page=$prev_page'>上一页</a></li>"; } else { echo "<li class='page-item disabled'><a class='page-link' href='#' tabindex='-1' aria-disabled='true'>上一页</a></li>"; } // 生成页码链接 for ($i = 1; $i <= $total_pages; $i++) { $class = $i == $page ? "active" : ""; echo "<li class='page-item $class'><a class='page-link' href='?page=$i'>$i</a></li>"; } // 生成下一页链接 if ($next_page <= $total_pages) { echo "<li class='page-item'><a class='page-link' href='?page=$next_page'>下一页</a></li>"; } else { echo "<li class='page-item disabled'><a class='page-link' href='#' tabindex='-1' aria-disabled='true'>下一页</a></li>"; } ?> </ul> </nav>效果如下: 图片 留言列表的分页系统 其实这个小界面都是比较简单的,主要是看人前期怎么去设计,需要考虑人性化、合理化、个性化。 -
全自动申请、更新、续期 SSL 证书的开源平台 项目介绍 CertD 是一款极具创新性的工具,它专注于提供免费的全自动申请和自动部署更新 SSL 证书的服务。其命名风格巧妙地借鉴了 Linux 守护进程的命名方式,“CertD”中的“D”代表着证书守护进程(Certificate Daemon)的含义,这一命名不仅体现了其技术渊源,还暗示了它在后台默默守护证书安全的重要角色。 图片 它支持私有化部署,这意味着用户可以将证书和相关的授权信息等敏感数据存储在自己的私有环境中,极大地降低了数据泄露的风险。这种私有化部署的方式为用户的数据安全提供了强有力的保障,让用户能够放心地使用 SSL 证书来保护网站的安全。 特性亮点 1、全自动申请与部署更新:不仅支持证书申请过程自动化,还能自动化部署更新证书,确保证书永不过期。 2、广泛的域名支持:支持阿里云、腾讯云、华为云、Cloudflare等各种途径注册的域名,包括通配符域名和多个域名打到一个证书上的情况。 3、邮件通知:及时向用户发送相关通知,确保用户了解证书的状态。 4、私有化部署:高度重视数据安全,用户可进行私有化部署,保障证书和授权信息等敏感数据的安全。 5、免费:相较于阿里云单个通配符域名证书每年最低1800元的费用,CertD免费为用户提供服务。 图片 添加证书自动化 项目仓库 开源项目地址: https://github.com/certd/certd 详细的使用教程: https://github.com/certd/certd/blob/v2/step.md 体验地址: https://certd.handsfree.work 私有化部署教程 # 随便创建一个目录 mkdir certd # 进入目录 cd certd # 下载docker-compose.yaml文件,或者手动下载放到certd目录下 wget https://gitee.com/certd/certd/raw/v2/docker/run/docker-compose.yaml # 可以根据需要修改里面的配置 # 1.修改镜像版本号【可选】 # 2.配置数据保存路径【可选】 # 3.修改端口号【可选】 vi docker-compose.yaml # 【可选】 # 启动certd docker compose up -d默认账户密码:admin/123456 访问地址:http://your_server_ip:7001 转自:青檬小栈