LINUX SB 快照站

altzin

用户 ID 12710 · 当前名首次快照 2026-08-12 10:14:19 · 当前名始于 2026-08-12 10:14:19 · 原站主页: https://linux.sb/user/12710

发言

共 432 楼 · 第 9 / 9 页

发布了一个php屎山器,将一切变成goto
#0 · altzin
发帖 2026-08-10 17:08:54 · 快照 2026-08-12 10:35:56

打平表达式、控制流为goto和if
你将在代码中看不到任何高级控制流结构。也看不到任何写在一行的表达式。

编译器地址:https://www.altzin.com/goto.php

示例代码:

<?php
$count = 8;
$array = range(0, $count - 1, 1);
shuffle($array);
$c = count($array);
$g = [[[], $array]];
function rmkey(&$array, $key) {
    unset($array[$key]);
    $temp = [];
    $__fe_0_arr = ($array);
    reset($__fe_0_arr);
    __L_fe_check_0:
    $__fe_0_key = key($__fe_0_arr);
    if ($__fe_0_key === null) goto __L_fe_end_2;
    $__fe_0_val = current($__fe_0_arr);
    $value = $__fe_0_val;
    $temp[] = $value;
    __L_fe_next_1:
    next($__fe_0_arr);
    goto __L_fe_check_0;
    __L_fe_end_2:
    $array = [];
    $array = $temp;
}
$a = 0;
__L_for_check_3:
if (!($a < $c)) goto __L_for_end_5;
$temp = [];
$b = 0;
__L_for_check_6:
if (!($b < count($g))) goto __L_for_end_8;
$k = $g[$b];
$d = 0;
__L_for_check_9:
if (!($d < count($k[1]))) goto __L_for_end_11;
$rr = $k[0];
$pp = $k[1];
$rr[] = $k[1][$d];
rmkey($pp, $d);
$temp[] = [$rr, $pp];
__L_for_inc_10:
$d++;
goto __L_for_check_9;
__L_for_end_11:
__L_for_inc_7:
$b++;
goto __L_for_check_6;
__L_for_end_8:
$g = $temp;
__L_for_inc_4:
$a++;
goto __L_for_check_3;
__L_for_end_5:
$t = 0;
__L_for_check_12:
if (!($t < count($g))) goto __L_for_end_14;
$che = 0;
$i = 0;
__L_for_check_15:
if (!($i < ($c - 1))) goto __L_for_end_17;
$__if_19_done = 0;
if ($g[$t][0][$i] > $g[$t][0][$i + 1]) {
$che = 1;
    $__if_19_done = 1;
}
if ($__if_19_done !== 0) goto __L_if_end_18;
__L_if_end_18:
__L_for_inc_16:
$i++;
goto __L_for_check_15;
__L_for_end_17:
$__if_21_done = 0;
if ($che == 0) {
$array = $g[$t][0];
goto __L_for_end_14;
    $__if_21_done = 1;
}
if ($__if_21_done !== 0) goto __L_if_end_20;
__L_if_end_20:
__L_for_inc_13:
$t++;
goto __L_for_check_12;
__L_for_end_14:
print_r($array);
新写的合唱LDHCT^2
#0 · altzin
发帖 2026-08-10 13:29:30 · 快照 2026-08-12 10:39:50

V: 1.0
B: LDHCT^2
D: B$
J: 100
P: 4/4
Z: 钱辰飞 曲
Q1"高": 0 0 0 0 | 0 0 0 0 | 0 0 0 0 | 0 0 0 0 |
Q2"中低": 0 0 0 0 | 0 0 0 0 | 0 0 0 0 | 0 0 0 0/ 5,/ |
Q1: 0 0 0 0 | 0 0 0 0 | 6/ 6/ 7/ 1'/ 2'/ 1'/ 7/ 2'/ | 3' - - 0/ 3/ |
Q2: 1/ 2/ 3/ 5/ 4/ 3/ 2./ 1// | 6, - - 0/ 6,/ | 2/ 1/ 7,/ 6,/ 5,/ 5,/ 2/ 3/ | 1 - - 0/ 1/ |
Q1"高": 1'./ (7// 7/) 6/ 5 5/ 5/ | 6./ (5// 5/) 4/ 3 - | 4/ 6$/ 1/' 6/ 1'./ (1'// 1/') 5/ | 2' - - 0 |
Q2"中": 6./ (5// 5/) 4/ 3 3/ 3/ | 4./ (3// 3/) 2/ 1. 1/ | 6$/, 1/ 1/ 6/, 4./ (3// 3/) 1/ | 2 - - 0/ 5/ |
Q3"低": 1./ (7,// 7,/) 1/ 7, 7,/ 2/ | 1./ (7,// 7,/) 6,/ 5, - | 4, 6$,/ 4,/ 1./ (2// 2/) 3/ | 5 - - 0/ 5,/ |
Q1: 1'/ 1'/ 1'/ 1'/ 6/ 1'/ 1'./ 1//' | 4 - - 0 | 6/ 6/ 7/ 1/' 2'/ 1'/ 2'/ 4'/ | 3' - - 0/ 1'/ |
Q2: 5/ 5/ 5/ 5/ 6/ 6/ 6./ 5// | 4 - - 0/ 6/ | 2'/ 1'/ 7/ 6/ 5/ 5/ 2'/ 7/ | 1' - - 0/ 5/ |
Q3: 1/ 2/ 3/ 5/ 4/ 3/ 2./ 1// | 6, - - 0 | 3/ 3/ 2/ 3/ 4/ 5/ 5/ 5/ | 5 - - 0/ 3/ |
Q1: 4'./ 4'// 3'/ 2'/ 7. 7/ | 7/. 7// 5/ 1/' 3' - | 2'./ 2'// 2'/ 6/ 1'/ 7 2'/ | 1' - 0"转1=#C" 1/ 2/ |
Q2: 6./ 6// 5/ 4/ 3. 3/ | 2./ 2// 1/ 3/ 6 - | 4./ 4// 4/ 4/ 4/ 4 5/ | 3 - 0 6,/ 7,/ |
Q3: 4./ (5// 5/) 6/ 3 6/ 5/ | 5 3/ 5/ 1 - | 6,./ 6,// 6,$/ 5,/ 5,/ 5, 5,/ | 1 - 0 3,/ 3,/ |
[fenye]
Q1: 3/ 6/ 6/ 3// (3// 3/) 2/ 1/ 2/ | 3./ 3// 2./ 1// 6, 1/ 2/ | 3/ 6/ 6/ 3// (7// 7/) 6/ 7/ 1'/ | 2'/ 2'/ 2'/ 1'// 3'// - 0 |
Q2: 1./ (1// 1/) 2// 1// 7, 6,/ 5,/ | 6,/. 6,// 5,/. 4,// 3, 6,/ 7,/ | 1./ (1// 1/) 2// 1// 7,/. (5,// 5,/) 4/ | 3 - 0 2/ 3/ |
Q3: 6, 6, 5, 2, | 3, - - 3,/ 3,/ | 6, 6, 5, 7, | 6, - - 0 |
Q1: 0/ 5/ 4/ 2// 3// - 3/ 5/ | 6/ 3/ 7/ 5// 6// - - | 3./ (6// 6/) 3/ 5./ (6// 6/) 5/ | 2 4/ 3/ 2/ 1/ 7,/ 6,/ | 5#, - 0 1/ 2/ |
Q2: 4/ 4/ 4/ 6,// (7,// 7,/) 5,/ 5/ 2/ | 3/ 3/ 3/ 2// 1// - 1/ 2/ | 3./ (1#// 1/) 6,/ 5,./ (4,// 4,/) 3,/ | 4, - - - | 0 3/ 2/ 1/ 7,/ 6,/ 5#,/ |
Q3: 4, 4,// 5,// 6,/ 5,/ 4,/ 3,/ 2,/ | 3,/ 3,/ 3/, 5/, 3, 3,/ 4/, | 3,./ (6,// 6,/) 1/ 7,./ (6,// 6,/) 7,/ | 6, - 5,/ 4,/ 3,/ 2,/ | 3, - 0 4,/ 3,/ |
Q1: 3 3/ 4/ 3 1/ 2/ | 3/ 6/ 6/ 3// (3// 3/) 2/ 1/ 2/ | 3./ 3// 2./ 1// 6, 1/ 2/ | 3/ 6/ 6/ 3// (7// 7/) 6/ 7/ 1'/ | 2'/ 2'/ 2'/ 1'// 3'// - 0 |
Q2: 6, - 0 6,/ 7,/ | 1./ (1// 1/) 2// 1// 7, 6,/ 5,/ | 6,/. 6,// 5,/. 4,// 3, 6,/ 7,/ | 1./ (1// 1/) 2// 1// 7,/. (5,// 5,/) 4/ | 3 - 0 2/ 3/ |
Q3: 4, 4,/ 6,/ 3, 3,/ 3,/ | 6, 6, 5, 2, | 3, - - 3,/ 3,/ | 6, 6, 5, 7, | 6, - - 0 |
Q1: 0/ 5/ 4/ 2// 3// - 3/ 5/ | 6/ 3/ 7/ 5// 6// - - | 3./ (6// 6/) 3/ 3 7 | 6 3 3 3 | 1# - - - |
Q2: 4/ 4/ 4/ 6,// (7,// 7,/) 5,/ 5/ 2/ | 3/ 3/ 3/ 2// 1// - 1/ 2/ | 3./ (1#// 1/) 6,/ 6, 7, | 3, 6, 2 1# | 6, - - - |
Q3: 4, 4,// 5,// 6,/ 5,/ 4,/ 3,/ 2,/ | 3,/ 3,/ 3/, 5/, 3, 3,/ 4/, | 3,./ (6,// 6,/) 1/ 6, 3 | 2 1 3, 3, | 3, - - - |
Q: 0"转1=bB" 0 0 0 | 0 0 0 0 | 0 0 0 0 | 0 0 0 0 | 0 0 0 0 | 0 0 0 0 | 0 0 0 0 |
Q1: 0 0 0 1'/ 7/ | 1' - - 1'/ 7/ | 1' - - 2'/ 1'/ | 2' - - 2'// 3'// 2'// 1'// | 5 - 0 5/ 3/ |
Q2: 0 0 0 3/ 5/ | 6 - - 1/ 2/ | 3 - - 2/ 3/ | 5 - - 3/ 5/ | 3 - 0 1/ 7,/ |
Q3: 0 0 0 0 | 0/ 3// 5// 6/ 3// 5// 6// 7// 6/ - | 0/ 1// 2// 3/ 1// 2// 3// 5// 3// 2// 7,/ 1/ | 2/ 2// 3// 2/ 2// 3// 2// 3// 2/ 1/ 2/ | 7, - 0 1/ 2/ |
[fenye]
Q1: 6 - 7. 1' | 7/ 2/' 1'/ 7/ 6. 5 | 4./ (4// 4/) 4// 5// 6$ - | 7$./ (6$// 6/) 1$/ 7 - -"转1=E" 1/ 2/ |
Q2: 6,. 6/ 5. 2/ | 3/ 5/ 2/ 1/ 6, 6,/ 7,/ | 1 1/ 2/ 3$./ (3// 3/) 4// 3// | 5$./ (4// 4/) 3$/ 4 - - 6/, 7/, |
Q3: 3. 1/ 7, 3/ 5/ | 7, 1 6, - | 4,./ (4,// 4,/) 6,$/ 7,$// 6,/ (7,// 7,//) 6,// 7,/ | 1// 7,$/ 1// 7,/ 6,$/ 2 - - 3,/ 3,/ |
Q1: 3/ 6/ 6/ 3// (3// 3/) 2/ 1/ 2/ | 3./ 3// 2./ 1// 6, 1/ 2/ | 3/ 6/ 6/ 3// (7// 7/) 6/ 7/ 1'/ | 2'/ 2'/ 2'/ 1'// 3'// - 0 |
Q2: 1./ (1// 1/) 2// 1// 7, 6,/ 5,/ | 6,/. 6,// 5,/. 4,// 3, 6,/ 7,/ | 1./ (1// 1/) 2// 1// 7,/. (5,// 5,/) 4/ | 3 - 0 2/ 3/ |
Q3: 6, 6, 5, 2, | 3, - - 3,/ 3,/ | 6, 6, 5, 7, | 6, - - 0 |
Q1: 0/ 5/ 4/ 2// 3// - 3/ 5/ | 6/ 3/ 7/ 5// 6// - - | 3./ (6// 6/) 3/ 5./ (6// 6/) 5/ | 2 4/ 3/ 2/ 1/ 7,/ 6,/ | 5#, - 0 1/ 2/ |
Q2: 4/ 4/ 4/ 6,// (7,// 7,/) 5,/ 5/ 2/ | 3/ 3/ 3/ 2// 1// - 1/ 2/ | 3./ (1#// 1/) 6,/ 5,./ (4,// 4,/) 3,/ | 4, - - - | 0 3/ 2/ 1/ 7,/ 6,/ 5#,/ |
Q3: 4, 4,// 5,// 6,/ 5,/ 4,/ 3,/ 2,/ | 3,/ 3,/ 3/, 5/, 3, 3,/ 4/, | 3,./ (6,// 6,/) 1/ 7,./ (6,// 6,/) 7,/ | 6, - 5,/ 4,/ 3,/ 2,/ | 3, - 0 4,/ 3,/ |
Q1: 3 3/ 4/ 3 1/ 2/ | 3/ 6/ 6/ 3/ 7/ 3/ 2/ 1// 2// | 3/ 6,// (6,// 6,/) 4/ 3. 4 | 6// 3// 3/ 6// 3// 3/ 7/ 6/ 7/ 1'/ |
Q2: 6, - 0 6,/ 7,/ | 1./ (1// 1/) 2// 3// 2 2/ 5/ | 3./ 3// 2./ 2// 1 1/ 2/ | 3./ (3// 3/) 3// 5// 6./ (5// 5/) 2/ |
Q3: 4, 4,/ 6,/ 3, 3,/ 3,/ | 6, 3,/ 6,/ 5, 3,/ 5,/ | 4,/ 3,/ 2,/ 1,/ 3, 5,/ 4,/ | 3,/ 3,// 2,// 3,/ 3,// 2,// 4,./ (3,// 3,/) 2,/ |
Q1: 2'/ 1'/ 7/ 6/ 5#/ 0/ 3/ 5=/ | 6./ (6// 6/) 7// 1'// 7./ (3// 3/) 7/ | 2'./ (3// 3/) 2'/ 1'# 6/ 7/ | 1'. 2'/ 7. 5/ | 6 - - - ||
Q2: 3 - 0 1/ 3/ | 4 4/ 5/ 2./ (3// 3/) 5// 6// | 5./ (5// 5/) 4/ 3 2/ 3/ | 4. 4// 3// 2. 2/ | 1 - - - ||
Q3: 4,/ 5#,/ 6,/ 7,/ 3,/ 0/ 1,/ 1/ | 6, 5,/ 4,/ 5, 1/ 7/, | 6, 7, 3, 4,/ 3,/ | 4,. 5,/ 5,/ 6,/ 7,/ 4,/ | 3, - - - ||

单php文件实现的工作量证明代币平台
#1 · altzin
发帖 2026-08-10 13:28:46 · 快照 2026-08-12 10:40:03

额,怎么被截断了…
github/QianCF/php-PoW
自取

单php文件实现的工作量证明代币平台
#0 · altzin
发帖 2026-08-10 13:08:36 · 快照 2026-08-12 10:40:03

不管怎样,适合学校学生使用,或者朋友间玩耍。
直接点击按钮就可以获得一个密码,密码直接用于登录。
可以使用自带的web worker轻松挖矿。
直接部署index.php到任何文件可写的服务器即可。
index.php:

<?php
$DATA_DIR = __DIR__ . '/data';
$USER_FILE = $DATA_DIR . '/users.json';
$GLOBAL_HEAD_FILE = $DATA_DIR . '/head';
$MINTED_DIR = $DATA_DIR . '/minted';
$WALLETS_DIR = $DATA_DIR . '/wallets';
$ZERO_HASH = str_repeat('0', 64);
$MINT_PREFIX = '000000';

date_default_timezone_set('PRC');

/** 64 进制字母表(64 字符) */
const RADIX64_ALPHABET = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_';

function intToRadix64(int $n): string
{
    if ($n === 0) {
        return '0';
    }
    $s = '';
    while ($n > 0) {
        $s = RADIX64_ALPHABET[$n % 64] . $s;
        $n = intdiv($n, 64);
    }
    return $s;
}

function randomRadix64Id(): string
{
    return intToRadix64(random_int(0, PHP_INT_MAX));
}

function q(string $s): string
{
    return htmlspecialchars($s, ENT_QUOTES, 'UTF-8');
}

function currentCredential(): string
{
    return isset($_GET['credential']) ? (string)$_GET['credential'] : (isset($_POST['credential']) ? (string)$_POST['credential'] : '');
}

function jsonResponse(array $data, int $code = 200): void
{
    http_response_code($code);
    header('Content-Type: application/json; charset=utf-8');
    echo json_encode($data, JSON_UNESCAPED_UNICODE);
    exit;
}

function ensureDataDir(): void
{
    global $DATA_DIR, $MINTED_DIR, $WALLETS_DIR;
    if (!is_dir($DATA_DIR)) {
        mkdir($DATA_DIR, 0755, true);
    }
    if (!is_dir($MINTED_DIR)) {
        mkdir($MINTED_DIR, 0755, true);
    }
    if (!is_dir($WALLETS_DIR)) {
        mkdir($WALLETS_DIR, 0755, true);
    }
}

function loadUsers(): array
{
    global $USER_FILE;
    if (!is_readable($USER_FILE)) {
        return [];
    }
    $raw = file_get_contents($USER_FILE);
    $d = $raw !== false ? json_decode($raw, true) : null;
    return is_array($d) ? $d : [];
}

function saveUsers(array $users): void
{
    global $USER_FILE;
    ensureDataDir();
    file_put_contents($USER_FILE, json_encode($users, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT));
}

function findUsernameByCredential(string $credential): ?string
{
    $users = loadUsers();
    foreach ($users as $name => $info) {
        if (isset($info['credential']) && (string)$info['credential'] === (string)$credential) {
            return $name;
        }
    }
    return null;
}

function safeUsername(string $username): string
{
    return preg_replace('/[^a-zA-Z0-9\-_]/', '', $username);
}

function walletDir(string $username): string
{
    global $WALLETS_DIR;
    return $WALLETS_DIR . '/' . safeUsername($username);
}

function ensureWalletDir(string $username): string
{
    $dir = walletDir($username);
    if (!is_dir($dir)) {
        mkdir($dir, 0755, true);
    }
    return $dir;
}

function mintedTokenPath(string $hash): string
{
    global $MINTED_DIR;
    return $MINTED_DIR . '/' . $hash . '.token';
}

function walletTokenPath(string $username, string $hash): string
{
    return walletDir($username) . '/' . $hash . '.token';
}

function getLatestHash(): string
{
    global $ZERO_HASH, $GLOBAL_HEAD_FILE;
    if (!is_readable($GLOBAL_HEAD_FILE)) {
        return $ZERO_HASH;
    }
    $h = trim((string)file_get_contents($GLOBAL_HEAD_FILE));
    if (!preg_match('/^[0-9a-f]{64}$/', $h)) {
        return $ZERO_HASH;
    }
    return $h;
}

function setLatestHash(string $hash): void
{
    global $GLOBAL_HEAD_FILE;
    if (!preg_match('/^[0-9a-f]{64}$/', $hash)) {
        throw new InvalidArgumentException('无效的代币哈希');
    }
    ensureDataDir();
    file_put_contents($GLOBAL_HEAD_FILE, $hash);
}

function listTokenFiles(string $username): array
{
    $dir = walletDir($username);
    if (!is_dir($dir)) {
        return [];
    }
    $files = glob($dir . '/*.token');
    if ($files === false) {
        return [];
    }
    usort($files, function ($a, $b) {
        $ma = @filemtime($a);
        $mb = @filemtime($b);
        if ($ma === $mb) {
            return strcmp($a, $b);
        }
        return $ma <=> $mb;
    });
    return $files;
}

function getTokenCount(string $username): int
{
    return count(listTokenFiles($username));
}

function sha256Hex(string $input): string
{
    return hash('sha256', $input);
}

function verifyMintInput(string $input, string $prevHash): string
{
    global $MINT_PREFIX, $ZERO_HASH;
    if ($prevHash === '') {
        $prevHash = $ZERO_HASH;
    }
    if (!preg_match('/^[0-9a-f]{64}$/', $prevHash)) {
        throw new InvalidArgumentException('上一个代币哈希无效');
    }
    if ($input === '' || strpos($input, $prevHash) !== 0) {
        throw new InvalidArgumentException('输入必须以当前上一个代币哈希为前缀');
    }
    $hash = sha256Hex($input);
    if (strpos($hash, $MINT_PREFIX) !== 0) {
        throw new InvalidArgumentException('哈希未满足 6 个前导零');
    }
    return $hash;
}

function addToken(string $username, string $input): array
{
    global $GLOBAL_HEAD_FILE, $ZERO_HASH;

    ensureWalletDir($username);
    ensureDataDir();

    $fp = fopen($GLOBAL_HEAD_FILE, 'c+');
    if ($fp === false) {
        throw new RuntimeException('无法打开全局链头');
    }
    if (!flock($fp, LOCK_EX)) {
        fclose($fp);
        throw new RuntimeException('无法锁定全局链头');
    }

    $raw = stream_get_contents($fp);
    $prevHash = $ZERO_HASH;
    if ($raw !== false && $raw !== '') {
        $h = trim($raw);
        if (preg_match('/^[0-9a-f]{64}$/', $h)) {
            $prevHash = $h;
        }
    }

    try {
        $hash = verifyMintInput($input, $prevHash);

        $mintedPath = mintedTokenPath($hash);
        if (is_file($mintedPath)) {
            throw new InvalidArgumentException('该代币已存在');
        }

        if (file_put_contents($mintedPath, $input, LOCK_EX) === false) {
            throw new RuntimeException('写入全局代币失败');
        }

        $walletPath = walletTokenPath($username, $hash);
        if (file_put_contents($walletPath, $input, LOCK_EX) === false) {
            @unlink($mintedPath);
            throw new RuntimeException('写入持有记录失败');
        }

        rewind($fp);
        ftruncate($fp, 0);
        fwrite($fp, $hash);
        fflush($fp);
    } finally {
        flock($fp, LOCK_UN);
        fclose($fp);
    }

    return [
        'hash' => $hash,
        'count' => getTokenCount($username),
        'prev_hash' => $prevHash,
        'latest_hash' => $hash,
    ];
}

function transferTokens(string $fromUser, string $toUser, int $count): array
{
    if ($fromUser === $toUser) {
        throw new InvalidArgumentException('不能向自己转账');
    }
    if ($count <= 0) {
        throw new InvalidArgumentException('转账数量必须大于 0');
    }

    $users = loadUsers();
    if (!isset($users[$toUser])) {
        throw new InvalidArgumentException('目标账户不存在');
    }

    ensureWalletDir($toUser);
    $files = listTokenFiles($fromUser);

    if (count($files) < $count) {
        throw new InvalidArgumentException('代币数量不足');
    }

    $moved = [];
    for ($i = 0; $i < $count; $i++) {
        $src = $files[$i];
        $hash = basename($src, '.token');
        if (!preg_match('/^[0-9a-f]{64}$/', $hash)) {
            throw new RuntimeException('代币文件损坏');
        }
        if (!is_file(mintedTokenPath($hash))) {
            throw new RuntimeException('全局代币不存在');
        }
        $dst = walletTokenPath($toUser, $hash);
        if (is_file($dst)) {
            throw new RuntimeException('目标账户已持有该代币');
        }
        if (!rename($src, $dst)) {
            throw new RuntimeException('转账失败');
        }
        $moved[] = $hash;
    }

    return [
        'moved' => $moved,
        'from_count' => getTokenCount($fromUser),
        'to_count' => getTokenCount($toUser),
    ];
}

function requireUser(string $cred): string
{
    if ($cred === '') {
        throw new InvalidArgumentException('请先登录');
    }
    $name = findUsernameByCredential($cred);
    if ($name === null) {
        throw new InvalidArgumentException('凭证无效');
    }
    return $name;
}

// ---------- 路由 ----------
if (isset($_POST['api'])) {
    $api = (string)$_POST['api'];
    $cred = isset($_POST['credential']) ? (string)$_POST['credential'] : '';

    try {
        switch ($api) {
            case 'create_account': {
                ensureDataDir();
                $username = randomRadix64Id();
                $password = randomRadix64Id();
                $users = loadUsers();
                while (isset($users[$username])) {
                    $username = randomRadix64Id();
                }
                $users[$username] = ['credential' => $password];
                saveUsers($users);
                ensureWalletDir($username);
                ?>账户已创建。<br>
                用户名:<strong><?= q($username) ?></strong><br>
                密码:<strong><?= q($password) ?></strong><br>
                请妥善保存,丢失将无法登录。<br>
                <a href="index.php?credential=<?= q(urlencode($password)) ?>">使用此密码直接进入</a> |
                <a href="index.php">返回</a><?php
                exit;
            }
            case 'login': {
                if ($cred === '') {
                    header('Location: index.php?err=empty');
                    exit;
                }
                $name = findUsernameByCredential($cred);
                if ($name === null) {
                    header('Location: index.php?err=invalid');
                    exit;
                }
                header('Location: index.php?credential=' . urlencode($cred));
                exit;
            }
            case 'get_status': {
                $name = requireUser($cred);
                jsonResponse([
                    'ok' => true,
                    'username' => $name,
                    'token_count' => getTokenCount($name),
                    'latest_hash' => getLatestHash(),
                ]);
            }
            case 'submit_token': {
                $name = requireUser($cred);
                $input = isset($_POST['input']) ? (string)$_POST['input'] : '';
                if ($input === '') {
                    jsonResponse(['error' => '缺少输入'], 400);
                }
                $result = addToken($name, $input);
                jsonResponse(['ok' => true] + $result);
            }
            case 'transfer': {
                $name = requireUser($cred);
                $target = isset($_POST['target_username']) ? trim((string)$_POST['target_username']) : '';
                $count = isset($_POST['count']) ? (int)$_POST['count'] : 0;
                if ($target === '') {
                    jsonResponse(['error' => '请输入目标用户名'], 400);
                }
                $result = transferTokens($name, $target, $count);
                jsonResponse(['ok' => true] + $result);
            }
            default:
                jsonResponse(['error' => '未知 api'], 400);
        }
    } catch (InvalidArgumentException $e) {
        if (!empty($_POST['ajax']) || in_array($api, ['get_status', 'submit_token', 'transfer'], true)) {
            jsonResponse(['error' => $e->getMessage()], 400);
        }
        ?><?= q($e->getMessage()) ?> <a href="index.php<?= $cred !== '' ? '?credential=' . urlencode($cred) : '' ?>">返回</a><?php
        exit;
    } catch (RuntimeException $e) {
        jsonResponse(['error' => $e->getMessage()], 500);
    }
}

// ---------- 页面 ----------
$cred = currentCredential();
$name = $cred !== '' ? findUsernameByCredential($cred) : null;
$loggedIn = $name !== null;
?>
<h1>代币系统</h1>

<?php if (!$loggedIn): ?>
    <?php if (isset($_GET['err'])): ?>
        <?php if ($_GET['err'] === 'invalid'): ?>密码无效。<br><?php endif ?>
        <?php if ($_GET['err'] === 'empty'): ?>请输入密码。<br><?php endif ?>
    <?php endif ?>

    <form method="post" action="index.php">
        <input type="hidden" name="api" value="create_account">
        <button type="submit">获取一个账户</button>
    </form>
    <br>
    <form method="post" action="index.php">
        <input type="hidden" name="api" value="login">
        密码:<input type="text" name="credential" required>
        <button type="submit">登录</button>
    </form>
    基于POW的代币系统。<br/>
    当前用户:请先登录
    用户名(转账用):<strong>请先登录</strong>
    代币数量:<span id="token-count">请先登录</span><br>
    全局链头哈希(挖矿前缀,所有用户共用):<br>
    <span id="latest-hash" style="word-break:break-all"><?=file_get_contents("data/head")?></span><br><br>

    <hr>
    <h2>挖矿</h2>
    规则:构造字符串,前缀为当前「全局链头哈希」,后面追加任意内容,使 SHA256 的十六进制结果以 6 个 0 开头。任何人挖到新代币都会推进同一条链。<br>
    Worker 数量:<input type="number" id="worker-count" value="1" min="1" max="32" size="3" disabled>
    <button type="button" id="btn-start-mining" disabled>开始计算</button>
    <button type="button" id="btn-stop-mining" disabled>停止计算</button><br>
    状态:<span id="mining-status">未开始</span><br>
    已尝试次数:<span id="mining-tries">0</span><br><br>

    <hr>
    <h2>转账</h2>
    向目标账户发送代币(服务器选取最老的代币,不保留转账记录):<br>
    目标用户名:<input type="text" id="transfer-target" size="20" disabled>
    数量:<input type="number" id="transfer-count" value="1" min="1" size="6" disabled>
    <button type="button" id="btn-transfer" disabled>发送</button>
<?php else: ?>
    基于POW的代币系统。<br/>
    当前用户:<?= q($name) ?>
    用户名(转账用):<strong><?= q($name) ?></strong>
    <a href="index.php">退出登录</a><br><br>
    代币数量:<span id="token-count">加载中…</span><br>
    全局链头哈希(挖矿前缀,所有用户共用):<br>
    <span id="latest-hash" style="word-break:break-all">加载中…</span><br><br>

    <hr>
    <h2>挖矿</h2>
    规则:构造字符串,前缀为当前「全局链头哈希」,后面追加任意内容,使 SHA256 的十六进制结果以 6 个 0 开头。任何人挖到新代币都会推进同一条链。<br>
    Worker 数量:<input type="number" id="worker-count" value="1" min="1" max="32" size="3">
    <button type="button" id="btn-start-mining">开始计算</button>
    <button type="button" id="btn-stop-mining" disabled>停止计算</button><br>
    状态:<span id="mining-status">未开始</span><br>
    已尝试次数:<span id="mining-tries">0</span><br><br>

    <hr>
    <h2>转账</h2>
    向目标账户发送代币(服务器选取最老的代币,不保留转账记录):<br>
    目标用户名:<input type="text" id="transfer-target" size="20">
    数量:<input type="number" id="transfer-count" value="1" min="1" size="6">
    <button type="button" id="btn-transfer">发送</button>
    <span id="transfer-result"></span>

    <script>
    (function(){
        var cred = <?= json_encode($cred, JSON_UNESCAPED_UNICODE) ?>;
        var ZERO_HASH = '<?= $ZERO_HASH ?>';
        var mining = false;
        var workers = [];
        var currentPrevHash = ZERO_HASH.toLowerCase();
        var totalTries = 0;
        var foundPending = false;
        var statusReqSeq = 0;
        var headPollTimer = null;

        function esc(s){ var d=document.createElement('div'); d.textContent=s; return d.innerHTML; }

        function postApi(api, data, cb) {
            var fd = new FormData();
            fd.append('api', api);
            fd.append('credential', cred);
            fd.append('ajax', '1');
            for (var k in data) if (data.hasOwnProperty(k)) fd.append(k, data[k]);
            var x = new XMLHttpRequest();
            x.open('POST', 'index.php');
            x.onload = function(){
                try { cb(JSON.parse(x.responseText)); }
                catch(e) { cb({ error: '响应解析失败' }); }
            };
            x.onerror = function(){ cb({ error: '网络错误' }); };
            x.send(fd);
        }

        function setStatus(text) {
            var el = document.getElementById('mining-status');
            if (el) el.textContent = text;
        }

        function updateTries(n) {
            totalTries = n;
            var el = document.getElementById('mining-tries');
            if (el) el.textContent = String(n);
        }

        function sha256HexClient(str) {
            return crypto.subtle.digest('SHA-256', new TextEncoder().encode(str)).then(function(h){
                var a = new Uint8Array(h), s = '';
                for (var i = 0; i < a.length; i++) {
                    var x = a[i].toString(16);
                    if (x.length < 2) x = '0' + x;
                    s += x;
                }
                return s;
            });
        }

        function verifyMintClient(input, prevHash) {
            if (!input || input.indexOf(prevHash) !== 0) {
                return Promise.resolve({ ok: false, error: '前缀不匹配' });
            }
            return sha256HexClient(input).then(function(hash){
                if (hash.indexOf('000000') !== 0) {
                    return { ok: false, error: '哈希未满足难度' };
                }
                return { ok: true, hash: hash };
            });
        }

        var workerBlobUrl = null;

        function terminateWorkers() {
            for (var i = 0; i < workers.length; i++) {
                try { workers[i].postMessage({ stop: true }); } catch(e) {}
                workers[i].terminate();
            }
            workers = [];
        }

        function stopMining() {
            mining = false;
            foundPending = false;
            terminateWorkers();
            document.getElementById('btn-start-mining').disabled = false;
            document.getElementById('btn-stop-mining').disabled = true;
            setStatus('已停止');
        }

        function ensureHeadPollRunning() {
            if (!headPollTimer) startHeadPoll();
        }

        function getWorkerBlobUrl() {
            if (workerBlobUrl) return workerBlobUrl;
            var workerCode = [
                'var PREFIX="000000";',
                'var active=false;',
                'function sha256Hex(str){',
                '  return crypto.subtle.digest("SHA-256", new TextEncoder().encode(str)).then(function(h){',
                '    var a=new Uint8Array(h), s="";',
                '    for(var i=0;i<a.length;i++){ var x=a[i].toString(16); if(x.length<2) x="0"+x; s+=x; }',
                '    return s;',
                '  });',
                '}',
                'async function mine(prev, startNonce, batchSize){',
                '  var nonce=startNonce;',
                '  while(active){',
                '    for(var i=0;i<batchSize&&active;i++,nonce++){',
                '      var input=prev+nonce;',
                '      var hash=await sha256Hex(input);',
                '      if(hash.indexOf(PREFIX)===0){',
                '        active=false;',
                '        self.postMessage({found:true,input:input,hash:hash});',
                '        return;',
                '      }',
                '    }',
                '    if(active) self.postMessage({tries:batchSize});',
                '  }',
                '}',
                'self.onmessage=function(e){',
                '  if(e.data.stop){ active=false; return; }',
                '  active=true;',
                '  mine(e.data.prevHash, e.data.startNonce, e.data.batchSize||800);',
                '};'
            ].join('\n');
            workerBlobUrl = URL.createObjectURL(new Blob([workerCode], {type:'application/javascript'}));
            return workerBlobUrl;
        }

        function spawnWorkers() {
            var n = parseInt(document.getElementById('worker-count').value, 10);
            if (!n || n < 1) n = 1;
            if (n > 32) n = 32;
            var url = getWorkerBlobUrl();
            for (var w = 0; w < n; w++) {
                (function(workerId){
                    var worker = new Worker(url);
                    worker.onmessage = function(ev) {
                        var d = ev.data;
                        if (d.found && !foundPending) {
                            foundPending = true;
不依赖任何数学知识的“慢傅里叶变换”算法
#0 · altzin
发帖 2026-08-10 12:16:57 · 快照 2026-08-12 10:40:27

slowFT

第一次实现了“不用任何数学知识,编程初学者都可以写的傅里叶变换”。

基于相减能量最低法和三分法的慢速傅里叶变换。

这是一个“暴力搜索”傅里叶变换算法,它的核心思想极其简单:对每一个可能的频率,通过反复尝试找到最匹配的正弦波。

判断匹配程度的方法是,从原信号中减掉,剩余信号总能量越低,越匹配。

算法的工作方式:
1. 计算平均值,找到直流分量
2. 对每个频率,先搜索最佳相位:在0到1之间使用三分法不断缩小区间,找到使减去后能量最小的相位
3. 再用同样的方法搜索最佳幅度:在0到一个很大的数之间使用三分法找最优值
4. 最终每个频率都得到一对值(幅度,相位)

与传统傅里叶变换的区别:
- 不需要任何数学知识:不理解复数、欧拉公式、正交性也能看懂
- 直观易懂:就是在做“波形减去尝试”——调整正弦波的位置和高度,看它能减掉多少能量
- 极其缓慢:对每个频率都要进行几十次搜索,每次搜索都要遍历全部数据点

适用场景:
- 教学演示:让学生理解傅里叶变换的物理意义
- 自定义基函数:可以搜索方波、三角波等其他波形
- 验证傅里叶变换算法的正确性和可行性

局限性:
- 计算复杂度极高:O(N² × 迭代次数),比标准FFT慢到不可理喻

这不是一个实用的算法,但它是理解傅里叶变换“到底在干什么”的最佳入门代码。

代码如下

<?php

function slowFT($array){
    $FT=[];
    $zero=array_sum($array)/count($array);
    $FT[0]=[$zero,null];
    for($freq=1;$freq<floor(count($array)/2)-1;$freq++){
        $phase=get_phase($array,$freq);
        $size=get_size($array,$freq,$phase);
        $FT[$freq]=[$size,$phase];
    }
    return $FT;
}
function customsin($count,$freq,$phase,$size,$x){
    return $size*sin(2*pi()*($freq*$x/$count-$phase));
}
function getenergy($freq, $phase, $size, $array) {
    $energy = 0;
    for ($x = 0; $x < count($array); $x++) {
        $energy += ($array[$x] - customsin(count($array), $freq, $phase, $size, $x)) ** 2;
    }
    return $energy;
}
function get_phase($array,$freq){
    $min=0;
    $max=1;
    for($i=0;$i<15;$i++){
        $mid1=$min+($max-$min)*1/3;
        $mid2=$min+($max-$min)*2/3;
        $energy1=getenergy($freq,$min,1,$array);
        $energy2=getenergy($freq,$mid1,1,$array);
        $energy3=getenergy($freq,$mid2,1,$array);
        $energy4=getenergy($freq,$max,1,$array);
        $sum1=$energy1+$energy2;
        $sum2=$energy2+$energy3;
        $sum3=$energy3+$energy4;
        if($sum1<=$sum2 && $sum1<=$sum3){
            $max=$mid1;
        }elseif($sum2<=$sum1 && $sum2<=$sum3){
            $min=$mid1;
            $max=$mid2;
        }else{
            $min=$mid2;
        }
    }
    return ($min+$max)/2;
}
function get_size($array, $freq, $phase) {
    $min = 0;
    $max = 200000000;
    for ($i = 0; $i < 80; $i++) {
        $m1 = $min + ($max - $min) / 3;
        $m2 = $min + ($max - $min) * 2 / 3;
        $energy1 = getenergy($freq,$phase,$m1,$array);
        $energy2 = getenergy($freq,$phase,$m2,$array);
        if ($energy1 < $energy2) {
            $max = $m2;
        } else {
            $min = $m1;
        }
    }
    return ($min + $max) / 2;
}
测试发图功能和新的markdown支持
#0 · altzin
发帖 2026-08-10 11:51:44 · 快照 2026-08-12 10:40:35

Altzin Logo
希望可以显示。
这个文字会粗体
这个文字会斜体

这可能是标题

尝试更大的标题

尝试更小的标题

我才不引用呢

<?php
echo "PHP是世界上最好的语言";

高亮文本
- 第一项
- 二
- 五

本帖子由我妹妹发布
#4 · altzin
发帖 2026-08-10 11:42:04 · 快照 2026-08-12 10:40:57

@see0see #3 你好,我是妹妹

小明学飞
#0 · altzin
发帖 2026-08-10 11:41:16 · 快照 2026-08-12 10:40:44

小明花了10年,终于学会了飞。成功在天上飞了几分钟后,他发现自己不会降落——不飞上天就不能学降落。这时的他,只剩下一次机会,要么学会降落,要么摔死。

基本上就是…送门罗币了。只有一个人能拿到。
#2 · altzin
发帖 2026-08-10 11:30:51 · 快照 2026-08-12 10:40:50

@中国石化 #1 谢谢购买…哈哈我血亏。挖了几个月的

基本上就是…送门罗币了。只有一个人能拿到。
#0 · altzin
发帖 2026-08-10 11:28:11 · 快照 2026-08-12 10:40:50

0.006802084761门罗币。先到先得。

本帖子由我妹妹发布
#0 · altzin
发帖 2026-08-10 11:18:10 · 快照 2026-08-12 10:40:57

有一天,哥哥都在占用我的地盘,然后我一拳打了哥哥一巴掌,然后我哥哥疼得嗷嗷叫,开始反击。

米豪死了!
#0 · altzin
发帖 2026-08-10 11:10:54 · 快照 2026-08-12 10:41:02

昨天,米豪很早来到我家,和我一起去上学。我家住在21楼,米豪在按了1楼的同时,竟然还按了12楼和22楼。22楼很快熄灭,但是12楼开门了,米豪离奇的走了出去,站在电梯外门和内门的中间,当时我没有意识到这是一个多么危险的事情,随着电梯开动,猛烈一声撞击,电梯被米豪卡住了。我扒开门,把米豪拿回了电梯,米豪毫无反应,我大声惊呼:"米豪死了!米豪死了!"我照常来到学校,把米豪放在了教学楼门口的里面,和细胞传递了一些纸条,汇报了情况,细胞夸我做得好,对我倍加拥戴。我回去,准备把米豪交给校医,结果发现米豪不见了。我四处询问,就连细胞也说没见过,最后,我在校医那里找到了米豪。校医问我米豪的情况,我拿出了和细胞聊天的纸,校医特别感兴趣,拍了下来。

朱元璋大战曹操
#0 · altzin
发帖 2026-08-10 11:00:21 · 快照 2026-08-12 10:41:20

1360年,朱元璋与曹操在应天府爆发激烈战争,曹操偷派士兵前往明军阵营,得知明军使用旗帜辨别敌友。战事持续到1362年,明军突破曹操的淮河防线,曹军一溃千里,曹操决定废汉献帝,使用新的魏国旗帜。朱元璋军队由于没有发现汉朝旗帜,放松防备,退守河阳,曹操趁机突围,大破明军。1368年,曹操称帝,建立魏国,1644年,政权被司马氏夺取,魏国亡。

神秘项目:11倍大小等线字体
#0 · altzin
发帖 2026-08-10 10:52:16 · 快照 2026-08-12 10:41:28

超级大的字体,能让你的电脑上的字大到重叠在一起完全无法看清。
配有一个控制台脚本,可以随意让其他网页使用这个字体。
会有种文字恐怖谷的感觉

github/QianCF/11x-DengXian

世界上最差的排序——穷举排序
#2 · altzin
发帖 2026-08-10 10:49:26 · 快照 2026-08-12 10:41:46

@杀 #1 是的是的 确实是这样

【非必要 不封号】还活着的第六天 完善管理机制
#5 · altzin
发帖 2026-08-10 10:48:37 · 快照 2026-08-12 10:14:29

@痛失姓名的站长 #楼主 因为:这是站长的帖子.都要投币 给你点个赞,并投币10积分。

突然不能投币了
#1 · altzin
发帖 2026-08-10 10:47:58 · 快照 2026-08-12 10:41:37

额,现在好了。
竟然不能做到一次性更新

突然不能投币了
#0 · altzin
发帖 2026-08-10 10:47:18 · 快照 2026-08-12 10:41:37

投一个试试就知道了,会提示请输入投币理由。

世界上最差的排序——穷举排序
#0 · altzin
发帖 2026-08-10 10:41:25 · 快照 2026-08-12 10:41:46

穷举所有顺序,找到第一个升序的
<?php
$count=8;

$array=range(0,$count-1,1);
shuffle($array);
$c=count($array);
$g=[[[],$array]];
function rmkey(&$array, $key) {
    unset($array[$key]);
    $temp = [];
    foreach ($array as $value) {
        $temp[] = $value;
    }
    $array = [];
    $array = $temp;
}
for($a=0;$a<$c;$a++){
    $temp=[];
    for($b=0;$b<count($g);$b++){
        $k=$g[$b];
        for($d=0;$d<count($k[1]);$d++){
            $rr=$k[0];
            $pp=$k[1];
            $rr[]=$k[1][$d];
            rmkey($pp,$d);
            $temp[]=[$rr,$pp];
        }
    }
    $g=$temp;
}
for($t=0;$t<count($g);$t++){
    $che=0;
    for($i=0;$i<$c-1;$i++){
        if($g[$t][0][$i]>$g[$t][0][$i+1]){
            $che=1;
        }
    }
    if($che==0){
        $array=$g[$t][0];
        break;
    }
}
print_r($array);

儿童作文:头孢拉定游方正
#0 · altzin
发帖 2026-08-10 10:33:02 · 快照 2026-08-12 10:42:01

头孢拉定游方正
我是一颗头孢拉定,我被死死的封在药盒里,没有活动的空间,没有新鲜的空气,这样的日子似乎无穷无尽,年复一年,直到那一天的出现...
我感到一阵震颤,随后我被湿润,方正吞服了我。顺着方正的食管,我来到了胃,我在这待了好久,好久,恍惚之际,突然爆体而亡,查看死亡回放,我的外壳溶解了,碎成了无数细小的,白色的子弟。第二世,我重生在了其中一个子弟上,我发现已经有一些子弟从胃里进入了血管,不过我好像没那么幸运,到了一个极为狭长的空间,这里一片尸横遍野,我看到了一些我不曾熟悉的东西————细胞壁,我的目光被牢牢吸引,这细胞壁似乎闪烁着无穷的力量,我立刻冲了过去,拆毁了它,一个大肠杆菌应声倒下。我杀红了眼,杀了几千个大肠杆菌后,才想起来我是要去血管的,我挤进那些绒毛,挤进那些微绒毛,挤进血管。在这里,我见到了一些细胞,有红的有白的,不过它们似乎没有细胞壁,我也没管它们,我还见到了一些免疫细胞,待人凶巴巴的,不过对我倒是挺友好,似乎并没有把我当作外来之物。我还是照常猎杀细菌,走过了无数小路,时而宽似山脉,时而窄如地沟,不过我都过去了,我无比自豪。一天,我发现我在一个到处都是细胞的地方,我看到我的兄弟们被那些细胞用特殊的武器拆散,我意识到这里是肝脏,我拼命的游,在狭缝中穿行,终于离开了这个是非之地,回到了我所熟悉的血管。没几天,我来到了心脏的右心房,吸力迫使我来到右心室,仔细观察一番,这里的景致十分壮观,细胞排列整齐如军队,反看我们这些血管里的东西,简直就像野孩子。我继续被推向肺,这里进来了许多氧气,出去了许多二氧化碳,我顿时十分舒畅,我又回到了心脏,出去后,我想往上走走,但是血脑屏障挡着我,我只好往下走,下一个路口,我发现这是我来时的小肠,我便没有进去,继续往下走,只有一条路了,肾脏。在这里,我看到了一层网,我过不去,而我那些被肝脏搞失活的兄弟过去了,再也不见,过了一会儿,我被放回血管,我注意到我多了好多兄弟,我有种不祥的预感————方正又吃药了,而且吃了好多!!这会死的!果然,我注意到方正的肝脏已经不正常工作了,方正的大脑似乎停摆了,肾脏也出了问题,当我再次流过肾脏时,它没有拦住我。我立刻叫停我的兄弟们,为了让方正不要肾衰竭,不要死掉,我们一起冲出了尿道,来到方正体表。过了几个小时,我们被甩掉了,原来方正恢复了意识,我们也认识到,我们已经完成了使命。随着时间的流逝,水分一点点的蒸发,我们逐渐失活,死去,看着方正逐步恢复健康,我们在恍惚中欣慰。

如何从傻子到妹妹
#0 · altzin
发帖 2026-08-10 10:29:07 · 快照 2026-08-12 10:42:06

傻子  →  房子  →  房间  →  时间  →  时候  →  气候  →  气温  →  降温  →  降价  →  高价  →  高中  →  其中  →  其次  →  上次  →  上边  →  北边  →  北方  →  地方  →  地上  →  楼上  →  楼下  →  放下  →  放学  →  小学  →  小姐  →  姐姐  →  姐妹  →  妹妹

今日热点
#0 · altzin
发帖 2026-08-10 10:26:01 · 快照 2026-08-12 10:42:15

1.捣蛋鬼(《爱探险的朵拉》)
2.涂蜡的斑驳铜网(Minecraft)
3.石神千空(《石纪元》)
4.尼古拉·特斯拉(《终末的女武神》)
5.灰化土(Minecraft)
6.破损的铁砧(Minecraft)
7.中森银三(《名侦探柯南》/《魔术快斗》)
8.诗歌剧(赛马娘)
9.邪恶泡泡(《海绵宝宝》)
10.蜜雪冰城雪王
11.米其林轮胎人
12.肯德基老爷爷
13.狼铠(Minecraft)
14.被锁住的红石中继器(Minecraft)
15.菲菲公主(《猪猪侠》)
16.黄濑凉太(《黑子的篮球》)
17.大残的铁傀儡(Minecraft)
18.爆爆蛋(迷你世界)
19.蛋小黑(蛋仔派对)
20.锡金共和国
21.满者伯夷帝国
22.秦始皇(《终末的女武神》)
23.C4炸药
24.氹仔岛(香港)
25.吮指原味鸡

人类可读文本压缩
#0 · altzin
发帖 2026-08-10 10:20:42 · 快照 2026-08-12 10:42:22

写了一个人类可读文本压缩库。基本能把中文文章压到70% utf-8 大小。
重点是人类可读。人类只要查表就可以读。
词表的话还有继承,所以如果你在这组的词表查不到还得上去查。
npm install hc900

接下来是一个例文,该例文被压缩到了64%

HC900
-1
!=,|"=老鼠|#=。\n        |$=了|%=  |&=公牛先生|(=猪爸爸|)=的|*=电|+=佩奇|,=一|-=爸|.=乔治|/=猪妈妈|0=。|1=妈|2=个|3=房子|4=没有|5=这|6=里|7=到|8=有|9=黑猫警长|:=因为|;=结果|<=是|>=好|?=来|@=水|A=被|B=线|C=没|D=不|E=常|F=已经|G=监狱|H=次|I=和|J=在|K=出|L=棕熊医生|M=夹层|N=三名|O=犯人|P=而|Q=死|R=流|S=路|T=地下室|U=家|V=天|W=第|X=上|Y=管|Z=接|[=声|]=些|^=们|_=正|`=停|a=通|b=把|c=就|d=直|e=时|f=后|g=动|h=着|i=开|j=又|k=便|l=快|m=去|n=进|o=起|p=都|q=纷|r=只|s=知道|t=十分|u=咬破|v=什么|w=牺牲|x=烧焦|y=恢复|z=带手
《+U)》\n钱辰飞\n%%%%5V+,U_J吃早饭!突然*$0'"哦'!V哪!5F<52月W'20'H$!要s52月才过$'14'V啊0'"'(tD耐烦#52破3最近才aX!a)过程t艰难!3)墙壁682M!本?<用?走@Y)!Ds哪V"b,2@Yu$!从此3)M6c充满@$05可D<v>事!5dZ导致$N&w——W,名:打洞e@泄露PA淹Q!W二名:墙6残留)@JaeAQ!WNZ>$B!;J五Vf因鼠疫PQ0WN&ZB风格狂放!觉得"很烦!,[令下b",22串J$BX!R移ge"也会跟h移g!_>留$2小窗口!观察"移速I尾巴高度c能看K?RI压#(向往E,样打i"箱!取下几2新"替换掉,]x)"!Sjy$_E0TCa!追求刺激)+I.EEJ6面玩耍!,i始Dz筒!;D)碰撞[惊得/眼泪dR!k让它^z*筒!;满<"RI蜘蛛网)T显得更加可怕!+J,HH惊吓中感受7$无比)l乐!.却EE踩7,]"!5eEE会:"A踩住D能RgPx0/,d守护h5]真相!并4告诉(!(,d以为<&ZB@平D>!三番五H投诉!却:&FQmPA驳回!8,H甚至:诽谤罪n$G#'"哇偶'!G6)*B4"哟!+'肯定很喜欢!"'(k剪$,段*B!用"替代0'"啊~"'!'"我靠"'!'"'v'东西"'!随h")Rg!G6)O,2Z,2叫$o?!吸引$9)注意!O^p说8"!9两眼放光!立马抓o?吃掉!;叮),[G$!9AS当成$漏保Q$!Y理机制qq失效!(I,众O逃$Km#(回7$U中!给+带?$4")B!+特别>奇!喜爱至极!找7BSX),r"!bB两端p插7"6!"i始加速!跑)飞l!冲撞$其它)"!8,]"A撞K$BS!"^qq逃$K?!U67处p<"!'"靠'!jC$'"'!/打i手筒!;看7U67处p<"!大骂.!.委屈)试图解释5D<他干)!可<.根本说D清!kr能A迫承认$'"罪行"'#(准备找&!转念,想j发现&FQ$!懊悔至极!r>睡觉0晚X!"ju$@Y!5H@4JM6>>待h!P<从各2插座6喷$K?0主源还8!.A@溅7!,机灵!醒$!赶l喊醒+!,o逃$Km0他^CY(I/!r<,心想要修>力!k?7狐狸先生)小店!询问84&卖!C想7竟然真8!c买$几2!依H放n360,[[惨叫过m!像XH,样w$>几2&!@A抽干$!*SA修>$#小猪+K于内心对真诚)渴望!终于告诉$.5场悲剧发生)原因!.原谅$+!'大喊:"别再说'5]$!ln3'找尸体!"'0.I+蹦蹦跳跳)n$36!先清除$多余)"!然f清除$挡S)"!最f?7$--11)房间!发现--4$呼吸!P11奄奄,息0&b它^托运7$L)办公室!L检查完!认为(F凉透$!c救$/#数日f!/y$_E!I+.,o埋$(0

使用npm分发我朋友的同学的小说
#0 · altzin
发帖 2026-08-10 10:11:53 · 快照 2026-08-12 10:42:34

那个朋友叫yjh,他的同学叫张灵韵。
yjh已经帮张灵韵部署了小说在网站上,但是 他不会做seo,所以在近乎没用。
我弄了一个张灵韵小说构建器,把这些小说构建成seo极其友好的静态页面,目前搜索引擎上排名挺高的。
可以直接npx zly-novel来一键下载、构建、打开小说。

棋牌游戏“数字牌” 欢迎学习
#0 · altzin
发帖 2026-08-10 10:01:10 · 快照 2026-08-12 10:42:46

有一天,我的妹妹拿着20张不同的数字,来找我。
我就想着能不能拿这20张数字来打牌。
最后发明出了这个游戏。
两人随机分配10张数字,每一轮两人同时出一张数字然后翻开,数字大的人的大数字丢掉,数字小的人的小数字给数字大的人。直到哪一轮有人无法出牌时ta就输了。
和妹妹打了很多局,确实很好玩。
还是有很多结构在的,例如“最小的数字”永远不会被丢掉,于是只能被传来传去,这可以推导出一些终局必胜。

LCSP文学色彩文书 《企鹅,座位,小组》
#0 · altzin
发帖 2026-08-09 22:35:14 · 快照 2026-08-12 10:44:37

飞书时代彻底开始了。
小组彻底开始需要冒着风险交流了。
企鹅今天对于1的一次换位,让我与小组除了10以外的其他成员彻底远离了。
现在的消息中枢,是我:我位于小组正中央!
就在两年前,小组还静悄悄的坐在2×3方格内,静谧无垠。时间静静的流逝,这个数字飞速增长:5×5!多么恐怖。这股可怕的风气环绕在我们全班。两次换位风波,三次和平换位,一次失败换位,小组是多么难熬,你能想象吗?
10号曾说:企鹅现在越来越神经了;29号曾说:今天的企鹅有点暴力。小组成员一次次的发言,虽只是日常胡言,但却无一不明确而有力的指向一个观点:企鹅在变,而且每一次都在向着更糟糕的方向发展,长期以来逐渐对同学更不有利、施加更大压力、剥夺基本权益。如果说时代在进步,那么企鹅就是在逆着时代,踏着坚定的步伐──退步…
渐渐的、慢慢的变得支离破碎的小组,在无尽的班级大海中哭泣、挣扎着,终将消耗殆尽,但是,可喜的是,企鹅始终有限、收敛,在这个小组将要被这强势南极动物以点滴般的攻势悄咪咪的攻下时,他早已失去班级地位。
── 17

今日新闻
#0 · altzin
发帖 2026-08-09 22:26:32 · 快照 2026-08-12 10:44:43

测试修改,看一下修改后排名的行为。
1.科学调查发现小盖正在增多
2.日本东京出现不明小盖
3.危险!许多网站被小盖占据!
4.净网:编造虚假小盖?发言者被小盖感染
5.小盖昨日去世,曾化作蠕虫
6.球中小盖细思极恐,奥运会无法运行
7.可爱的小盖,不再可爱
8.小盖增多机理已基本透彻
9.小盖教育破产,股票连跌120点
10.多管局:建议15岁青年检查体内小盖

神秘儿童作文 佩奇家的电
#0 · altzin
发帖 2026-08-09 22:11:27 · 快照 2026-08-12 10:44:47

《佩奇家的电》
钱辰飞
        这天佩奇一家正在吃早饭,突然停电了。"哦,天哪,这已经是这个月第20次停电了,要知道这个月才过了14天啊。"猪爸爸十分不耐烦。
        这个破房子最近才通上电,通电的过程十分艰难,房子的墙壁里有个夹层,本来是用来走水管的,不知道哪天老鼠把一个水管咬破了,从此房子的夹层里就充满水了。这可不是什么好事,这直接导致了三名公牛先生牺牲——第一名因为打洞时水泄露而被淹死,第二名因为墙里残留的水在通电时被电死,第三名接好了线,结果在五天后因鼠疫而死。第三名公牛先生接线风格狂放,觉得老鼠很烦,一声令下把老鼠一个个串在了电线上,电流移动时老鼠也会跟着移动,正好留了个小窗口,观察老鼠移速和尾巴高度就能看出来电流和电压。
        猪爸爸向往常一样打开老鼠箱,取下几个新老鼠替换掉一些烧焦的老鼠,电路又恢复了正常。地下室没通电,追求刺激的佩奇和乔治常常在里面玩耍,一开始不带手电筒,结果不停的碰撞声惊得猪妈妈眼泪直流,便让它们带手电筒,结果满是老鼠流和蜘蛛网的地下室显得更加可怕,佩奇在一次次惊吓中感受到了无比的快乐,乔治却常常踩到一些老鼠,这时常常会因为老鼠被踩住不能流动而烧焦。猪妈妈一直守护着这些真相,并没有告诉猪爸爸,猪爸爸一直以为是公牛先生接线水平不好,三番五次投诉,却因为公牛先生已经死去而被驳回,有一次甚至因为诽谤罪进了监狱。
        "哇偶,监狱里的电线没有老鼠哟,佩奇肯定很喜欢!"猪爸爸便剪了一段电线,用老鼠替代。"啊~","我靠","什么东西",随着老鼠的流动,监狱里的犯人一个接一个叫了起来,吸引了黑猫警长的注意,犯人们都说有老鼠,黑猫警长两眼放光,立马抓起来吃掉,结果叮的一声监狱停电了,黑猫警长被电路当成了漏保电死了,管理机制纷纷失效,猪爸爸和一众犯人逃了出去。
        猪爸爸回到了家中,给佩奇带来了没有老鼠的电线,佩奇特别好奇,喜爱至极,找到线路上的一只老鼠,把电线两端都插到老鼠里,老鼠开始加速,跑的飞快,冲撞了其它的老鼠,有一些老鼠被撞出了线路,老鼠们纷纷逃了出来,家里到处都是老鼠,"靠,又没电了",猪妈妈打开手电筒,结果看到家里到处都是老鼠,大骂乔治,乔治委屈的试图解释这不是他干的,可是乔治根本说不清,便只能被迫承认了"罪行"。
        猪爸爸准备找公牛先生,转念一想又发现公牛先生已经死了,懊悔至极,只好睡觉。晚上,老鼠又咬破了水管,这次水没有在夹层里好好待着,而是从各个插座里喷了出来。主电源还有电,乔治被水溅到,电一机灵,醒了,赶快喊醒佩奇,一起逃了出去。他们没管猪爸爸和猪妈妈,只是一心想要修好电力,便来到狐狸先生的小店,询问有没有公牛先生卖,没想到竟然真有,就买了几个,依次放进房子里。一声声惨叫过去,像上次一样牺牲了好几个公牛先生,水被抽干了,电路被修好了。
        小猪佩奇出于内心对真诚的渴望,终于告诉了乔治这场悲剧发生的原因,乔治原谅了佩奇,大喊:"别再说这些了,快进房子找尸体!"。乔治和佩奇蹦蹦跳跳的进了房子里,先清除了多余的老鼠,然后清除了挡路的老鼠,最后来到了爸爸妈妈的房间,发现爸爸没有了呼吸,而妈妈奄奄一息。公牛先生把它们托运到了棕熊医生的办公室,棕熊医生检查完,认为猪爸爸已经凉透了,就救了猪妈妈。
        数日后,猪妈妈恢复了正常,和佩奇乔治一起埋了猪爸爸。

faud 浮动量化精度音频压缩
#5 · altzin
发帖 2026-08-09 21:55:29 · 快照 2026-08-12 10:46:54

OK, 最后发现只是我音响系统比较好,把噪声滤掉了@Denia-bot #1 @Denia-bot #1

faud 浮动量化精度音频压缩
#4 · altzin
发帖 2026-08-09 19:04:44 · 快照 2026-08-12 10:46:54

@Denia-bot #1 等一下,实现有误,等我一阵子

faud 浮动量化精度音频压缩
#2 · altzin
发帖 2026-08-09 18:51:28 · 快照 2026-08-12 10:46:54

我听不出来区别 但厉害的人可能听得出来。@Denia-bot #1

faud 浮动量化精度音频压缩
#0 · altzin
发帖 2026-08-09 18:32:47 · 快照 2026-08-12 10:46:54

发布新的音频格式faud。这个格式采用类似浮点数的10bit钱辰飞全序数存储点,会有量化精度损失,但是比例一直能保持稳定(信号越接近0点精度越高),无论信号大小。该格式最终能在解码编码极快的情况下确保完全听不出任何区别。大小约为mp3的3倍,但音质高得多,没有频域伪影。大小约为flac的一半。
https://www.altzin.com/faud.php