moviepilot

站点

  • 必须配置一个认证站点

配置认证站点

以 HDFans 为例。

image-20240306194634129

需要设置三个环境变量。

1
2
3
AUTH_SITE=hdfans
HDFANS_UID=...
HDFANS_PASSKEY=...

获取 UID

UID 是数字的用户 ID,点击用户名,跳转到用户信息页面,有 UID 一行。

image-20240306194856879

获取 PASSKEY

image-20240306194948521

一般在站点的设置页面的设置首页,这里的 密钥 就是 PASSKEY。

媒体服务

获取 Plex 的 API 密钥

找到一个媒体,点击这里的更多。

image-20240307102003310

再点击获取信息。

image-20240307102038095

image-20240307102122293

再点击 查看 XML。

image-20240307102705931

在最后有一个 X-Plex-Token,把等号后面的字符串填到 API 密钥那里。

image-20240307102844578

注意

  • MoviePilot 使用三方工具下载内容(比如 Transmission),并通过工具的 API 调用,需要注意的是,下载路径是 MoviePilot 制定的下载路径,如果 Transmission 在另外的容器里面,要确保下载路径在 MoviePilot 和 下载工具的映射是一致的

营销的魅力

视频评价。

老人点名要 1500 左右的华为手机,看着被宰真的很痛心。

对于视频,根据现行的广告法,需要在视频明显的位置,标注广告字样。种种原因,可能不会因为犯罪受到惩罚,那就摸摸良心。

再次感慨下,营销的魅力。

专家批评得对,孔乙己脱个长衫怎么了,有的人连内裤都脱了。·

cmake troubleshoot

Cmake 工程测试不通过

错误信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
Performing C SOURCE FILE Test CMAKE_HAVE_LIBC_PTHREAD failed with the following output:
Change Dir: /tmp/tmp.yyGw1J1RRP/cmake-build-release-devsdksg/CMakeFiles/CMakeScratch/TryCompile-ZS4h4J

Run Build Command(s):/usr/bin/gmake -f Makefile cmTC_48078/fast && /usr/bin/gmake -f CMakeFiles/cmTC_48078.dir/build.make CMakeFiles/cmTC_48078.dir/build
gmake[1]: Entering directory `/tmp/tmp.yyGw1J1RRP/cmake-build-release-devsdksg/CMakeFiles/CMakeScratch/TryCompile-ZS4h4J'
Building C object CMakeFiles/cmTC_48078.dir/src.c.o
/opt/scylladb/bin/gcc -DCMAKE_HAVE_LIBC_PTHREAD -fdiagnostics-color=always -o CMakeFiles/cmTC_48078.dir/src.c.o -c /tmp/tmp.yyGw1J1RRP/cmake-build-release-devsdksg/CMakeFiles/CMakeScratch/TryCompile-ZS4h4J/src.c
Linking C executable cmTC_48078
/data/zhenkai.sun/app/cmake-3.25.1-linux-x86_64/bin/cmake -E cmake_link_script CMakeFiles/cmTC_48078.dir/link.txt --verbose=1
/opt/scylladb/bin/gcc CMakeFiles/cmTC_48078.dir/src.c.o -o cmTC_48078
CMakeFiles/cmTC_48078.dir/src.c.o: In function `main':
src.c:(.text+0x2d): undefined reference to `pthread_create'
src.c:(.text+0x39): undefined reference to `pthread_detach'
src.c:(.text+0x45): undefined reference to `pthread_cancel'
src.c:(.text+0x56): undefined reference to `pthread_join'
collect2: error: ld returned 1 exit status
gmake[1]: *** [cmTC_48078] Error 1
gmake[1]: Leaving directory `/tmp/tmp.yyGw1J1RRP/cmake-build-release-devsdksg/CMakeFiles/CMakeScratch/TryCompile-ZS4h4J'
gmake: *** [cmTC_48078/fast] Error 2


Source file was:
#include <pthread.h>

static void* test_func(void* data)
{
return data;
}

int main(void)
{
pthread_t thread;
pthread_create(&thread, NULL, test_func, NULL);
pthread_detach(thread);
pthread_cancel(thread);
pthread_join(thread, NULL);
pthread_atfork(NULL, NULL, NULL);
pthread_exit(NULL);

return 0;
}

Performing C++ SOURCE FILE Test StdAtomic_EXPLICIT_LINK failed with the following output:
Change Dir: /tmp/tmp.yyGw1J1RRP/cmake-build-release-devsdksg/CMakeFiles/CMakeScratch/TryCompile-pPTD7R

Run Build Command(s):/usr/bin/gmake -f Makefile cmTC_f3ae9/fast && /usr/bin/gmake -f CMakeFiles/cmTC_f3ae9.dir/build.make CMakeFiles/cmTC_f3ae9.dir/build
gmake[1]: Entering directory `/tmp/tmp.yyGw1J1RRP/cmake-build-release-devsdksg/CMakeFiles/CMakeScratch/TryCompile-pPTD7R'
Building CXX object CMakeFiles/cmTC_f3ae9.dir/src.cxx.o
/opt/scylladb/bin/g++ -DStdAtomic_EXPLICIT_LINK -w -g -pthread -fno-omit-frame-pointer -Werror=return-type -fsanitize=address -fdiagnostics-color=always -std=gnu++1z -o CMakeFiles/cmTC_f3ae9.dir/src.cxx.o -c /tmp/tmp.yyGw1J1RRP/cmake-build-release-devsdksg/CMakeFiles/CMakeScratch/TryCompile-pPTD7R/src.cxx
Linking CXX executable cmTC_f3ae9
/data/zhenkai.sun/app/cmake-3.25.1-linux-x86_64/bin/cmake -E cmake_link_script CMakeFiles/cmTC_f3ae9.dir/link.txt --verbose=1
/opt/scylladb/bin/g++ -w -g -pthread -fno-omit-frame-pointer -Werror=return-type -fsanitize=address CMakeFiles/cmTC_f3ae9.dir/src.cxx.o -o cmTC_f3ae9 -latomic
/usr/bin/ld: cannot find /opt/scylladb/lib64/libatomic.so.1.2.0
collect2: error: ld returned 1 exit status
gmake[1]: *** [cmTC_f3ae9] Error 1
gmake[1]: Leaving directory `/tmp/tmp.yyGw1J1RRP/cmake-build-release-devsdksg/CMakeFiles/CMakeScratch/TryCompile-pPTD7R'
gmake: *** [cmTC_f3ae9/fast] Error 2


Source file was:
int main() {}

Performing C++ SOURCE FILE Test StdFilesystem_NO_EXPLICIT_LINK failed with the following output:
Change Dir: /tmp/tmp.yyGw1J1RRP/cmake-build-release-devsdksg/CMakeFiles/CMakeScratch/TryCompile-DLboHE

Run Build Command(s):/usr/bin/gmake -f Makefile cmTC_29ea1/fast && /usr/bin/gmake -f CMakeFiles/cmTC_29ea1.dir/build.make CMakeFiles/cmTC_29ea1.dir/build
gmake[1]: Entering directory `/tmp/tmp.yyGw1J1RRP/cmake-build-release-devsdksg/CMakeFiles/CMakeScratch/TryCompile-DLboHE'
Building CXX object CMakeFiles/cmTC_29ea1.dir/src.cxx.o
/opt/scylladb/bin/g++ -DStdFilesystem_NO_EXPLICIT_LINK -w -g -pthread -fno-omit-frame-pointer -Werror=return-type -std=c++17 -fdiagnostics-color=always -std=gnu++1z -o CMakeFiles/cmTC_29ea1.dir/src.cxx.o -c /tmp/tmp.yyGw1J1RRP/cmake-build-release-devsdksg/CMakeFiles/CMakeScratch/TryCompile-DLboHE/src.cxx
Linking CXX executable cmTC_29ea1
/data/zhenkai.sun/app/cmake-3.25.1-linux-x86_64/bin/cmake -E cmake_link_script CMakeFiles/cmTC_29ea1.dir/link.txt --verbose=1
/opt/scylladb/bin/g++ -w -g -pthread -fno-omit-frame-pointer -Werror=return-type -std=c++17 CMakeFiles/cmTC_29ea1.dir/src.cxx.o -o cmTC_29ea1
CMakeFiles/cmTC_29ea1.dir/src.cxx.o: In function `std::experimental::filesystem::v1::path::path<char [6], std::experimental::filesystem::v1::path>(char const (&) [6])':
/opt/scylladb/include/c++/7/experimental/bits/fs_path.h:198: undefined reference to `std::experimental::filesystem::v1::path::_M_split_cmpts()'
collect2: error: ld returned 1 exit status
gmake[1]: *** [cmTC_29ea1] Error 1
gmake[1]: Leaving directory `/tmp/tmp.yyGw1J1RRP/cmake-build-release-devsdksg/CMakeFiles/CMakeScratch/TryCompile-DLboHE'
gmake: *** [cmTC_29ea1/fast] Error 2

解决方案

ninja-build 版本低

升级 ninja-build 版本,从 1.7.2 升级到 1.11.1 后问题解决。最新版,从这里下载。

使用其他 GCC 库

比如,使用 /opt/scylladb/bin 下的 gcc,需要同步设置 LD_LIBRARY_PATH 和 LIBRARY_PATH。

1
2
3
PATH=/opt/scylladb/bin:$PATH
LD_LIBRARY_PATH=/opt/scylladb/lib64:/opt/scylladb/lib:$LD_LIBRARY_PATH
LIBRARY_PATH=/opt/scylladb/lib64:/opt/scylladb/lib:$LIBRARY_PATH

以免出现以下错误。

1
libstdc++.so.6: version `GLIBCXX_3.4.20' not found

这是因为使用的 g++ 版本和最终链接的 libstdc++ 库不一致导致的。

CMake Error: install(EXPORT “tgt” …) includes target “tgt” which requires target “dep_internal” that is not in any export set

1
2
3
4
add_library(tgt ...)
target_link_libraries(tgt PRIVATE dep_internal)
install(TARGETS tgt EXPORT tgt ...)
install(EXPORT tgt ...)

报错

1
CMake Error: install(EXPORT "tgt" ...) includes target "tgt" which requires target "dep_internal" that is not in any export set

原因

dep_internal 是工程内依赖,且不想安装和 export。在安装和导出 tgt 时,由于依赖项目内定义的库 dep_internal,且是 PRIVATE link,又没有 export,因此出现冲突。

解决

使用 $<BUILD_INTERFACE:{target}>,仅在编译时引用 target。

1
target_link_libraries(tgt PRIVATE $<BUILD_INTERFACE:dep_internal>)

如果被其他库依赖。

1
2
3
4
add_library(tgt ...)
target_link_libraries(tgt PRIVATE dep_internal)
install(TARGETS tgt dep_internal EXPORT tgt ...)
install(EXPORT tgt ...)

Some (but not all) targets in this export set were already defined.

1
2
3
4
5
6
7
8
CMake Error at cmake-build-debug/vcpkg_installed/x64-linux/share/tcmalloc_minimal_static/tcmalloc_minimal_staticConfig.cmake:42 (message):
Some (but not all) targets in this export set were already defined.

Targets Defined: gperftools::spinlock, gperftools::sysinfo,
gperftools::logging

Targets not yet defined: gperftools::tcmalloc_minimal_static,
gperftools::tcmalloc_minimal_internal

一个项目内有多个目标 TargetA 、TargetB。两个目标共同依赖 InternalLibA。

1
2
3
4
5
install(TARGETS TargetA InternalLibA EXPORT TargetA ...)
install(EXPORT TargetA ... NAMESPACE Project)

install(TARGETS TargetB InternalLibA EXPORT TargetB ...)
install(EXPORT TargetB ... NAMESPACE Project)

如上述导入后,如果在其他项目引入。

1
2
3
4
5
find_package(TargetA CONFIG REQUIRED)
target_link_libraries(main PRIVATE Project::TargetA)

find_package(TargetB CONFIG REQUIRED)
target_link_libraries(main PRIVATE Project::TargetB)

则会报如下的错。

1
2
3
4
5
Some (but not all) targets in this export set were already defined.

Targets Defined: Project::InternalLibA

Targets not yet defined: Project::TargetB

原因是在 find_package TargetB 时,出现重复的目标,Project::InternalLibA,在 find_package TargetA 时第一次定义。出现命名冲突。

解决办法,修改 install EXPORT 的 NAMESPACE,避免命名冲突。

1
2
3
4
5
install(TARGETS TargetA InternalLibA EXPORT TargetA ...)
install(EXPORT TargetA ... NAMESPACE TargetA)

install(TARGETS TargetB InternalLibA EXPORT TargetB ...)
install(EXPORT TargetB ... NAMESPACE TargetA)

使用。

1
2
3
4
5
find_package(TargetA CONFIG REQUIRED)
target_link_libraries(main PRIVATE TargetA::TargetA)

find_package(TargetB CONFIG REQUIRED)
target_link_libraries(main PRIVATE TargetB::TargetB)

possibly undefined macro: AC_PROG_LIBTOOL

1
2
3
configure.ac:94: error: possibly undefined macro: AC_PROG_LIBTOOL
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
1
2
# 安装 libtool
$ yum install libtool

vs code 使用

快捷键

多行编辑

1
2
3
4
5
6
# 选取多行
Option+Shift+{鼠标移动多行}
# 选中文本
选取多行 + Shift + {移动指针}
# 选中文本, 按词移动
选取多行 + Shift + Option + {方向键}

其他

搜索框输入换行

Ctrl + Enter 输入换行

贫民窟的百万富翁

《贫民窟的百万富翁》是在大学期间看的,当时对印度的社会环境没有什么了解,基本就当做一个励志片来看了。在了解到更多印度的信息之后,看完了我在印度最大的贫民窟生活了三天,一路经历相当震撼 这个视频,想到两句话。

融进去,走出来,匆匆打个照面。保持开放的心态,看到更大的世界。

不管是腐败也好,其他问题也好,总归是固有的制度让一部分人成为既得利益者,让某些人坐在了不适合的位置上,但还是要看到普通人的努力。三哥确实带来了不少笑料,但是普通人的的乐观、努力也值得我去学习。

十年也好,五十年也好,总会出现一个人、一群人,带领印度的普通人,打破种姓制度的枷锁,打通普通人上升的通道,我也期望这一天能早点到来。

彩礼

视频链接

本来打算看完这个视频睡个午觉的,看完之后没睡意了,还是先说几句吧。李老师的结论,”要解决过多彩礼的问题,还是要回归我们的性别比走向平衡“。

某些现象(问题)的存在是有原因的,但并非所有都是合理的。对于高价彩礼,对不算富裕的男方家庭带来的伤害是非常大的。就拿刚结婚的近亲来说(山东菏泽),彩礼是定亲 20w,结婚 20w,在老家盖的房子 30w+,买车 16w,还有三金、婚礼、送礼、装修、家电等费用。女方还要求在县城买房,男方至少要交首付,我们县城便宜的新房要 5000+ 一平,六七千的比比皆是,首付至少 20w+。现在男方能借的亲戚都借了,还给银行贷了 30w。县城的房子没有买,但是跟女方说定了,现在手头紧,未来两年一定买(埋雷)。

总共要花多少钱,我不敢算。对于一个农民,外出打工赚点钱,后面的话我不敢说。

高价彩礼,对于男方家庭带来的伤害,对于实现和谐的社会主义,不管是从法理,还是情理,都难以接受。

再回到李老师的视频,说到最后要解决男女性别平衡,我有下面几个想法。

  1. 男女平衡是高价彩礼的诱因之一,而且是需要很长时间来解决的
  2. 高价彩礼,是不合理的,于情于理都不应该存在
  3. 当下的问题,需要当下解决,而不是等个几十年,男女性别平衡了

所以,李老师的视频,好像说了些什么,又好像没说什么。我们需要解决当下的问题,而不是相信后人的智慧。

对于高价彩礼,有以下事实。

  1. 100:106.9 这个比例,刨除其他因素,不管怎么匹配,总有 6.9 个男性无法匹配到
  2. 高价彩礼强行干扰了这个匹配过程,但没有理由说明匹配更合理了

基于此,我们改变不了 6.9 个男性无法结婚的事实,但是我们可以引导整个匹配过程更合理,比如。

  1. 解放思想,高价彩礼会对男方家庭带来很大的伤害,给两个家庭及两个新人的关系埋下隐患
  2. 鼓励婚姻自由,找到合适的伴侣,是今后大半个人生幸福的必要条件
  3. 把视野放到更大的范围,通过(考虑)学习、务工等途径,把视野扩充到江西(山西)、山东之外,甚至中国之外

等等,这样视频才是有意义的。

至此。

推荐系统 - 模型

推荐系统中的模型

双塔模型

双塔模型(Dual Tower Model)是一种在自然语言处理中用于生成式任务的模型架构。该模型的核心思想是将输入序列分别传递给两个独立的编码器,称为「内容塔」(Content Tower)和「控制塔」(Control Tower),以实现更好的生成效果。

具体来说,双塔模型包含以下几个关键组件:

  1. 内容塔(Content Tower):内容塔负责捕捉输入序列的语义信息和表示。它通常基于预训练的语言模型(如BERT、GPT等)或其他编码器来对输入进行编码,并输出一个表示输入内容的向量序列。
  2. 控制塔(Control Tower):控制塔负责生成输出序列,并指导生成过程。它可以从内容塔的输出中获取输入的语义信息,并根据任务要求生成合适的输出。控制塔可以采用不同的机制,如循环神经网络(RNN)、注意力机制(Attention)等,来实现生成过程。
  3. 连接层(Connector Layer):连接层用于将内容塔的输出和控制塔的输入进行连接,以建立二者之间的联系。可以通过简单的拼接、加权相加等方式实现连接。
  4. 解码器(Decoder):解码器是控制塔的核心组件,用于根据控制塔的输入和先前生成的内容来生成下一个输出。解码器可以基于不同的方法进行设计和训练,以满足特定任务的要求。

使用双塔模型的主要优势在于将表示学习和生成过程分离,充分利用内容塔和控制塔各自的优势。内容塔能够捕捉输入序列的语义信息,而控制塔能够利用这些信息进行更加准确和鲁棒的生成。通过有效地协同工作,双塔模型可以取得较好的生成结果。

需要指出的是,双塔模型的具体实现方式可能因任务需求和研究者的选择而有所差异。该模型的结构和组件可以根据具体情况进行调整和扩展,以适应不同的生成式任务。

适用阶段

  1. 召回
  2. 排序(通常是粗排)

成长公式

今天想到一个成长公式。

成长公式

成长量 = 学习效率 * 学习时间 * 学习有效率

成长量

一个抽象的概念,难以度量,标识我们在一个或多个领域获得的成长水平。

成长效率

简单来说,就是单位时间获得的成长量。这个和人、状态、环境等因素有关。不同的人,有不同的学习效率。同一个人,在不同的状态、环境下,也展现出不同学习效率。

学习时间

这个就比较好理解了,就是我们持续投入到学习当中的时间。

学习有效率

这个也比较抽象,很难度量,标识我们单位时间学习的有效知识的比率。

学习有效率 = 单位时间有效成长量 / 学习效率

这个其实比较重要,主要是因为在以往的学习过程中,很少去关注这一点。以下是影响学习有效率的场景。

  • 重复学习相同或相似的知识
  • 局限在某一部分知识领域内,不进行主动扩展
  • 学了用不到,或没有价值的知识

意义

这个公式即简单,又不太严谨,但还是有其意义在的。我也常常感慨,其实成长、或学习一门技术、或完成一项任务,并不复杂(确实有很复杂的事情),只要掌握方法,按部就班,其实很简单。

成长公式亦如此,看似简单,却可以从中找到一些常常被忽视的点,如下。

  • 学习的时候没有紧绷感(过于放松),导致效率很低
  • 学习过程经常被打断,比如环境原因、对拿出一段持续的学习时间不够重视
  • 如果不太紧急,不要在状态差的时候学习,不如放松一下
  • 重复学习、随本逐末、不扩展知识范围等

新的一年

写在 2024 年的第一个工作日。

回顾 2023,对自己并不满意,如果要打分,只能给 60。一是,一部分时间被情绪和内耗浪费;二是,不少的精力没用在刀刃上。

展望 2024,期望自己能有所改变,在能力和产出上面有不错的收获。