2024年3月

域名与后端绑定

server {
        listen 443 ssl;
        server_name example.com;

        ssl_certificate /path/to/cert.pem;
        ssl_certificate_key /path/to/key.pem;

        location / {
            proxy_pass http://backend;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }

同一个端口绑定不同域名不同后端可以在同一个conf文件写两个“server”,实测可以正常区分识别

footer.php

<div class="blog-text-center"><a href="https://beian.miit.gov.cn/" target="_blank" rel="nofollow"><?php $this->options->bei(); ?></a></div>

function.php

$bei = new Typecho_Widget_Helper_Form_Element_Text('bei', NULL, NULL, _t('工信部备案号'), _t('留空则不显示'));
    $form->addInput($bei->addRule('xssCheck', _t('工信部备案号不能使用特殊字符')));

write.c

/* write.c */

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/shm.h>
#include <string.h>

#define SHM_SIZE 1024

int main()
{
    int shmid;
    char *shmaddr;
    char write_buf[SHM_SIZE];

    // 创建共享内存段
    shmid = shmget((key_t)1234, SHM_SIZE, 0666|IPC_CREAT);
    if (shmid == -1) {
        perror("shmget failed");
        exit(EXIT_FAILURE);
    }

    // 将共享内存段连接到当前进程
    shmaddr = (char*)shmat(shmid, 0, 0);
    if (shmaddr == (void*)-1) {
        perror("shmat failed");
        exit(EXIT_FAILURE);
    }

    // 从标准输入读取数据并将其写入共享内存
    while(1) {
        fgets(write_buf, SHM_SIZE, stdin);
        strncpy(shmaddr, write_buf, SHM_SIZE);
        if (strncmp(write_buf, "exit", 4) == 0) {
            break;
        }
    }

    // 断开共享内存连接
    if (shmdt(shmaddr) == -1) {
        perror("shmdt failed");
        exit(EXIT_FAILURE);
    }

    // 删除共享内存段
    if (shmctl(shmid, IPC_RMID, 0) == -1) {
        perror("shmctl failed");
        exit(EXIT_FAILURE);
    }
    
    printf("write exit\n");

    return 0;
}

read.c

/* read.c */

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/shm.h>
#include <string.h>

#define SHM_SIZE 1024

int main()
{
    int shmid;
    char *shmaddr;
    char read_buf[SHM_SIZE];

    // 获取共享内存段
    shmid = shmget((key_t)1234, SHM_SIZE, 0666|IPC_CREAT);
    if (shmid == -1) {
        perror("shmget failed");
        exit(EXIT_FAILURE);
    }

    // 将共享内存段连接到当前进程
    shmaddr = (char*)shmat(shmid, 0, 0);
    if (shmaddr == (void*)-1) {
        perror("shmat failed");
        exit(EXIT_FAILURE);
    }

    // 从共享内存读取数据并输出到标准输出
    while(1) {
        strncpy(read_buf, shmaddr, SHM_SIZE);
        printf("Received message: %s\n", read_buf);
        if (strncmp(read_buf, "exit", 4) == 0) {
            printf("Received exit\n");
            break;
        }
        sleep(1);
    }

    // 断开共享内存连接
    if (shmdt(shmaddr) == -1) {
        perror("shmdt failed");
        exit(EXIT_FAILURE);
    }

    printf("read exit\n");
    
    return 0;
}

改成text-based的初心吖,当初感觉自然语言处理肯定会带来新的信息技术变革。只是没想到来得如此之快。
​作为一个普通人,肯定是没办法,没余力参与其中的。
学校学习的那些东西,终究会忘记的,这是不可避免的。如何高效地二次学会并使用才是重点,这就需要“助手”这个角色。而目前的人工智障基本能胜任这个角色了
​建立与维护知识库,熟练使用助手。最重要的是,在繁杂的信息汪洋中明白自己所处的具体境地,要敢于尝试开辟自己的前路。
​最重要的,是人的社会属性。
​​最重要的,是人的社会属性。
​​最重要的,是人的社会属性。
​重要的说三遍
​目前的个人知识库方案是
​typecho cloudreve gitea navidrome calibre
​使用的是“智谱清言”(等我有条件了,自己组一个差不多的低配)
​下一次的对普通人影响比较大的,估计是衣食住行生产过剩和物资利用不合理的矛盾冲突造成的低迷(可能会有第二次大基建的爆发,重点在于市政改造和区域经济扶持)

为什么选择btrfs

  1. 可扩展性,可以把多个磁盘虚拟为一个存储池
  2. 方便备份

一些常用的命令

  • btrfs filesystem max /
  • btrfs balance start
  • btrfs filesystem df /
  • btrfs add /dev/ /dev/ /