开发工具分享
  • 首页
  • 计算科学
  • 文化旅游
  • 项目和网站
    • OSSEZ 计算技术
    • USRealEstate 社区
    • 地区文化
    • CWIKI.US
    • BUG.OSSEZ.COM
    • RSS.OSSEZ.COM
CWIKIUS.CN
一个有独立思考和温度的清新站
Computer Science

Discourse 优化 PostgreSQL 状态表

当对 Discourse 更新数据库后,新的 PostgreSQL 数据库没有 statistics 表。 你可以使用下面的命令来生成 statistics 表。 cd /var/discourse ./launcher enter app su postgres psql \connect discourse VACUUM VERBOSE ANALYZE; \q exit exit 当然,你可以可以在 SSH 到服务器上直接运行下面的命令: /var/discourse/launcher run app "echo 'vacuum verbose analyze;' | su postgres -c 'psql discourse'" 建议使用单一命令行进行执行。   https://www.isharkfly.com/t/discourse-postgresql/16903

2025年02月11日 0Comments 393Browse 0Like Read more
Computer Science

Discourse 数据库重建索引

在 Discourse 数据库进行升级后的主要特性就是对 Discourse 数据库中使用的索引进行优化。 Discourse 中的索引主要使用的是post_timings 表和数据库的索引。 当对数据库升级完成后,需要针对数据库运行下面的命令来对数据库的索引进行优化和重建。 cd /var/discourse ./launcher enter app su postgres psql \connect discourse REINDEX SCHEMA CONCURRENTLY public; \q exit exit 当完成上面的命令后,可以检查下 post_timings 的大小来查看数据库重构索引后的数据库数据大小变化。   2025-02-10_22-22-151226×847 130 KB   也可以使用下面的命令来对数据库进行查询,下面的 SQL 查询将会返回你当前运行 Discourse 实例中 20 个最大的数据对象。 可以在索引重建之前和之后都运行下来比较大小。 WITH RECURSIVE pg_inherit(inhrelid, inhparent) AS (select inhrelid, inhparent FROM pg_inherits UNION SELECT child.inhrelid, parent.inhparent FROM pg_inherit child, pg_inherits parent WHERE child.inhparent = parent.inhrelid), pg_inherit_short AS (SELECT * FROM pg_inherit WHERE inhparent NOT IN (SELECT inhrelid FROM pg_inherit)) SELECT table_schema , TABLE_NAME , row_estimate , pg_size_pretty(total_bytes) AS total , pg_size_pretty(index_bytes) AS INDEX , pg_size_pretty(toast_bytes) AS toast , pg_size_pretty(table_bytes) AS TABLE FROM ( SELECT *, total_bytes-index_bytes-COALESCE(toast_bytes,0) AS table_bytes FROM ( SELECT c.oid , nspname AS table_schema , relname AS TABLE_NAME , SUM(c.reltuples) OVER (partition BY parent) AS row_estimate , SUM(pg_total_relation_size(c.oid)) OVER (partition BY parent) AS total_bytes , SUM(pg_indexes_size(c.oid)) OVER (partition BY parent) AS index_bytes , SUM(pg_total_relation_size(reltoastrelid)) OVER (partition BY parent) AS toast_bytes , parent FROM ( SELECT pg_class.oid , reltuples , relname , relnamespace , pg_class.reltoastrelid , COALESCE(inhparent, pg_class.oid) parent FROM pg_class LEFT JOIN pg_inherit_short ON inhrelid = oid WHERE relkind IN ('r', 'p') ) c LEFT JOIN pg_namespace n ON n.oid = c.relnamespace ) a WHERE oid = parent ) a ORDER BY total_bytes DESC LIMIT 20; https://www.isharkfly.com/t/discourse/16904

2025年02月11日 0Comments 334Browse 0Like Read more
Computer Science

Discourse 创建和配置用户自定义字段

用户自定义字段能够让你在用户注册的是要求用户提供更多的信息。这些用户提供的信息可以在用户名片,用户摘要页面下显示,甚至还可以通过 Data Explorer plugin 插件进行查询。 本文能够帮助你对这些字段进行配置和设置。 添加一个用户字段 进入 Admin > Community > User Fields (discourse.example.com/admin/config/user-fields). 如果你还没有创建过用户字段的话,显示下面的界面:   单击 “Add user field” 按钮来创建一个新的字段。   选择一个字段类型 选择的字段类型将会决定用户在注册的时候可以输入的内容。 选择的字段类型基于你想获得用户的什么信息,通常用下面的一些选择: Text(文本字段) 这个字段用户可以输入自己想输的内容,通常针对的是有多种回答的问题 (例如: “What company do you work for?”) 在文本输入的时候显示 HTML 确认 主要针对我们常用的 yes/no 问题,(例如, “Would you like to sign up for our newsletter?”) 显示为 HTML checkbox(选择项) 下拉选择 如果你希望提供多个可以供用户选择的话 (例如, “What is your gender?”) 显示为 HTML select input(选择输入) 针对下拉选择字段添加可选的下拉选择项目: 单击可选输入 输入一个回答后单击 “Create” 重复上面的过程 完成后的下拉选择项,看起应该和下面的图片内容相似:     设置字段名和描述 Field Name(字段名):在用户注册表单和用户属性之前进行显示 Field Description(字段描述): 显示在用户可以输入的内容之后,用于帮助用户理解这个字段的内容和意义。 字段名和字段描述在添加字段的时候是必须的,这 2 个字段不能留空。 当完成上面的设置后,下面的界面显示了用户在注册的时候看到的情况:     配置用户字段选项 字段必须 Optional(可选) - 用户针对这个可选的字段可以不输入内容 For all users(针对所有用户) - 当这个字段是针对所有用户都要求的话,所有的用户都要求在登录的时候进行选择。针对这个选项比如说 terms-of-service (ToS) 就可以进行选择 On signup(在注册的时候) - 所有新注册的用户都需要对这个字段进行处理 在当前的用户创建界面的地步,用户还有下面的一些选项可以进行选择: Editable after signup(注册后可以编辑): 当字段内容被创建后,用户还是可以进行编辑 Required at signup(注册时必填): 当用户在创建自己账号的时候,这个字段的内容必填 Show on public profile(在用户公开属性中显示): 字段中输入的内容将会在用户摘要页面可见 Show on user card(在用户名片中显示): 在用户选项卡中显示字段值 Searchable(可以搜索): 用户在字段中输入的值可以在用户目录中进行搜索 在公开属性中显示 当这个选项被启用,用户字段的值将会显示在用户的属性页面中:     在用户名片中显示 当这个选项被启用,用户字段中的值将会显示在用户名片中显示:     可被查询 当这个选项被启用,你可以基于这个字段中的值来搜索用户: 保存和编辑字段 单击"Save(保存)" 来将用户字段添加到你的用户站点中。 如想对添加后的字段进行编辑,单击 “Edit(编辑)” 列表中的编辑按钮。 如需删除字段,单击 “Delete(删除)” 按钮。     添加自定义字段到用户目录 进入用户目录 单击扳手按钮: 选择你希望显示的用户字段 单击"Save(保存)"     选择的自定义字段将会显示在用户目录表中:   https://www.isharkfly.com/t/discourse/16901

2025年02月10日 0Comments 19106Browse 0Like Read more
Computer Science

Discourse PostgreSQL 15 升级

WARNING! 如果你的数据库很大的话,你需要很多的磁盘空间才能完成升级操作(至少需要 2 倍空闲的当前数据库空间),并且在升级的时候需要小心,同时先完成备份后再升级。 Discourse 的官方已经完成了对 Discourse 容器的修改,当 Discourse 的管理员对容器进行重构的话,最新的 Discourse 版本将会自动升级数据库到 PostgreSQL 15。虽然这次升级是从 PostgreSQL 13 到 PostgreSQL 15,如果再 2020 年的时候,你的 Discourse 按照实例没有升级到 PostgreSQL 13(PostgreSQL 13 update - Announcements - Discourse Meta ),你可以跳过这个升级过程,直接升级到 PostgreSQL 15。 如果在本次升级之前,你都没有升级过 PostgreSQL 数据库,那么你可以把 Discourse 的配置文件从 templates/postgres.12.template.yml 修改为 templates/postgres.template.yml,上面的配置文件是在 app.yml 中定义的。 针对任何数据库或系统的升级,我们 强烈建议 对需要升级的实例进行备份。 多备份,多备份不是坏事。 升级 官方支持的 Discourse 安装指南 (单容器安装) 在你下一次对你的 Discourse 重构的时候,你将会在重构中看到下面的提示: ------------------------------------------------------------------------------------- UPGRADE OF POSTGRES COMPLETE Old 13 database is stored at /shared/postgres_data_old To complete the upgrade, rebuild again using: ./launcher rebuild app ------------------------------------------------------------------------------------- 当看到上面的消息,说明这次升级非常顺利,所有的数据库升级都已经完成了,你只需要重构 Discourse 安装实例即可。 我们也才完成了升级:2025年2月的 Discourse 版本重构后会升级 PostgreSQL 到15 整体的升级过程还是非常丝滑,没有什么太大的问题。 数据中心安装 如果你的 Discourse 安装是通过数据中心容器方式进行安装的,这种方式的安装是通过 Discourse 官方提供的 discourse_docker 仓库进行安装的话,你需要以安装的方式关闭 PostgreSQL 服务。 当前,我们会有后台运行的查询来对数据库每隔几分钟就会进行下查询。因此关闭 Web 容器将会有助于数据库容器的正常关闭。 ./launcher stop web_only ./launcher stop data ./launcher rebuild data ./launcher rebuild data ./launcher rebuild web_only 在对数据容器进行重构之前,你可以查看下 PostgreSQL 日志,以确定数据库容器被正确的关闭。 运行 tail -f shared/standalone/log/var-log/postgres/current 命令,如果能看到下面的输出,则说明数据库容器被正确的关闭: 2025-01-24 09:19:06.437 UTC [37] LOG: received smart shutdown request 2025-01-24 09:19:06.444 UTC [37] LOG: background worker "logical replication launcher" (PID 54) exited with exit code 1 2025-01-24 09:19:06.446 UTC [49] LOG: shutting down 2025-01-24 09:19:06.468 UTC [37] LOG: database system is shut down 进行手动更新 / 磁盘空间检查 在对这些进行操作之前,请务必备份 POSTGRES_DATA 目录 如果当前的磁盘空间有限,但你也没有办法获得更多的磁盘空间的话,可以尝试下下面的方法:following: ./launcher stop app #(or both web_only and data if that is your case) mkdir -p /var/discourse/shared/standalone/postgres_data_new docker run --rm \ --entrypoint=/bin/bash \ -v /var/discourse/shared/standalone/postgres_data:/var/lib/postgresql/13/data \ -v /var/discourse/shared/standalone/postgres_data_new:/var/lib/postgresql/15/data \ tianon/postgres-upgrade:13-to-15 \ -c "apt-get update && apt-get install -y postgresql-13-pgvector postgresql-15-pgvector && docker-upgrade" mv /var/discourse/shared/standalone/postgres_data /var/discourse/shared/standalone/postgres_data_old mv /var/discourse/shared/standalone/postgres_data_new /var/discourse/shared/standalone/postgres_data docker run --rm -v /var/discourse/shared/standalone:/shared \ local_discourse/app chown -R postgres:postgres /shared/postgres_data #(or local_discourse/data) ./launcher rebuild app #(or first data and then web_only if that is your case) 在官方的数据库升级测试情况下,至少需要有超过当前数据库使用空间 1 倍以上的空闲空间才可以。 建议是需要保留至少 2 倍以上的空闲空间。 如果你使用的不是默认的路径,你可以尝试下面的命令来替换下 docker 命令: # change…

2025年02月10日 0Comments 431Browse 0Like Read more
U.S.

NTSB 持续对 DC 撞机残骸进行回收

这几天 NTSB 都在对残骸持续进行回收。 从回收上来的 UH-60 直升机来看,撞击力度很大,所有螺旋桨的桨叶都全部折断了。 驾驶舱基本上都没有看到,只看到了后半部分。 客机 客机也进行了回收。 有美国的航空博主有猜测了 2 架飞机相撞时候的飞机姿态。 根据 NTSB 的说法,在最后相撞的时候客机有拉杆抬头的操作,这位博主根据自己的飞行经验判断是,客机飞行员有可能看到飞过来的直升飞机,然后尝试拉杆左转爬升。 但飞机在左转弯爬升的时候,左侧机翼就下降,想象下飞机转弯时候机翼的变化就能理解。 直升飞机可能是从飞机的下方飞过,然后撞向了左侧机翼,因为机翼里面有大量的燃油,直升飞机与客机机翼的碰撞会导致燃油燃烧,然后引起爆炸,这也能解释为什么碰撞后马上生成那么大的火球。 从打捞上来的残骸来看,右侧机翼和飞机的 2 个引擎大致是完整的,但没有看到左侧机翼。 这位博主对碰撞的位置的猜测我觉得还是比较合理。 当然,所有的最后结果还需要等事故报告的发布。   https://www.isharkfly.com/t/ntsb-dc/16895

2025年02月09日 0Comments 493Browse 0Like Read more
U.S.

Boston 周日一场粉雪日

几年前还经常能够看到 Warnings,好几年都没有发 Warnings 的警报了。     这场雪能下到 8 个英尺,对滑雪爱好者来说实在是太友好了。     https://www.isharkfly.com/t/boston/16893

2025年02月09日 0Comments 279Browse 0Like Read more
U.S.

中国公民因参与礼品卡诈骗认罪

根据美国司法部的文件:美国联邦检察官(英語:United States Attorney),也简称为联邦检察官,他们负责在美国联邦地区法院及美国联邦上诉法院中代表美国联邦政府。 3 名中国公民因参与礼品卡诈骗在新罕布什尔州认罪。 Naxin Wu, 26, Mengying Jiang, 34, and Mingdong Chen, 28, pleaded guilty in federal court in Concord to Conspiracy to Commit Wire Fraud. Judge Landya B. McCafferty scheduled Wu’s sentencing for April 8, 2025 and Jiang’s sentencing for April 22, 2025. Judge Joseph N. Laplante scheduled Chen’s sentencing for April 11, 2025.     根据司法部发布的内容,他们使用的手段为从超市空白礼品卡后把礼品卡的信息发出到美国境外,当他们获得相关的信息后会在美国购买高价值的电子产品,主要是 iPhone 手机,iPad 等。 参与诈骗犯罪的人都属于合法入境,持有合法身份。 美国方面认为他们参与了有组织的诈骗犯罪并且其中一人是在 JFK 机场被抓获。 在被抓获的时候发现只持有单程机票。 有关定罪的判决将会在 2025年4月进行。 美国方面近些年针对有组织的信用卡犯罪进行广泛的执法,之所以选择在新罕布什尔州进行活动是因为新罕布什尔州是免税州,通常能够获得比其他州更多的利润。 https://www.isharkfly.com/t/topic/16890

2025年02月08日 0Comments 435Browse 0Like Read more
Computer Science

Gitea 代码库中提示 repository cannot be read

错误提示的界面如下。     问题和解决 这个问题的原因在于我们有一次在对系统进行服务器迁移的时候。 我们的数据库和软件都已经正常恢复了,但是老的代码仓库因为磁盘空间的问题没有拷贝到新的服务器上。 因此只需要把老的仓库拷贝到新服务器上,让程序能够从磁盘上读取文件就可以修复这个问题。 当把代码文件夹从远程拷贝过来后直接刷新。     可以看到代码正常恢复。 https://www.isharkfly.com/t/gitea-repository-cannot-be-read/16888

2025年02月07日 0Comments 276Browse 0Like Read more
Computer Science

Linux 使用 logrotate 日志归档

系统时时刻刻都在产生日志,如果不及时清理,很快就会灌满硬盘,但如果要手工清理,又很麻烦。 这种情况下,logrotate 这个程序很好的完成这个任务。 logrotate 用来把旧的日志文件删除,并创建新的日志文件,我们把它叫做“转储”。 我们可以根据日志文件的大小,也可以根据其天数来转储,这个过程一般通过一个叫做crond的守护进程来执行,logrotate 还可以用于压缩日志文件,以及发送日志到指定的E-mail 。 logrotate 的配置文件是 /etc/logrotate.conf。 查看当前版本 在系统中使用命令来查看版本: logrotate --version   一些使用的方法,请参考下面的内容: 查看使用手册 man logrotate     nginx 日志归档 在默认情况下,操作系统已经为我们配置了 nginx 的默认日志归档。 归档的配置文件为: /etc/logrotate.d/nginx 可以直接编辑这个文件。 /var/log/nginx/*.log /var/log/nginx/src.isharkfly.com/*.log { daily missingok rotate 14 compress delaycompress notifempty create 0640 www-data adm sharedscripts prerotate if [ -d /etc/logrotate.d/httpd-prerotate ]; then \ run-parts /etc/logrotate.d/httpd-prerotate; \ fi \ endscript postrotate invoke-rc.d nginx rotate >/dev/null 2>&1 endscript }     对我们来说,我们虚拟主机的日志和 nginx 的日志在相同的目录下,只是在下面添加了一个文件夹。 所以,我们就在上面添加文件夹就行。 归档测试 配置文件完成修改后,可以对配置进行测试: 运行命令: logrotate /etc/logrotate.d/nginx --debug 服务器上输出的内容为: root@ns564012:/etc/logrotate.d# logrotate /etc/logrotate.d/nginx --debug warning: logrotate in debug mode does nothing except printing debug messages! Consider using verbose mode (-v) instead if this is not what you want. reading config file /etc/logrotate.d/nginx Reading state from file: /var/lib/logrotate/status Allocating hash table for state file, size 64 entries Creating new state Creating new state Creating new state Creating new state Creating new state Creating new state Creating new state Creating new state Creating new state Creating new state Creating new state Creating new state Creating new state Creating new state Creating new state Creating new state Creating new state Creating new state Creating new state Creating new state Creating new state Creating new state Creating new state Creating new state Handling 1 logs rotating pattern: /var/log/nginx/*.log /var/log/nginx/src.isharkfly.com/*.log after 1 days (14 rotations) empty log files are not rotated, old logs are removed considering log /var/log/nginx/access.log Now: 2025-02-06 02:38 Last rotated at 2025-02-06 00:00 log does not need rotating (log has been rotated at 2025-02-06 00:00, which is less than a day ago) considering log /var/log/nginx/error.log Now: 2025-02-06 02:38 Last rotated at 2025-02-06 00:00…

2025年02月06日 0Comments 359Browse 0Like Read more
Computer Science

Nginx SSL: error:1410D0B 错误

在 Nginx 配置 SSL 的时候 nginx 提示错误: Restarting nginx: [emerg]: SSL_CTX_set_cipher_list("HIGH:!SSLv2:!SSLv3") failed (SSL: error:1410D0B9:SSL routines:SSL_CTX_set_cipher_list:no cipher match) nginx. 问题和解决 出现上面的问题是英文 nginx 在操作系统中的 ssl_ciphers 设置为: PROFILE=SYSTEM PROFILE=SYSTEM 是针对 Redhat/Fedora 操作系统进行了修改,同时这个还需要依赖 OpenSSL。 但这个配置没有在 Apache 或 OpenSSL 的官方文档中找到相关的配置。 所以如果 Nginx 在 Ubuntu 配置这个属性的话就会出现上面的错误。 根据官方的文档,可以配置为: ssl_ciphers AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;   因此,需要针对 nginx 修改上面的配置。 https://www.isharkfly.com/t/nginx-ssl-error-1410d0b/16882

2025年02月06日 0Comments 522Browse 0Like Read more
123
Archives
  • May 2026
  • April 2026
  • March 2026
  • February 2026
  • January 2026
  • December 2025
  • November 2025
  • October 2025
  • September 2025
  • August 2025
  • July 2025
  • June 2025
  • May 2025
  • April 2025
  • March 2025
  • February 2025
  • January 2025
  • December 2024
  • November 2024
  • October 2024
  • September 2024
  • August 2024
  • July 2024
  • June 2024
  • May 2024
  • April 2024
  • March 2024
  • February 2024
  • January 2024
  • December 2023
  • November 2023
  • October 2023
  • September 2023
  • August 2023
  • July 2023
  • June 2023
  • May 2023
  • April 2023
  • December 2022
  • November 2022
  • October 2022
  • September 2022
  • August 2022
  • May 2022
  • April 2022
  • March 2022
  • February 2022
  • January 2022
  • December 2021
  • November 2021
  • October 2021
  • September 2021
  • August 2021
  • July 2021
  • June 2021
  • May 2021
  • April 2021
  • March 2021
  • February 2021
  • January 2021
  • December 2020
  • November 2020
  • October 2020
  • September 2020
  • August 2020
  • July 2020
  • June 2020
  • May 2020
  • April 2020
  • March 2020
  • February 2020
  • January 2020
  • December 2019
  • November 2019
  • October 2019
  • September 2019
  • August 2019
  • July 2019
  • June 2019
  • May 2019
  • April 2019
  • March 2019
  • February 2019
  • January 2019
  • December 2018
  • November 2018
  • October 2018
  • September 2018
  • August 2018
  • July 2018
  • June 2018
  • May 2018
  • April 2018
  • March 2018
Categories
  • Computer Science (2,364)
    • Confluence (663)
    • Gradle (12)
  • U.S. (495)
  • 文化旅游 (146)

COPYRIGHT © 2020 CWIKIUS. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

湘ICP备2020018253号-1