duzhuo's-blog

学无止境

前两天尝试写一个给jellyfin服务器添加演员信息的程序,读issue和参考别人的代码的时候发现很多验证的步骤比较过时,故自己写一点留档参考。

swagger api文档 http://localhost:8096/api-docs/swagger

在请求头添加验证 https://gist.github.com/nielsvanvelzen/ea047d9028f676185832e51ffaf12a6f

服务端创建api密钥 http://localhost:8096/web/#/dashboard/keys

userId获取 http://localhost:8096/web/#/dashboard/users 点击你想获得userId的用户并在url的query部分查看

例如 http://192.168.2.202:8096/web/#/dashboard/users/profile?userId=99e7058d92d34f74bd369728f432a0e2

代码参考

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
import requests
import json

jellyfin_apiKey = "3287930a2ab9422eaa6e1dc4a5f23c24"
jellyfin_host = "http://192.168.2.202:8096"
jellyfin_userId = "99e7058d92d34f74bd369728f432a0e2"

jellyfin_headers = {
'accept': '*/*',
"Authorization": f'MediaBrowser Token="{jellyfin_apiKey}"',
"Content-Type": "application/json",
}

# 获取全部演员信息,返回json
response = requests.get(f'{jellyfin_host}/Persons?userId={jellyfin_userId}',headers=jellyfin_headers)
dict = response.json()
print(dict)

# 获取单个演员信息
actor_name = '波多野結衣'
response = requests.get(f'{jellyfin_host}/Persons/{actor_name}?userId={jellyfin_userId}',headers=jellyfin_headers)
dict = response.json()
print(dict)
# 修改演员Overview并提交
actor_id = dict["Id"]
# Overview支持html标签
dict["Overview"] = """1988年5月24日生まれ<br>
身長<b>163cm</b><br>
<b>B88cm</b><br>
<b>W59cm</b><br>
<b>H85cm</b><br>
ブラ <b>Eカップ</b>"""
response = requests.post(f'{jellyfin_host}/Items/{actor_id}?userId={jellyfin_userId}', headers=jellyfin_headers,json=dict)
# 成功返回204
print(response.status_code)

喜报 openssh远程代码执行漏洞CVE-2024-6387 Debian发行版已经全部修补

Screenshot_20240704_081856.png

注意: 有些使用DD重装脚本安装的Debian bookworm 没有开启 bookworm-security源,需要手动开启。

前言

Ubuntu发行版的终端广告(Bug #1950692)和snap(Mint Blog中的观点)一直是令人诟病的内容,也是我切换到Debian的原因。

但是,今天还是要注册一下Ubuntu Pro,毕竟还有一些以前安装的机器在运行着已经EOL的Ubuntu版本,需要安装一些安全补丁。

pic

操作

打开Ubuntu Pro的网站 https://ubuntu.com/pro

点击Get Ubuntu Pro now并选择Myself,点击Register登录帐号确认。

获取Token,复制下面的命令。

Screenshot_20240702_201037-1.png

这里以**Ubuntu 18.04 LTS (Bionic Beaver)**为例:

阅读全文 »

在查看Python代码中,经常会看到类似这样的代码:

1
2
3
4
5
6
# module.py
def example() -> None:
print("This is an example.")

if __name__ == '__main__':
example()

这里直接运行文件可以获得输出内容:

1
2
$ python3 module.py
This is an example.

现在我们在另一个文件中将module.py作为模块导入并运行:

1
2
3
4
# main.py
from module import example

example()
1
2
$ python3 main.py
This is an example.

我们修改module.py文件,在测试中我们经常会这么写:

1
2
3
4
5
# module.py
def example() -> None:
print("This is an example.")

example()

分别运行module.py main.py

阅读全文 »

错误提示

1
2
3
4
5
6
7
8
Traceback (most recent call last):
File "/home/duzhuo/src/scraper-test/.venv/bin/sqlacodegen", line 5, in <module>
from sqlacodegen.main import main
File "/home/duzhuo/src/scraper-test/.venv/lib/python3.11/site-packages/sqlacodegen/main.py", line 11, in <module>
from sqlacodegen.codegen import CodeGenerator
File "/home/duzhuo/src/scraper-test/.venv/lib/python3.11/site-packages/sqlacodegen/codegen.py", line 9, in <module>
from inspect import ArgSpec
ImportError: cannot import name 'ArgSpec' from 'inspect' (/usr/lib/python3.11/inspect.py)

来自GPT的错误分析:您遇到的错误消息是由于 inspect.ArgSpec 类在 Python 3.11 中被移除了。ArgSpec 类在 Python 3.5 中已被弃用,并在 Python 3.11 中被移除。

当前使用的sqlacodegen版本为2.3.0.post1。是pypi上面的默认release版本。

解决方法

编辑 .venv/lib/python3.11/site-packages/sqlacodegen/codegen.py

找到from inspect import ArgSpec替换成from inspect import FullArgSpec as ArgSpec

或者升级sqlacodegen版本到3.0.0 rc3以上。来源:https://github.com/agronholm/sqlacodegen/issues/239#issuecomment-1871370700

原文链接:https://medium.com/@koutsiyrgken/the-streaming-revolution-how-ais-real-time-language-models-are-changing-the-game-d9d0beb18ae2

翻译:GPT

在人工智能和自然语言处理领域,大型语言模型已经成为焦点。这些模型由先进的算法和海量数据集驱动,能够理解和生成类似人类的文本。然而,在大型语言模型的领域中,有一个重要的区别——流式模型与非流式模型。理解这一差异至关重要,尤其是在涉及实时应用时。

大型语言模型的崛起

大型语言模型,如GPT-3及其后继者,改变了我们与技术互动的方式。它们使得聊天机器人、虚拟助手和内容生成引擎变得更加对话化、信息化和上下文感知。但是,为了有效地利用这些模型,理解流式与非流式模型的范式非常重要。

非流式大型语言模型

首先,让我们了解非流式大型语言模型。这些模型类似于传统的文本生成器,需要在生成响应之前提供整个输入。换句话说,它们将输入作为一个整体进行处理,然后生成相应的输出。这种方法适用于实时交互不是主要关注点的任务。

例如,当你在搜索引擎中输入查询时,搜索引擎通常会使用非流式模型来处理你的查询并返回搜索结果。对于大多数用户来说,接收搜索结果的延迟可以忽略不计,因此实时处理不是首要任务。

流式大型语言模型

另一方面,流式大型语言模型旨在处理连续的、实时的或互动的输入。它们以流式方式处理数据,使其能够在输入到达时实时提供响应。这使得它们非常适合低延迟和即时互动至关重要的应用。

阅读全文 »

为什么要使用松香

松香是腐蚀性低,不会腐蚀电路元件和烙铁头,其熔点为127℃,活性可持续到315℃。

松香有很高的抗氧化性能,可以在焊接过程中去除氧化膜、防止焊接面再次氧化。

购买哪种松香

Snipaste_2024-05-31_08-09-06.png

松香的使用

空心的低温焊锡丝中通常自带松香。

盒装的松香使用时可以先将烙铁头上挂上锡,然后快速沾一下固态松香,再按到需要焊接的部分就可以轻松焊接。

也可溶解在酒精中使用(我没试过,一般直接用焊油焊膏但是清洁麻烦)。

在每次使用完烙铁后也可以放到松香中烫一下进行清洁,烙铁上面多余的锡会掉下来以达到清洁目的。

阅读全文 »

什么是GSI

以下内容来自于 AOSP文档

通用系统映像 (GSI) 是指已针对 Android 设备调整配置的系统映像。GSI 被视为“纯 Android”实现,它包含未经修改的 Android 开源项目 (AOSP) 代码,任何搭载 Android 9 或更高版本的 Android 设备都能顺利运行这种代码。

GSI 用于运行 VTS 和 CTS-on-GSI 测试。为确保运行最新版 Android 的设备正确实现供应商接口,您需要将 Android 设备的系统映像替换为 GSI,然后使用供应商测试套件 (VTS) 和兼容性测试套件 (CTS) 来测试设备。

掌玩mini的简单介绍

  • 8.4英寸全贴合屏幕 1920*1200 虽然显示效果不咋地用来读读文档够用
  • Helio G99 上古soc几百块要什么自行车
  • 8+128 要什么自行车
  • sim卡sd卡
  • 有3.5mm耳机孔 单扬声器垃圾水平
  • 5000mAh 18w(实测根本没有)
  • 做工有点差边框可能有异响 论坛反馈可能有断触情况需要自行拆机垫胶带

刷入GSI

注意!!! 进行一下操作前需要刷入官方国际版20230818固件,否则可能会无限重启

需要准备的工具的链接

spflashtools 降级刷入工具

mtk_usb_all 联发科驱动

阅读全文 »
0%