当我的 Android 设备通知我新消息、电话、WhatsApp 等所有内容而我又没有看移动设备屏幕时,我需要知道。我一天中会去手动检查很多次这种情况。当我看着我的电脑屏幕时,我可能会错过很多通知。办公室的政策是将移动设备静音。我可能在开会等等。任何原因都可能导致我忙于其他事情而忘记查看通知。然而,如果我在电脑屏幕上有东西可以与手机通信并显示我有新通知,这可能是非常好的解决方案,例如,通知区域中的图标可能会变成红色/绿色或其他颜色。我的移动设备使用数据与互联网通信,而我们办公室没有 wifi。LAN 完全在另一个网络中。有没有可能这样?我正在使用 Ubuntu mate 24.04。
主页
在 Kubuntu 24.04 上,快捷键Ctrl+Space与更改键盘布局有关,但我需要在我使用的所有 IDE(Intellij、Visual Studio)中使用该快捷键。
我怎样才能让系统不再使用Ctrl+ Space?
我最近将我的桌面升级到了 Ubuntu 24.04.1 LTS。我的打印机无法工作,必须从数据库“HPEnvy 4520”安装驱动程序。打印机正常
但是文档扫描仪不工作:可以看到扫描仪 HP ENVY4524,但无法扫描进纸器为空。
此打印机上没有进纸器
在一个 snap 中发布多个应用程序时,snapcraft 会在应用程序名称前加上“snapname”作为前缀。因此最终用户看到的可执行文件名称是“snapname.appname”
我的 snap 是 7 个 cli 实用程序的集合。所有实用程序都有一个通用的前缀,比如说“snapname”。
但他们的名字是:
snapname-应用程序名称
使用减号/破折号而不是句点分隔符,这在 Linux 命令行实用程序中更为常见。
我的实用程序也将通过 .deb 和 .rpm 等发布,所以我希望命名一致,否则文档会令人困惑。
有没有什么办法可以绕过这个明显固定的带句点的前缀方案?
我想使用 Linux 中的脚本来启动多个iperf3
服务器实例,如下所示:
gnome-terminal -e --bash -c "iperf3 -s -B 10.10.1.1 -p 5021"
gnome-terminal -e --bash -c "iperf3 -s -B 10.10.2.1 -p 5022"
gnome-terminal -e --bash -c "iperf3 -s -B 10.10.3.1 -p 5023"
gnome-terminal -e --bash -c "iperf3 -s -B 10.10.4.1 -p 5024"
gnome-terminal -e --bash -c "iperf3 -s -B 10.10.5.1 -p 5025"
gnome-terminal -e --bash -c "iperf3 -s -B 10.10.6.1 -p 5026"
gnome-terminal -e --bash -c "iperf3 -s -B 10.10.7.1 -p 5027"
gnome-terminal -e --bash -c "iperf3 -s -B 10.10.8.1 -p 5028"
它不工作,问题是什么?
我试图在软盘上创建一个分区,让它像/dev/sdb1
使用 fdisk 一样显示出来(是的,我使用过 mkfs 和类似的工具),当我使用 fdisk 然后使用设备名称时,它只是显示“不支持操作”!
我尝试过不同的软盘。
有人能解释一下为什么我无法以管理员身份访问我的磁盘分区并在资源管理器中查看磁盘的已用和可用大小吗?也许我真的不明白 NTFS 系统权限是如何工作的。
我的情况如下:
- 我有 Windows Server 2022,并且附加了数据磁盘。
- 数据盘有NTFS分区,盘符为F:
- 我是一名域用户,作为本地“管理员”组的成员添加到服务器。
- 我正在域用户环境下使用 RDP 连接到服务器。
- 当我打开 explorer.exe 时,我看到了磁盘分区,但看不到可用和已用大小。
- 当我尝试使用资源管理器访问磁盘时,出现错误:“F:\ 无法访问。访问被拒绝”。
- 当我尝试使用以管理员身份运行的资源管理器访问磁盘时,出现错误:“F:\ 无法访问。访问被拒绝”
- 磁盘分区的所有者是“SYSTEM”
- 磁盘分区的权限包含本地组“管理员”
当我在磁盘分区上添加具有以下权限的本地用户组“用户”时:“读取和执行、列出文件夹内容、读取”,一切正常。我可以看到可用和已用大小,我可以访问文件夹和文件。
为什么?为什么当我实际上处于本地管理员组中时,没有“用户”组就无法执行这些操作?
我正在使用 tshark 动态解码 SMPP 协议,例如:
tshark -i any -V -Y smpp
这将实时显示每一个 SMPP 数据包,例如
Short Message Peer to Peer, Command: Submit_sm, Seq: 8475778, Len: 215
Length: 215
Operation: Submit_sm (0x00000004)
Sequence #: 8475778
Service type: (Default)
Type of number (originator): Alphanumeric (0x05)
Numbering plan indicator (originator): Unknown (0x00)
Originator address: \123\110\123\123\123aaa\123
Type of number (recipient): Unknown (0x00)
Numbering plan indicator (recipient): ISDN (E163/E164) (0x01)
Recipient address: 44123456789
.... ..00 = Messaging mode: Default SMSC mode (0x00)
..00 00.. = Message type: Default message type (0x00)
00.. .... = GSM features: No specific features selected (0x00)
Protocol id.: 0x43
有没有办法 grep 特定字段并仅输出这些字段?我尝试过:
tshark -i any -V -Y smpp | grep 'Operation|Type of number|Numbering plan indicator|Recipient address'
但它不起作用。我也尝试过:
tshark -i any -V -Y smpp -T fields -e 'smpp.dest_addr_ton' -e 'smpp.destination_addr'
但这只会输出值,而我想要输出类似的内容;
Type of number (recipient): Unknown (0x00)
Numbering plan indicator (recipient): ISDN (E163/E164) (0x01)
Recipient address: 44123456789
有人能给出建议吗?谢谢,卢卡斯
在撰写本文时(2024 年 11 月),是否仍有任何当前维护的 64 位 Linux 发行版可以在 x86_64-v1 微架构级硬件上成功安装和运行?
或者所有当前维护的 64 位发行版是否都需要至少支持 x86_64-v2 指令集的 CPU?
我有一个摄像头捕捉程序和视频流程序一起作为 运行rpicam-vid ... | go2rtc
。我的问题是,go2rtc
只有当有人打开视频流时,它才会从管道读取数据,但rpicam-vid
即使视频流未启动,我也需要连续运行。当读取器未提取数据时,有没有办法简单地丢弃数据?
我正在尝试生成一个可以附加到 visudo 的文件。任务本身并不太重要,因为我只是想更深入地了解 Bash。我当前的脚本如下所示:
#!/bin/bash
path=/bin/ansible*
declare -a commands=()
for command in $path; do
commands+=($command)
done
echo ${commands[@]} > ~/commands.txt
输出:
/bin/ansible /bin/ansible-config /bin/ansible-connection /bin/ansible-console...
我希望脚本的输出如下所示:
/bin/ansible, /bin/ansible-config, /bin/ansible-connection, /bin/ansible-console...
我认为我把这个任务复杂化了。我见过有人使用 awk 和 sed,但就我所见,awk 似乎更适合处理数据列,而 sed 则非常令人困惑。任何建议都将不胜感激。
在他们的网站上,您被要求通过脚本安装他们的程序,而不是像大多数常规应用程序那样通过软件包存储库下载。
LV_BRANCH='release-1.4/neovim-0.9' bash <(curl -s https://raw.githubusercontent.com/LunarVim/LunarVim/release-1.4/neovim-0.9/utils/installer/install.sh)
安装过程,但我想创建一个脚本来回答这些问题。如何编写一个命令来自动处理这些问题?
我遇到一个问题,无法更改之前没有给我们带来任何问题的 CDC 表。
我们在 cdc 表上运行 alter 语句来向表中添加一列,现在我们开始面临与此相关的错误。
我们尝试运行的查询是
ALTER TABLE cdc.dbo_TABLE_NAME_CT
ADD processed BIT DEFAULT 0 NULL
现在返回以下错误
消息 2104,级别 16,状态 13,行 34
无法更改错误:8277,严重性:-1,状态:0。(参数:)。由于格式化过程中出现错误,因此以简洁模式打印错误。跳过跟踪、ETW、通知等。'dbo_TABLE_NAME',因为您没有权限。
我正在使用 SQL Server 2016(v13.0.7045.2)。
在 13.0.7029 SQL 服务器上,我们能够运行 alter 命令,因此感觉好像某些内容已作为补丁的一部分发生更改。
该问题与此处的问题类似https://stackoverflow.com/questions/79075830/error-while-trying-to-alter-cdc-table-on-sql-server
这种情况已经突然在多个环境中发生,以前运行正常,我不确定是否作为新补丁的一部分发生了某些变化导致了这种情况。
我知道不建议更改 cdc 表,但这之前没有给我们带来任何问题。
我想知道是否有人对此有任何想法,因为我有点不确定该怎么办。
我不确定这是预期的行为还是错误——Microsoft 服务包中没有提到他们已采取某些措施来禁用向表中添加列的功能。
更重要的是,如果事情确实是这样发展的话,我们需要做出相应的调整,但现在我不知道为什么这个功能突然停止工作了。
在 PostgreSQL 中为 VARCHAR 列选择特定长度是否有任何优化优势(存储/查询速度/...)?2^n-1
类似的东西?
假设我有以下两个数据库
USE [master]
CREATE DATABASE Jack
GO
CREATE DATABASE Jill
GO
USE Jack
GO
CREATE TABLE JacksTable
(
Id INT
)
INSERT INTO JacksTable VALUES (1)
如果我在 Jack 数据库上下文中创建以下临时存储过程:
USE Jack
GO
CREATE PROC #Temp
AS
SELECT *
FROM JacksTable
GO
然后在Jack数据库中执行:
USE Jack
GO
EXEC #Temp
我得到了结果1
如果我在 Jill 数据库上下文中运行:
USE Jill
GO
EXEC #Temp
我明白了1
现在,如果我放弃这个程序
DROP PROC #Temp
并在 Jill 数据库上下文中再次创建该过程:
USE Jill
GO
CREATE PROC #Temp
AS
SELECT *
FROM JacksTable
GO
然后运行它
USE Jill
GO
EXEC #Temp
我收到错误
Msg 208, Level 16, State 1, Procedure #Temp, Line 4 [Batch Start Line 74]
Invalid object name 'JacksTable'.
如果我尝试从 Jack 数据库执行它:
USE Jack
GO
EXEC #Temp
我明白了
Msg 208, Level 16, State 1, Procedure #Temp, Line 4 [Batch Start Line 74]
Invalid object name 'JacksTable'.
如果我放弃这个程序
DROP PROC #Temp
再次在 Jill 数据库上下文中重新创建
USE Jill
GO
CREATE PROC #Temp
AS
SELECT *
FROM JacksTable
GO
这次从 Jack 数据库运行
USE Jack
GO
EXEC #Temp
我得到了同样的绑定错误
Msg 208, Level 16, State 1, Procedure #Temp, Line 4 [Batch Start Line 74]
Invalid object name 'JacksTable'.
这告诉我 SQL Server 尝试将临时过程中的对象绑定到创建临时存储过程时的上下文中的数据库。
这篇文章建议
首次执行存储过程时,查询处理器从 sys.sql_modules 目录视图中读取存储过程的文本,并检查该过程使用的对象名称是否存在。
这项检查针对哪个数据库执行?我认为是 tempdb,因为临时存储过程定义保存在该数据库中?如果是这样,那么该解决方案在所有情况下都会失败(除非我们在 tempdb 中创建了表),因此不可能是那样。
根据我上面看到的内容,它似乎是在创建临时存储过程时处于范围内的数据库(而不是对象定义持久化的数据库 - tempdb)。但是,如果确实如此,SQL Server 如何知道它是哪个数据库以及它存储在哪里?我检查了sys.sql_expression_dependencies
、和sys.sql_modules
,但似乎没有一个有这些信息sys.objects
sys.procedures
我有这两张桌子
CREATE TABLE `users` (
`id` bigint NOT NULL AUTO_INCREMENT,
`status` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=330031656 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ;
CREATE TABLE `user_meta` (
`id` int NOT NULL AUTO_INCREMENT,
`user_id` bigint NOT NULL,
`meta_id` bigint NOT NULL,
`value` bigint NOT NULL,
PRIMARY KEY (`id`),
KEY `usermeta_user_id_meta_type_meta_value` (`user_id`,`meta_id`,`value`),
CONSTRAINT `user_meta_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=16728 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ;
客户要求,他们希望根据value
,对特定的进行排序meta_id
。例如,假设有 10meta_id
个,客户选择meta_id=1111
。在这种情况下,所有已关联的用户meta_id=1111
都应按其第一顺序排序value
,而其他没有关联的用户meta_id=1111
可以按任何顺序排在底部。
曾经有人问过类似的问题,我也试图根据他们的答案提出疑问,但对我来说似乎不起作用。
这个答案和这个也讨论了使用if-else
和case-when-then
语句,但是当我尝试其中任何一个时
select u.id, um.meta_id, um.value from users u
inner join user_meta um on um.user_id = u.id
order by if(um.meta_id=1111, value, 1);
select u.id, um.meta_id, um.value from users u
inner join user_meta um on um.user_id = u.id
order by case um.meta_id
when 1111 then value else 1 end;
select u.id, um.meta_id, um.value from users u
inner join user_meta um on um.user_id = u.id
order by case
when um.meta_id = 1111 then value else u.id end;
我明白了
+-----------+---------+------------+
| id | meta_id | value |
+-----------+---------+------------+
| 326480529 | 200 | 1730358000 |
| 326850494 | 1111 | 1730185200 |
| 326785127 | 1111 | 1730271600 |
| 326833934 | 1111 | 1730358000 |
| 326467136 | 1111 | 1730358000 |
| 328079379 | 1111 | 1730793600 |
+-----------+---------+------------+
我希望所有带有 的用户都meta_id=1111
排在最上面,但他们既没有排在最上面,也没有在他们自己内部进行排序。同样,对于desc
顺序,带有 的用户meta_id=1111
应该排在最上面,按降序排列,而其他所有用户都可以排在最下面,例如
+-----------+---------+------------+
| id | meta_id | value |
+-----------+---------+------------+
| 328079379 | 1111 | 1730793600 |
| 326833934 | 1111 | 1730358000 |
| 326467136 | 1111 | 1730358000 |
| 326785127 | 1111 | 1730271600 |
| 326850494 | 1111 | 1730185200 |
| 326480529 | 200 | 1730358000 |
+-----------+---------+------------+
非常感谢任何帮助或指导,以解决此问题。非常感谢!
我还发布了INSERT
两个表的一些语句,以便更轻松地在本地机器上复制
INSERT INTO `users` (`id`,`status`) VALUES (328079379,'active');
INSERT INTO `users` (`id`,`status`) VALUES (326833934,'active');
INSERT INTO `users` (`id`,`status`) VALUES (326467136,'deleted');
INSERT INTO `users` (`id`,`status`) VALUES (326785127,'inactive');
INSERT INTO `users` (`id`,`status`) VALUES (326850494,'removed');
INSERT INTO `users` (`id`,`status`) VALUES (326480529,'active');
INSERT INTO `user_meta` (`id`,`user_id`,`meta_id`,`value`) VALUES (13155,328079379,1111,1730793600);
INSERT INTO `user_meta` (`id`,`user_id`,`meta_id`,`value`) VALUES (13045,326833934,1111,1730358000);
INSERT INTO `user_meta` (`id`,`user_id`,`meta_id`,`value`) VALUES (13009,326467136,1111,1730358000);
INSERT INTO `user_meta` (`id`,`user_id`,`meta_id`,`value`) VALUES (13010,326785127,1111,1730271600);
INSERT INTO `user_meta` (`id`,`user_id`,`meta_id`,`value`) VALUES (13051,326850494,1111,1730185200);
INSERT INTO `user_meta` (`id`,`user_id`,`meta_id`,`value`) VALUES (13008,326480529,200,1730358000);