小归客 - 资源分享
http://xgk.pw/category/%E8%B5%84%E6%BA%90%E5%88%86%E4%BA%AB/
-
WaterfallGallery相册typecho插件
http://xgk.pw/archives/236/
2025-08-18T11:20:00+08:00
前言朋友想叫我把他的希米相册程序改成typecho插件,对于我来说,“难”,因为我只会叫“AI”干活。于是,就有了“WaterfallGallery”插件,这是一款typecho主题插件,理论上是支持所有主题,除非你有安装别的插件,从而产生冲突,不兼容情况!介绍WaterfallGallery是一款通过在插件后台>填写图片外链(批量填写,每横一个地址),使用短代码直接调用全部图片到文章页或者独立页面中。这给使用外链图片相册的朋友,给予最大的便捷。演示图是没有的,因为我不太喜欢发太多图片到博客上,自行下载测试功能支持瀑布流(不成熟)、自定义列数、图片分页数量、分页等。版本目前有3.0版本以及4.0版本版本瀑布流分页页数量列数3.0×√√×4.0√√√√下载【超级会员V2】通过百度网盘分享的文件:Waterfal…等2个文件链接:https://pan.baidu.com/s/1ymSqH6asFfs0Oe8WBh7NzQ?pwd=tq6p 个人喜欢3.0版本,至于1.0和2.0版本没有分页功能,直接淘汰了。图片太多没有分页不方便,相信大家也不喜欢。[小归客gallery]
使用去掉“文字”,在你喜欢的文章页或者独立页使用便可。
-
黑洞代码
http://xgk.pw/archives/208/
2025-07-15T21:10:00+08:00
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Black Hole Visualization</title>
<style>
body,
html {
height: 100%;
margin: 0;
padding: 0;
}
body {
height: 100%;
background-color: rgba(25, 25, 25, 1);
overflow: hidden;
}
#blackhole {
height: 100%;
width: 100%;
position: relative;
display: flex;
}
.centerHover {
width: 255px;
height: 255px;
background-color: transparent;
border-radius: 50%;
position: absolute;
left: 50%;
top: 50%;
margin-top: -128px;
margin-left: -128px;
z-index: 2;
cursor: pointer;
line-height: 255px;
text-align: center;
transition: all 500ms;
}
.centerHover.open {
opacity: 0;
pointer-events: none;
}
.centerHover:hover span {
color: #ddd;
}
.centerHover:hover span:before {
background-color: #ddd;
}
.centerHover:hover span:after {
background-color: #ddd;
}
.centerHover span {
color: #666;
font-family: serif;
font-size: 18px;
position: relative;
transition: all 500ms;
}
.centerHover span:before {
content: "";
display: inline-block;
height: 1px;
width: 16px;
margin-right: 12px;
margin-bottom: 4px;
background-color: #666;
transition: all 500ms;
}
.centerHover span:after {
content: "";
display: inline-block;
height: 1px;
width: 16px;
margin-left: 12px;
margin-bottom: 4px;
background-color: #666;
transition: all 500ms;
}
canvas {
position: relative;
z-index: 1;
width: 100%;
height: 100%;
margin: auto;
}
#blackhole {
height: 100%;
width: 100%;
position: relative;
display: flex;
}
.centerHover {
width: 255px;
height: 255px;
background-color: transparent;
border-radius: 50%;
position: absolute;
left: 50%;
top: 50%;
margin-top: -128px;
margin-left: -128px;
z-index: 2;
cursor: pointer;
line-height: 255px;
text-align: center;
transition: all 500ms;
}
.centerHover.open {
opacity: 0;
pointer-events: none;
}
.centerHover:hover span {
color: #ddd;
}
.centerHover:hover span:before {
background-color: #ddd;
}
.centerHover:hover span:after {
background-color: #ddd;
}
.centerHover span {
color: #666;
font-family: serif;
font-size: 18px;
position: relative;
transition: all 500ms;
}
.centerHover span:before {
content: "";
display: inline-block;
height: 1px;
width: 16px;
margin-right: 12px;
margin-bottom: 4px;
background-color: #666;
transition: all 500ms;
}
.centerHover span:after {
content: "";
display: inline-block;
height: 1px;
width: 16px;
margin-left: 12px;
margin-bottom: 4px;
background-color: #666;
transition: all 500ms;
}
canvas {
position: relative;
z-index: 1;
width: 100%;
height: 100%;
margin: auto;
}
</style>
</head>
<body>
<div id="blackhole">
<div class="centerHover"><span>点击进入</span></div>
</div>
<script>
function blackhole(element) {
const container = document.querySelector(element);
const h = container.offsetHeight;
const w = container.offsetWidth;
const cw = w;
const ch = h;
const maxorbit = 255;
const centery = ch / 2;
const centerx = cw / 2;
const startTime = new Date().getTime();
let currentTime = 0;
const stars = [];
let collapse = false;
let expanse = false;
let returning = false;
const canvas = document.createElement("canvas");
canvas.width = cw;
canvas.height = ch;
container.appendChild(canvas);
const context = canvas.getContext("2d");
context.globalCompositeOperation = "multiply";
function setDPI(canvas, dpi) {
if (!canvas.style.width) canvas.style.width = canvas.width + "px";
if (!canvas.style.height) canvas.style.height = canvas.height + "px";
const scaleFactor = dpi / 96;
canvas.width = Math.ceil(canvas.width * scaleFactor);
canvas.height = Math.ceil(canvas.height * scaleFactor);
const ctx = canvas.getContext("2d");
ctx.scale(scaleFactor, scaleFactor);
}
function rotate(cx, cy, x, y, angle) {
const radians = angle;
const cos = Math.cos(radians);
const sin = Math.sin(radians);
const nx = cos * (x - cx) + sin * (y - cy) + cx;
const ny = cos * (y - cy) - sin * (x - cx) + cy;
return [nx, ny];
}
setDPI(canvas, 192);
class Star {
constructor() {
const rands = [];
rands.push(Math.random() * (maxorbit / 2) + 1);
rands.push(Math.random() * (maxorbit / 2) + maxorbit);
this.orbital = rands.reduce((p, c) => p + c, 0) / rands.length;
this.x = centerx;
this.y = centery + this.orbital;
this.yOrigin = centery + this.orbital;
this.speed =
((Math.floor(Math.random() * 2.5) + 1.5) * Math.PI) / 180;
this.rotation = 0;
this.startRotation =
((Math.floor(Math.random() * 360) + 1) * Math.PI) / 180;
this.id = stars.length;
this.collapseBonus = this.orbital - maxorbit * 0.7;
if (this.collapseBonus < 0) {
this.collapseBonus = 0;
}
this.color = "rgba(255,255,255," + (1 - this.orbital / 255) + ")";
this.hoverPos = centery + maxorbit / 2 + this.collapseBonus;
this.expansePos =
centery +
(this.id % 100) * -10 +
(Math.floor(Math.random() * 20) + 1);
this.prevR = this.startRotation;
this.prevX = this.x;
this.prevY = this.y;
this.originalY = this.yOrigin;
stars.push(this);
}
draw() {
if (!expanse && !returning) {
this.rotation = this.startRotation + currentTime * this.speed;
if (!collapse) {
if (this.y > this.yOrigin) {
this.y -= 2.5;
}
if (this.y < this.yOrigin - 4) {
this.y += (this.yOrigin - this.y) / 10;
}
} else {
this.trail = 1;
if (this.y > this.hoverPos) {
this.y -= (this.hoverPos - this.y) / -5;
}
if (this.y < this.hoverPos - 4) {
this.y += 2.5;
}
}
} else if (expanse && !returning) {
this.rotation =
this.startRotation + currentTime * (this.speed / 2);
if (this.y > this.expansePos) {
this.y -= Math.floor(this.expansePos - this.y) / -80;
}
} else if (returning) {
this.rotation = this.startRotation + currentTime * this.speed;
if (Math.abs(this.y - this.originalY) > 2) {
this.y += (this.originalY - this.y) / 50;
} else {
this.y = this.originalY;
this.yOrigin = this.originalY;
}
}
context.save();
context.fillStyle = this.color;
context.strokeStyle = this.color;
context.beginPath();
const oldPos = rotate(
centerx,
centery,
this.prevX,
this.prevY,
-this.prevR
);
context.moveTo(oldPos[0], oldPos[1]);
context.translate(centerx, centery);
context.rotate(this.rotation);
context.translate(-centerx, -centery);
context.lineTo(this.x, this.y);
context.stroke();
context.restore();
this.prevR = this.rotation;
this.prevX = this.x;
this.prevY = this.y;
}
}
const centerHover = document.querySelector(".centerHover");
centerHover.addEventListener("click", function () {
collapse = false;
expanse = true;
returning = false;
this.classList.add("open");
setTimeout(() => {
expanse = false;
returning = true;
setTimeout(() => {
returning = false;
this.classList.remove("open");
}, 2000);
}, 5000);
});
centerHover.addEventListener("mouseover", function () {
if (expanse === false) {
collapse = true;
}
});
centerHover.addEventListener("mouseout", function () {
if (expanse === false) {
collapse = false;
}
});
function loop() {
const now = new Date().getTime();
currentTime = (now - startTime) / 50;
context.fillStyle = "rgba(25,25,25,0.2)";
context.fillRect(0, 0, cw, ch);
for (let i = 0; i < stars.length; i++) {
if (stars[i] !== undefined) {
stars[i].draw();
}
}
requestAnimationFrame(loop);
}
function init() {
context.fillStyle = "rgba(25,25,25,1)";
context.fillRect(0, 0, cw, ch);
for (let i = 0; i < 2500; i++) {
new Star();
}
loop();
}
init();
}
document.addEventListener("DOMContentLoaded", () => {
blackhole("#blackhole");
});
</script>
</body>
</html>
-
精美图片相册-外链版本
http://xgk.pw/archives/207/
2025-07-13T21:09:00+08:00
图片演示精美图片相册-外链版本可以通过编辑txt文件,批量添加地址,分类。管理帐号admin密码123456下载链接: https://pan.baidu.com/s/1iYJL4rOxEF-xMFj6XC3mNw?pwd=b7kw 提取码: b7kw
-
戒撸打卡程序,大小仅有2.46k
http://xgk.pw/archives/201/
2025-07-03T10:21:00+08:00
前言嘴上说着今天不打,手还不是不老实。为此为让大家戒撸,我把“戒撸”做成一个程序,让“戒撸”和“上班”一样,都需要“打卡”。以此来记录,今天的你老实,还是今天你的手老实。演示介绍整个程序大小:2.46k由一个txt文件来储存数据,2个php组成。戒撸刻不容缓,速度下载使用。下载https://pan.baidu.com/s/1XjeYO3hMccY0ARPqqhUrCg?pwd=i485
-
性生活记录程序
http://xgk.pw/archives/199/
2025-07-01T00:57:04+08:00
前言你还在烦恼日子记不住?你还在烦恼她 / 他记错帐?不要怕,程序来了,那天交的公粮,一目了然,清清楚楚,明明白白。不止能记录今天的,甚至能记录月、年的,还能统计总数,交了多少又有谁能知道呢?(记得隐私,小心大家给你加班,假装你很强)演示 /https://199696.xyz/assets/20/像我一样单身的,根本不配拥有这种程序,玛的,用不上。下载地址https://pan.baidu.com/s/1FUOgV9Y6sNx-pIR3dRQdow?pwd=nsud
-
常用的长度单位
http://xgk.pw/archives/187/
2025-06-10T21:41:03+08:00
1米(m) = 0.001千米(km)1米(m) = 1米(m)1米(m) = 10分米(dm)1米(m) = 100厘米(cm)1米(m) = 1000毫米(mm)1米(m) = 10000丝米(dmm)1米(m) = 100000丝(机械尺寸单位)1米(m) = 1000000微米(μm)1米(m) = 1000000000纳米(nm)1米(m) = 0.002里1米(m) = 0.3丈1米(m) = 3尺1米(m) = 30寸1米(m) = 300分1米(m) = 3000厘1米(m) = 30000毫1米(m) = 0.00054海里(nmi)1米(m) = 0.5468066英寻1米(m) = 3.2808399英尺(ft)1米(m) = 39.3700787英寸(in)1米(m) = 0.0006214英里(mi)1米(m) = 0.004971弗隆(fur)1米(m) = 1.0936133码(yd)
-
Movie-影视记录程序
http://xgk.pw/archives/184/
2025-06-09T00:29:00+08:00
花了我一下午的时间,二开了这个程序,本着方便“记录观影”看到那一集时,下次好接上。前生源于在某葫芦上看到的“网页版软件库”源码。今生二开成“Movie程序”语言php、js、css、html支持后台自适应增/删/改海报上传照片管理密码修改网站基本信息修改
-
APP生成工具汇总
http://xgk.pw/archives/179/
2025-06-03T01:05:00+08:00
从移动互联网时代开始,不管是企业官网、个人博客、论坛等等,都有自动生成iOS/Android APP的需求。自从类似Claude sonnet+Cursor 这样的组合对编程较好支持后,AI自动生成iOS/Android APP已经成为重要的AI应用领域,出现了一堆新产品。APP生成工具主要分为两大类:a、AI辅助生成APP工具b、从已有网站/Wordpress/论坛等生成APP工具AI生成APP工具bolt.newhttps://bolt.new/支持Web/APP生成a0.devhttps://a0.dev/APP开源框架 Expo.dev开发Replithttps://replit.com/aSimhttps://asim.sh/https://news.ycombinator.com/item?id=43547677支持直接在移动端生成APP的APPLovablehttps://lovable.dev/Tempohttps://www.tempo.new/Createhttps://www.create.xyz/Avidhttps://www.getavid.dev/网站生成APPMedian.cohttps://median.co/ 原GoNative.ioAppMySitehttps://www.appmysite.com/Web2APPhttps://web2app.app/Appypiehttps://www.appypie.comWebViewGoldhttps://www.webviewgold.com/变色龙云http://webtoapp.bslyun.com/WordPresshttps://github.com/longmix/wordpress-to-app 开源https://apppresser.com/https://wordpress.org/plugins/app-builder/https://wordpress.org/plugins/appmysite/https://wordpress.org/plugins/mobiloud-mobile-app-plugin/https://wordpress.org/plugins/wpappninja/Discuz论坛DZ 阅读器– Discuz! X 论坛阅读工具iOS:https://apps.apple.com/app/id1602665775Android:https://ittool.app/file/dz_reader.apk 或Google Play搜索:DZ ReaderShopify商店https://apps.shopify.com/categories/store-design-storefronts-mobile-app-builderAPP开发框架Expohttps://expo.dev/
-
实时工资计算器
http://xgk.pw/archives/178/
2025-05-24T10:53:31+08:00
这是一款由某某 AI 生成的实时工资计算题,他能粗糙的计算出你的时薪是多少?只需要你输入 “月薪,月上班天数,每日上班工时”。简单粗暴,让牛马有希望,让你的知道付出是有回报的,虽然不多,但总归是有的。没有演示站,自己复制粘贴去看看。通过百度网盘分享的文件:实时工资计算器.…链接:https://pan.baidu.com/s/1MYrNjka8SMGPTfPRCNzvhA?pwd=w841 提取码:w841复制这段内容打开「百度网盘APP 即可获取」
-
柯林WAP建站程序最新破解版 V12.08.11
http://xgk.pw/archives/176/
2025-05-23T09:20:00+08:00
【运行环境】空间:Net2.0/3.5/4.0数据库:MSSQL2000/2005/2008/2012【本版简介】此破解版是基于柯林最新免费版破解而来出炉时间是:2016-09-18 版本号:V12.08.11【后台信息】后台地址:http://域名/admin后台帐号:wap后台密码:888888【安装说明】老鸟就不必理会此教程了!就简单的讲一下安装方法吧下载程序后-解压kelink.bak-还原数据库-上传程序修改Web.config数据库信息-后台设置域名转发-完成不会安装的朋友可以联系别人代上传安装(收费),我不会【注意事项】破解版请勿修改后台的主域名,改了主域名那么底部就会有柯林的版权通过百度网盘分享的文件:柯林WAP建站程…链接:https://pan.baidu.com/s/1j9TXxXhziPD03zSmM48hSA?pwd=8e55 提取码:8e55复制这段内容打开「百度网盘APP 即可获取」