分类 默认分类 下的文章

最近在学习《Linux C编程一站式学习》,其中,第8.3 数组应用实例:直方图的习题2中提到全排列问题。

定义一个数组,编程打印它的全排列。比如定义:

#define N 3
int a[N] = { 1, 2, 3 };

要求:

程序要具有通用性,如果改变了N和数组a的定义(比如改成4个数的数组),其它代码不需要修改就可以做4个数的全排列(共24种排列)

- 阅读剩余部分 -

  1. 删除之前安装的老驱动

     sudo apt remove --purge bcmwl-kernel-source
  2. 安装新驱动

     sudo apt install broadcom-sta-dkms
  3. 关键点
    这个新驱动安装时会提示“因为UEFI引导的原因,要设置密码”,按照要求设置密码。
    重启之后会跳出提示,选择“Enroll MOK”,输入密码即可。

1.替换自带的证书和密钥
ssh进群晖,切换到root
sudo -i
备份自带证书和密钥,代码中的volume1为套件所在的存储空间

mv /volume1/@appstore/syncthing/var/https-cert.pem /volume1/@appstore/syncthing/var/https-cert.pem.orgi
mv /volume1/@appstore/syncthing/var/https-key.pem /volume1/@appstore/syncthing/var/https-key.pem.orgi

拷入新证书和密钥。这两个文件在域名注册商哪里申请来的ssl证书包里。
file.png

cp PATH_TO_FILE/DOMAIN.csr /volume1/@appstore/syncthing/var/https-cert.pem
cp PATH_TO_FILE/DOMAIN.key /volume1/@appstore/syncthing/var/https-key.pem

设置权限

chown sc-syncthing:syncthing /volume1/@appstore/syncthing/var/https-cert.pem
chown sc-syncthing:syncthing /volume1/@appstore/syncthing/var/https-key.pem
chmod +r /volume1/@appstore/syncthing/var/https-cert.pem
chmod +r /volume1/@appstore/syncthing/var/https-key.pem

2.web页面勾选加密连接

https设置.png

3.重启syncthing套件生效

web.png

备注:
这样设置后,内网中再用“ip+端口”的方式访问时也会重定向到https页面,浏览器提示证书问题,需要手动确认接受风险。

背景

最近工作上同时推进的项目比较多,有些跟踪不过来,特别是不同的项目进展的程度也不一样,简单纸笔工具也不直观。
想起之前用过看板系统,比较适合这种情况。

选定

但试用的几款要么部署太复杂、要么功能太简单,还有些在线的数据全在缓存里,数据很容易丢。
最终选定了kanboard。
kanboard仅依赖php,单人使用的话数据库可以用sqlite,只要db目录有写入权限就行了。

kanboard banner

部署

为了避免再折腾域名、端口啥的,直接丢到typecho目录下,通过子目录访问就行了,群晖管理页面再给http组配置上data目录的写入权限。

data.png

齐活!

排错1

浏览器访问,duang,一个大错误提示,“只支持php 7.2以上”。
再跑到群晖后台,安装php7.4;webStation中给这个虚拟主机配置使用php 7.4。

php7.4.png

再重新访问,OK了

排错2

用了两天,确实不错。
又发现了子任务的故障,新建子任务没问题,但是一点击开始子任务或者完成子任务,就提示数据库错误。

Internal Error: SQL Error: SQLSTATE[HY000]: General error: 1 no such
table: main.task_has_subtasks #4858

搜索了一番,原来是老早就有的问题,貌似子任务表结构设计的有问题,issue里也给了解决方案。
把数据库文件拿到本地,用sqlite管理工具运行修复脚本,把修复好的数据库再放回去覆盖即可。
管理工具:sqlite-tools-win32-x86-3360000.zip
修复脚本保存为fix.sql

ALTER TABLE subtask_time_tracking RENAME TO subtask_time_tracking_old;
    
    CREATE TABLE subtask_time_tracking (
        "id"    INTEGER,
        "user_id"    INTEGER NOT NULL,
        "subtask_id"    INTEGER NOT NULL,
        "start"    INTEGER DEFAULT 0,
        "end"    INTEGER DEFAULT 0,
        "time_spent"    REAL DEFAULT 0,
        FOREIGN KEY("user_id") REFERENCES "users"("id") ON DELETE CASCADE,
        FOREIGN KEY("subtask_id") REFERENCES "subtasks"("id") ON DELETE CASCADE
    );
    
    INSERT INTO subtask_time_tracking SELECT * FROM subtask_time_tracking_old;

运行过程:

sqlite3.exe db.slite
    .read fix.sql

排错3

启用插件:

  • kanboard自带有插件商店,管理员可以直接安装;
  • 官方文档关于插件的设置说明不对,正确的做法是:
  1. config.php中设置PLUGINS_INSTALLER为true;
  2. 授予plugins目录访问权
`chmown www-data:www-data plugins`