2 行代码搞定给你的网页加 黑暗模式(夜间模式)开关

Darkmode.Js

🌓黑暗模式/夜间模式,只需要几秒钟就可以给你的网站添加这个功能

本站已经添加,你可以看到网站左下方有个小按钮,你点击 Ta 预览以下效果吧!

该库使用 CSS mix-blend-mode 来将暗模式带入您的任何网站。只需复制粘贴该片段,您将获得一个小部件以打开和关闭暗模式。您也可以不使用窗口小部件而以编程方式使用它。该插件是轻量级的,内置于​​ VanillaJS 中。默认情况下,它也使用 localstorage,因此您的上一次设置将被记住!

特点

  • 窗口小部件自动显示
  • 保存用户选择
  • 如果操作系统偏好的主题为深色,则自动显示Darkmode(如果浏览器支持prefers-color-scheme)
  • 可以以编程方式使用而无需小部件

WordPress 插件

如果您使用的是 Wordpress,则可能需要看看基于 Darkmode.js 的这些插件:

简单方法(使用JSDelivr CDN)

只需将此代码添加到您的 html 页面:

<script src="https://cdn.jsdelivr.net/npm/darkmode-js@1.5.5/lib/darkmode-js.min.js"></script>
<script>new Darkmode().showWidget();</script>

高级调用参数:

- 阅读剩余部分 -

PHP 解析抖音短视频无水印源码(非调用 Ta 人接口解析)

Gitee 地址(不是我写的):https://gitee.com/uxqq/dyapi

我已经部署好的(我自己做了改动):https://api.nowtime.cc/v1/douyin/videoParse?url=视频链接
例如:https://api.nowtime.cc/v1/douyin/videoParse?url=https://v.douyin.com/sD6Wyk

返回结果:

{
  "code": 200,
  "msg": "获取成功",
  "data": {
    "title": "马斯克Boring公司开发地下立体交通隧道,系统智能管理,将让无间隔跟车成为可能#马斯克 #boring隧道",
    "img": "https://p9-dy.byteimg.com/img/tos-cn-p-0015/ec7c7768c516479489f8e6d62435bf95_1581734295~c5_300x400.jpeg?from=2563711402_large",
    "videourl": "http://v5-dy.ixigua.com/0cdda091045c66f99f261844772abf9d/5e4773a0/video/tos/hxsy/tos-hxsy-ve-0015/7a26bfc1603340cd981e76bca7906a91/?a=1128&br=0&bt=507&cr=0&cs=0&dr=0&ds=6&er=&l=2020021511290501001203410423F11F5A&lr=&qs=0&rc=amx2c2RzNXlvczMzOmkzM0ApaTNnOWkzZGQ5NzM5OWc6M2dxXzAvNl4wZjBfLS0xLS9zcy9gYy1iMi82YTUwYDReYjA6Yw%3D%3D&vl=&vr="
  }
}

PHP 代码:

<?php
header('Access-Control-Allow-Origin:*');
header('Content-type:application/json; charset=utf-8');
error_reporting(0);
if(!array_key_exists('url',$_REQUEST))exit(error("缺少参数"));
$url =@$_REQUEST;
preg_match("/http:\/\/v.douyin.com\/\S+/",$url['url'],$res);
if (!$res)exit(error("请检查你输入的链接"));
function error($str){
    return json_encode([
        "code"=>-1,
        "msg"=>$str
    ],JSON_UNESCAPED_UNICODE);
}
function curl($url, $getinfo=false)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_NOBODY, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, false);
    curl_setopt($ch, CURLOPT_TIMEOUT, 3600);
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_AUTOREFERER, true);
    curl_setopt($ch, CURLOPT_ENCODING, '');
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('User-Agent:Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1'));
    if($getinfo){
        curl_exec($ch);
        $data = curl_getinfo($ch,CURLINFO_EFFECTIVE_URL);
    }else{
        $data = curl_exec($ch);
    }
    curl_close($ch);
    return $data;
}
preg_match_all("/itemId: \"([0-9]+)\"|dytk: \"(.*)\"/", curl($res[0]), $res, PREG_SET_ORDER);
if(!@$res[0][1] || !@$res[1][2])exit(error("数据异常"));
$arr = json_decode(curl("https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids={$res[0][1]}&dytk={$res[1][2]}"));
exit(json_encode([
    "code"=>1,
    "msg"=>"获取成功",
    "data"=>[
        'title'    => $arr->item_list[0]->desc,
        'img'      => $arr->item_list[0]->video->cover->url_list[0],
        'videourl' => curl($arr->item_list[0]->video->play_addr->url_list[0], true)
    ]
],JSON_UNESCAPED_UNICODE));

Cloudreve 屏蔽 ThinkPHP 核心文件,防止被人恶意攻击

根据 ThinkPHP 的默认配置,index.php 入口文件本应在 public/index.php 的,但是 Cloudreve 直接将它移动到程序根目录,ThinkPHP 框架 的所有文件都暴露在公网下,如果 ThinkPHP 出现什么漏洞,攻击者可以直接对其进行攻击

为了避免这种,我想到了两种方法

一种是使用 Nginx URL重写(伪静态)进行屏蔽:

这里屏蔽掉了 ThinkPHP 核心文件及一些安装文件,保证其不会暴露在公网中
location ~ ^/(extend|application|thinkphp|CloudreveInstaller|vendor|extend)/*.*$
{
        return 404;
}

location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md|composer.lock|mysql.sql|deploy.sh|composer.json)
{
        return 404;
}

另一种是将 index.php 移动到 public 下

这个移动之后有许多地方需要更改,我嫌麻烦,没去弄

Linux 挂载的硬盘无执行权限(无法执行二进制文件)

在网上找了好久,终于找到了原因

只要修改 /etc/fstab 即可。

/etc/fstab 文件内容,我的显示的是这个

UUID=815de787-e0fd-6666-b67c-126465662062 / ext4 defaults,noatime,nodiratime,commit=600,errors=remount-ro 0 1
tmpfs /tmp tmpfs defaults,nosuid 0 0
# >>> [openmediavault]
/dev/disk/by-label/WDC /srv/dev-disk-by-label-WDC ext4 defaults,nofail,user_xattr,noexec,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0,acl 0 2
# <<< [openmediavault]

noexec(表示不允许执行二进制文件) 改成 exec 即可
Snipaste_2020-02-12_20-53-10.png

Golang 文件去重 - 支持多平台 Windows、Linux、MacOS

GitHub 地址:https://github.com/PrintNow/FileDeduplication

已编译好二进制文件:https://www.lanzous.com/b00z87aja


FileDeduplication | 文件去重

使用 Go 语言实现的文件去重,单线程
内存占用,越到后面可能占用越大,扫描777个文件到后期内存占用达到 100~150 MB
刚入门 Go,可能有很多不规范的、冗余的代码,接受指正

实现思路

遍历文件下所有文件,计算文件 MD5值,然后压入 map,map 结构大概是这样的

  key    :  value
------------------
文件路径 : 文件MD5值

然后根据当前 计算的 MD5值 在 map 中寻找,如果找到了,就判定文件有重复
将当前 重复文件路径,写入到 重复文件清单

删除重复文件:
按行读取 重复文件清单,然后执行删除操作

安装

使用编译好的二进制文件可以忽略这一步
已编译好二进制文件:https://www.lanzous.com/b00z87aja

下载 fileCheck.go 文件,然后安装 go 环境进行编译

执行以下命令

go build fileCheck.go

编译完成你将得到一个 二进制文件

  • Windows 平台 将得到一个名为 fileCheck.exe 二进制文件
  • Linux、Android 平台 将得到一个名为 fileCheck 二进制文件
  • ...

- 阅读剩余部分 -