2023年11月

为何选择文字用户界面(TUI)?

许多人每日都在使用终端,因此, 文字用户界面 Text User Interface (TUI)逐渐显示出其价值。它能减少用户输入命令时的误差,让终端操作更高效,提高生产力。

以我的个人使用情况为例:我每日会通过家用电脑远程连接到我使用 Linux 系统的实体 PC。所有的远程网络连接都通过私有 VPN 加密保护。然而,当我需要频繁重复输入命令进行连接时,这种经历实在令人烦躁。

于是,我创建了下面这个 Bash 函数,从而有所改进:

export REMOTE_RDP_USER="myremoteuser"
function remote_machine() {
  /usr/bin/xfreerdp /cert-ignore /sound:sys:alsa /f /u:$REMOTE_RDP_USER /v:$1 /p:$2
}

但后来,我发现自己还是频繁地执行下面这条命令(在一行中):

remote_pass=(/bin/cat/.mypassfile) remote_machine $remote_machine $remote_pass

这太烦了。更糟糕的是,我的密码被明文存储在我的电脑上(我虽然使用了加密驱动器,但这点依然令人不安)。

因此,我决定投入一些时间,编写一个实用的脚本,从而更好地满足我的基本需求。

我需要哪些信息才能连接到远程桌面?

实际上,要连接到远程桌面,你只需提供少量信息。这些信息需要进行结构化处理,所以一个简单的 JSON 文件就能够满足要求:

{"machines": [
  {
  "name": "machine1.domain.com",
  "description": "Personal-PC"
  },
  {
  "name": "machine2.domain.com",
  "description": "Virtual-Machine"
  }
  ],
"remote_user": "MYUSER@DOMAIN",
"title" : "MY COMPANY RDP connection"
}

尽管在各种配置文件格式中,JSON 并非最佳选择(例如,它不支持注解),但是 Linux 提供了许多工具通过命令行方式解析 JSON 内容。其中,特别值得一提的工具就是 jq。下面我要向你展示如何利用它来提取机器列表:

/usr/bin/jq --compact-output --raw-output '.machines[]| .name' \
  $HOME/.config/scripts/kodegeek_rdp.json) \
  "machine1.domain.com" "machine2.domain.com"

jq 的文档可以在 这里 找到。另外,你也可以直接将你的 JSON 文件复制粘贴到 jq play,试用你的表达式,然后在你的脚本中使用这些表达式。

既然已经准备好了连接远程计算机所需的所有信息,那现在就让我们来创建一个美观实用的 TUI 吧。

Dialog 的帮助

Dialog 是那些你可能希望早些认识的、被低评估的 Linux 工具之一。你可以利用它构建出一个井然有序、简介易懂,并且完美适用于你终端的用户界面。

比如,我可以创建一个包含我喜欢的编程语言的简单的复选框列表,且默认选择 Python:

dialog --clear --checklist "Favorite programming languages:" 10 30 7\
  1 Python on 2 Java off 3 Bash off 4 Perl off 5 Ruby off

我们通过这条命令向 dialog 下达了几个指令:

  • 清除屏幕(所有选项都以 -- 开头)
  • 创建一个带有标题的复选框(第一个位置参数)
  • 决定窗口尺寸(高度、宽度和列表高度,共 3 个参数)
  • 列表中的每条选项都由一个标签和一个值组成。

惊人的是,仅仅一行代码,就带来了简洁直观和视觉友好的选择列表。

关于 dialog 的详细文档,你可以在 这里 阅读。

整合所有元素:使用 Dialog 和 JQ 编写 TUI

我编写了一个 TUI,它使用 jq 从我的 JSON 文件中提取配置详细信息,并且使用 dialog 来组织流程。每次运行,我都会要求输入密码,并将其保存在一个临时文件中,脚本使用后便会删除这个临时文件。

这个脚本非常基础,但它更安全,也使我能够专注于更重要的任务 ?

那么 脚本 看起来是怎样的呢?下面是代码:

#!/bin/bash
# Author Jose Vicente Nunez
# Do not use this script on a public computer. It is not secure...
# https://invisible-island.net/dialog/
# Below some constants to make it easier to handle Dialog
# return codes
: ${DIALOG_OK=0}
: ${DIALOG_CANCEL=1}
: ${DIALOG_HELP=2}
: ${DIALOG_EXTRA=3}
: ${DIALOG_ITEM_HELP=4}
: ${DIALOG_ESC=255}
# Temporary file to store sensitive data. Use a 'trap' to remove
# at the end of the script or if it gets interrupted
declare tmp_file=$(/usr/bin/mktemp 2>/dev/null) || declare tmp_file=/tmp/test$$
trap "/bin/rm -f $tmp_file" QUIT EXIT INT
/bin/chmod go-wrx ${tmp_file} > /dev/null 2>&1
:<<DOC
Extract details like title, remote user and machines using jq from the JSON file
Use a subshell for the machine list
DOC
declare TITLE=$(/usr/bin/jq --compact-output --raw-output '.title' $HOME/.config/scripts/kodegeek_rdp.json)|| exit 100
declare REMOTE_USER=$(/usr/bin/jq --compact-output --raw-output '.remote_user' $HOME/.config/scripts/kodegeek_rdp.json)|| exit 100
declare MACHINES=$(
    declare tmp_file2=$(/usr/bin/mktemp 2>/dev/null) || declare tmp_file2=/tmp/test$$
    # trap "/bin/rm -f $tmp_file2" 0 1 2 5 15 EXIT INT
    declare -a MACHINE_INFO=$(/usr/bin/jq --compact-output --raw-output '.machines[]| join(",")' $HOME/.config/scripts/kodegeek_rdp.json > $tmp_file2)
    declare -i i=0
    while read line; do
        declare machine=$(echo $line| /usr/bin/cut -d',' -f1)
        declare desc=$(echo $line| /usr/bin/cut -d',' -f2)
        declare toggle=off
        if [ $i -eq 0 ]; then
            toggle=on
            ((i=i+1))
        fi
        echo $machine $desc $toggle
    done < $tmp_file2
    /bin/cp /dev/null $tmp_file2
) || exit 100
# Create a dialog with a radio list and let the user select the
# remote machine
/usr/bin/dialog \
    --clear \
    --title "$TITLE" \
    --radiolist "Which machine do you want to use?" 20 61 2 \
    $MACHINES 2> ${tmp_file}
return_value=$?
# Handle the return codes from the machine selection in the
# previous step
export remote_machine=""
case $return_value in
  $DIALOG_OK)
    export remote_machine=$(/bin/cat ${tmp_file})
    ;;
  $DIALOG_CANCEL)
    echo "Cancel pressed.";;
  $DIALOG_HELP)
    echo "Help pressed.";;
  $DIALOG_EXTRA)
    echo "Extra button pressed.";;
  $DIALOG_ITEM_HELP)
    echo "Item-help button pressed.";;
  $DIALOG_ESC)
    if test -s $tmp_file ; then
      /bin/rm -f $tmp_file
    else
      echo "ESC pressed."
    fi
    ;;
esac

# No machine selected? No service ...
if [ -z "${remote_machine}" ]; then
  /usr/bin/dialog \
        --clear  \
        --title "Error, no machine selected?" --clear "$@" \
        --msgbox "No machine was selected!. Will exit now..." 15 30
  exit 100
fi

# Send 4 packets to the remote machine. I assume your network
# administration allows ICMP packets
# If there is an error show  message box
/bin/ping -c 4 ${remote_machine} >/dev/null 2>&1
if [ $? -ne 0 ]; then
  /usr/bin/dialog \
        --clear  \
        --title "VPN issues or machine is off?" --clear "$@" \
        --msgbox "Could not ping ${remote_machine}. Time to troubleshoot..." 15 50
  exit 100
fi

# Remote machine is visible, ask for credentials and handle user
# choices (like password with a password box)
/bin/rm -f ${tmp_file}
/usr/bin/dialog \
  --title "$TITLE" \
  --clear  \
  --insecure \
  --passwordbox "Please enter your Windows password for ${remote_machine}\n" 16 51 2> $tmp_file
return_value=$?
case $return_value in
  $DIALOG_OK)
    # We have all the information, try to connect using RDP protocol
    /usr/bin/mkdir -p -v $HOME/logs
    /usr/bin/xfreerdp /cert-ignore /sound:sys:alsa /f /u:$REMOTE_USER /v:${remote_machine} /p:$(/bin/cat ${tmp_file})| \
    /usr/bin/tee $HOME/logs/$(/usr/bin/basename $0)-$remote_machine.log
    ;;
  $DIALOG_CANCEL)
    echo "Cancel pressed.";;
  $DIALOG_HELP)
    echo "Help pressed.";;
  $DIALOG_EXTRA)
    echo "Extra button pressed.";;
  $DIALOG_ITEM_HELP)
    echo "Item-help button pressed.";;
  $DIALOG_ESC)
    if test -s $tmp_file ; then
      /bin/rm -f $tmp_file
    else
      echo "ESC pressed."
    fi
    ;;
esac

你从代码中可以看出,dialog 预期的是位置参数,并且允许你在变量中捕获用户的回应。这实际上使其成为编写文本用户界面的 Bash 扩展。

上述的小例子只涵盖了一些部件的使用,其实还有更多的文档在 官方 dialog 网站上。

Dialog 和 JQ 是最好的选择吗?

实现这个功能可以有很多方法(如 Textual,Gnome 的 Zenity,Python 的 TKinker等)。我只是想向你展示一种高效的方式——仅用 100 行代码就完成了这项任务。

确实,它并不完美。更具体地讲,它与 Bash 的深度集成使得代码有些冗长,但仍然保持了易于调试和维护的特性。相比于反复复制粘贴长长的命令,这无疑是一个更好的选择。

最后,如果你喜欢在 Bash 中使用 jq 处理 JSON,那么你会对这个 jq 配方的精彩集合 感兴趣的。

(题图:MJ/a9b7f60a-02ec-4d3f-88ae-2321f49ac0e1)


via: https://fedoramagazine.org/writing-useful-terminal-tui-on-linux-with-dialog-and-jq/

作者:Jose Nunez 选题:lujun9972 译者:ChatGPT 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Blender 4.0 的发布使其成为图形设计从业者和艺术家们极度期待的工具。

Blender 是一款极受欢迎的开源 3D 计算机图形软件套件,它广泛应用于动画电影制作、动态图形、视觉特效等多个领域。

最近,Blender 基金会公布了Blender 4.0 的发布,这一版本“为渲染、创建工具以及更多内容打开了新的可能性,让你的创造自由提升到新的水平。”

接下来,让我们一起探索一下此版本带来的新视野。

? Blender 4.0:有哪些新特性?

作为一个重要的版本更新,Blender 4.0 提供了丰富的新功能。然而,我们只针对一些核心的亮点进行介绍:

  • 用户界面改进
  • 光线与阴影链接
  • 改良的 Principled BSDF
  • 更优化的人物绑定

在我们详述一些细节之际,下面是一则官方视频,总结了主要的变更事项:

用户界面改进

在 Blender 中,最重要且直接面向用户的部分无疑就是它的界面。界面的字体已经改变为 Inter此举旨在改进应用内的文字可读性,使它不受显示器大小影响。

此外,用户还可以通过在常规下拉菜单或者右键菜单上按空格键,使用新增的搜索功能。同时,一份调整过的启动画面,使得用户在旧版 Blender 中迁移保存的设置变得更为简单。

我们在文件菜单中添加了一项新的 “ 增量保存 Save Incremental ”选项。这个选项可以保存当前的 .blender 文件,并给文件名添加一个递增的数字。

光线与阴影链接

它被开发团队称为最受期待的功能,Blender 4.0 新增了光线与阴影链接功能。这些功能使设计师可以设置灯光以影响场景中特定的物体,甚至可控制哪些物体可以挡住光源,充当阴影的遮挡体。

关于这些功能的更多详情,可以参考 官方文档

改良的 Principled BSDF

Blender 的 Principled BSDF 系统在本次更新中进行了大规模的改良,现在此系统提供了支持更广泛的材料类型,并且工作更加高效

改良亮点包括:

  • 涂层 Coat ,这个特性可以模拟例如手机显示屏后的玻璃表面等效果,它被放置在所有的基层之上。
  • 光泽感 Sheen ,现在它使用新的微纤维渲染模型,成为排列在发射和涂层之上的最高层,从而控制表面反光。
  • 实现了多散射 GGX 策略,以在 Cycles 渲染器中提高渲染效率,使得渲染过程中消耗的电力更少
  • 金属表面的边缘着色,这项新特性提供了一种装饰金属表面的艺术友好方式。它可以渲染基于 F82 着色模型的复杂折射系数。

以下的插图更好地展示了 Principled BSDF 的改善状况:

绑定优化

Blender 4.0 的特性之一就是为 Armature 骨骼添加了 骨骼集合 Bone Collections 。此设定继承了现有对象物体的实现方式。

替代了传统的编号层和骨骼组特性,以吸取组合选择操作符来按骨骼颜色/集合来选择分组,设定 Armature 骨骼的颜色等等。

同时,姿势库也得到了更新,新引入的资产架使得姿势资产在 3D 视口中可见。

?️ 更多改进和优化

一些其他值得注意的变化还包括:

  • 停止支持英特尔 HD4000 系列的 GPU
  • 实施了新的 blendfile 兼容性政策
  • 吸附功能得到改善,变得更快,定位更精准。
  • 对于 Linux 和 Windows 用户,现在 OpenGL 的最小版本要求 是 4.3。
  • Filmic 已被 AgX 视图转换所替代,以更好地处理过度曝光区域的颜色。

你还可以参考 官方发布说明 来获取更多的更新详情。

? 下载 Blender 4.0

你可以从 官方网站 下载 Blender 的最新 tar 包,支持 LinuxWindows, 和 macOS等平台。

当然如果你有特殊需求,你也可以在 Snap 商店 或是 Steam 中下载。

Blender

? 准备好使用 Blender 4.0 开启你的创造之旅了吗?还是你有其他的首选项?欢迎在评论区分享你的想法!


via: https://news.itsfoss.com/blender-4-0-release/

作者:Sourav Rudra 选题:lujun9972 译者:ChatGPT 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

OBS Studio 30.0 对于 Linux 用户来说是一个重要的版本。

OBS Studio 无疑是 Linux 上最佳的录屏软件 之一,它深受众多内容创作者的喜爱,他们使用它进行视频录制和流媒体直播。

近日的公告发布了一个全新的主要版本 —— OBS Studio 30,距离今年一月份的 上一次主要版本 已经近 11 个月。

接下来就让我来一一为你介绍。

? OBS Studio 30:新特性有哪些?

作为一个主要版本,OBS Studio 30 带来了一系列引人期待的改进,但是,也有一项变化可能令部分用户感到不满

这个版本的一些重要亮点包括:

  • 停止对 Ubuntu 20.04 的支持
  • 用户界面/体验的提升
  • 视频编码能力的提升

停止对 Ubuntu 20.04 的支持

随着 OBS Studio 30 的发布,对 Ubuntu 20.04 的支持不复存在。

做出这个决定的主要原因在于,开发者发现维护 Qt 5 越来越困难,这也相应影响了他们在改进 OBS 用户界面/用户体验方面的工作。

实际上,Ubuntu 20.04 是唯一一个使用 Qt 5 运行 OBS 的第一方发行版,开发者表示,相比其他版本,这个发行版的用户基数已经在逐渐减少

并非一夜之间的改变,早在六月份,OBS Studio 就在其 GitHub 仓库中公布了这项改动。

目前,Ubuntu 20.04 的用户有两个选择,他们可以选择 升级到 Ubuntu 22.04 或更高版本,或者转用 OBS Studio 的 Flatpak 版本

开发人员还提到了他们可能会在 2025 年 4 月左右停止对 Qt 6.2 和 Ubuntu 22.04 的支持。但是,你目前无需对此感到担忧。你可以阅读 官方公告 了解详细的计划。

用户界面/体验的提升

停靠区 Docks ”菜单中新增了一项“ 全高窗口 Full-Height docks ”选项,这将方便集成 Twitch 和 YouTube 上直播时所见的长聊天窗口。

同时,状态栏也进行了重新设计,以更结构化、有条理的形式展示同样的信息,我个人非常喜欢这种改变。

老状态栏有些棘手,在我直播或录制期间,我经常会忘记它的存在 ?

在 OBS Studio 30 中也新增了一个“ 安全模式 Safe Mode ”,这种模式下,应用程序将在不加载任何第三方插件、脚本或 web sockets 的情况下启动,以便对故障进行排除

你可以通过两种方式访问到这个模式,一是当 OBS Studio 断电意外关闭,另一种是在下图所示的“ 帮助 Help ”菜单中手动启动。

视频编码能力的提升

OBS Studio 30 新增了对三种主要视频编码技术的支持,分别是 Intel QSV H264,高效视频编码(HEVC),以及 AV1

许多使用 Linux 的内容创作者会赞赏 OBS 做出的这些改进。

?️ 更多的改变和改进

除上述提及的点外,还有一些其他值得注意的改动:

  • 引入了WHIP/WebRTC 输出
  • 可通过拖拽调整过滤器顺序
  • 提供YouTube Live 控制室面板的支持。
  • 修复了在记录高帧率视频设备时出现日志问题的错误。
  • Decklink 增加了10 位捕获和 HDR 回放的支持。

要获得更多关于 OBS Studio 30 的详细信息,你可以查看 官方发布备注

? 下载 OBS Studio 30

你可以前往 官方网站 下载 OBS Studio 的最新版本,其支持LinuxWindows 以及 macOS 平台。

OBS Studio

? 你是否打算试运行一下 OBS Studio 30 然后告诉我们你的体验呢?


via: https://news.itsfoss.com/obs-studio-30/

作者:Sourav Rudra 选题:lujun9972 译者:ChatGPT 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

如果你是 OpenSSL、LibreSSL、OpenSSH 的用户,你可以坐下来看看了,因为这不会影响你。

最近一项学术研究展示了如下情况:对于某些特定设备,他人可以监听其 SSH 连接,然后借助一些运气在无声无息中破译出主机的私有 RSA 密钥,从而冒充该设备。

冒充这些设备后,通过使用推断出的主机密钥私钥实施的中间人攻击,间谍可以安静地记录用户的登录信息,同时,通过将这些连接转发给真正的设备,他们还可以监控用户在远程 SSH 服务器上的活动。尽管 SSH 还有其他功能,但其主要应用场景仍然是用户登录到设备并通过命令行接口进行控制。

据悉,可以通过被动监视从客户端到易受攻击设备的 SSH 服务器的连接,获得主机的 RSA 密钥私钥:无论是在签名生成过程中的偶发运算错误,还是因宇宙射线等微小故障产生的自然错误,都可以被观察和利用来推算 SSH 服务器的主机密钥私钥,这本应是保密的。

虽然可能认为自然错误发生的概率很小,偶发错误可能已为众所周知,但实际上只要你连续观察足够多的到有漏洞的 SSH 服务器的 SSH 连接,你就有可能发现一个你可以利用的。

重要的一点是,软件库 OpenSSL 和 LibreSSL,以及 OpenSSH,都未发现存在上述密钥推导问题的漏洞。由此,我们认为,网上的大部分设备、服务器和其他设备都不会受到影响,只有特定的物联网设备和类似的嵌入式设备可能会对此种攻击敏感。此外,这种问题也仅影响 RSA 密钥。

细节

由加利福尼亚大学圣地亚哥分校的 Keegan Ryan、Kaiwen He(他同时也在麻省理工学院任职)、George Arnold Sullivan 以及 Nadia Heninger 基于早期的一些研究,完成并撰写了这项研究。他们采用的技术,旨在揭示 RSA 密钥私钥,该技术源于 Florian Weimer 在 2015 年对 TLS 的突破性研究,以及 2022 年圣地亚哥论文的几位作者以及其他研究者的一些工作,这些工作可追溯到 1990 年代。

信息安全专家 Thomas Ptacek 曾高度赞扬了 2023 年研究的合著者 Nadia Heninger,并在此分享了 RSA 密钥分析论文的摘要,以便于理解这个问题。我们同时也要感谢曾在 Register vulture 工作的 Dan Goodin,他在周一通过 Ars Technica 向我们报告了 UC 圣地亚哥论文的消息。

基本上,当客户端尝试连接到一个容易受到攻击的 SSH 服务器时,它们在协商建立全面安全加密通信的过程中,服务器将会生成一个数字签名以供客户端检查,以确保其正在与预期的服务器通信。

如我们之前所述,这个签名的计算过程可能会随机或意外地产生错误,聪明的算法可以从错误的签名中推导出服务器的私有 RSA 密钥,此密钥用于签名生成。对此的一种防范措施是在将签名发送给客户端前确保其计算正确;OpenSSL 和 LibreSSL 已经在实施这种防范。

正如论文作者在他们的摘要中提到的:

“我们证明了一种可能性:若 SSH 服务器在进行签名计算过程中出现自然故障,一名被动的网络攻击者便有机会获得其私有 RSA 主机密钥。

在之前的研究中,我们通常认为这对于 SSH 协议是不可行的,因为签名中包含了一些信息,比如 Diffie-Hellman 共享密钥,这些信息对于被动的网络观察者来说无法获得。

然而,我们证明了,在 SSH 中经常使用的签名参数下,如果出现了签名错误,我们便能有效地使用 格攻击 lattice attack 来恢复私钥。

我们对 SSH、IKEv1、IKEv2 协议进行了安全分析,在此场景下,我们利用我们的攻击方法在现实环境中挖掘出几个存在漏洞的独立实现中的数百个被攻破的密钥。

“一个被动的对手可以安静地监控合法的连接,不用冒被检测的风险,直到他们观察到一个包含私钥的错误签名。”研究团队做出了这样的结论:“然后,攻击者可以主动且不会被检测地冒充被攻破的主机,从而截取敏感数据。”

研究人员表示,他们已经扫描了整个互联网,并翻查了以前收集的 SSH 扫描数据,以测量易受攻击的签名的流行程度。他们声称,他们的数据集涵盖了 52 亿条 SSH 记录和超过七年的观察,其中包含了超过 59 万个无效的 RSA 签名。

通过他们的格密钥恢复技术,学者们表示,其中超过 4900 个错误的签名揭示了对应 RSA 公钥的因子分解。他们利用这些信息,推导出了 189 个公钥的私有 RSA 密钥。

在他们的研究中,作者们发现,思科、Zyxel、山石网科和 Mocana 这四个制造商的产品都可能受到这种密钥侦测攻击。研究者已经向思科和 Zyxel 报告了这个问题,观察到两家供应商都迅速进行了调查行动。

思科判定其 ASA 和 FTD 软件在 2022 年已经解决了此问题,且在这篇论文发布之前,公司正在对其 IOS 和 IOS XE 软件进行调查,看看如何应对此问题。

同一时间,Zyxel 发现这个缺陷只影响到了它那些已停止服务的固件,并且它已经开始使用不受此问题影响的 OpenSSL。研究人员表示,他们没有成功地与山石网科和 Mocana 取得联系,所以决定把这个问题提交给了 CERT 协调中心。

据称,自诩为 “SSH-2.0-SSHD” 的 SSH 服务器实现也可能受到攻击,这可能会影响到一些企业级的 Java 应用。有鉴于这个密钥推导技术的关键在于 PKCSv1.5,使用 PKCSv1.5-RSA 签名的 DNSSEC 可能也在风险之中。

他们还指出,他们在 IPsec 连接中收集到的签名数据集不大,所以无法确定此协议是否也可能受到类似的密钥泄漏攻击。他们表示:“鉴于易受攻击的签名故障很罕见,根据我们的数据,我们无法对 IPsec 实现得出多少结论,我们认为这个问题值得进一步研究。”

更新:已经与山石网科取得联系,官方确认该问题已在 2015 年发布的相关版本中修复,之后的版本也不存在相关问题。

具体详情可以咨询山石网科客服或查看如下链接:

https://www.hillstonenet.com.cn/security-notification/2015/07/28/dsfyj/

(题图:MJ/f94093f0-9ffe-4cf1-82fb-cdac1427e923)


via: https://www.theregister.com/2023/11/14/passive_ssh_key_compromise/

作者:Jessica Lyons Hardcastle 译者:ChatGPT 校对:wxy

1 科学家利用树莓派“胶囊”保护气球望远镜数据

NASA 在四月份升空了一架超压气球成像望远镜,在 33 千米的高度,用了一个多月的时间环绕地球,获取天体观测数据。但由于通讯故障,5 月底临时决定降落,望远镜本身在着陆过程中被毁坏,它的固态硬盘被完好无损地找了回来,不过这不重要。因为它带有 4 个数据恢复系统(DRS)胶囊。每个胶囊包括一个树莓派 3B 和 5TB 固态存储,以及一个降落伞、一个全球导航卫星系统。在降落前,望远镜在阿根廷上空投放了两个 DRS 胶囊。并在报告的地点找到了它们。一只好奇的美洲狮显然在其中一个胶囊周围嗅了嗅,但没有造成损坏,而且数据完好无损。

消息来源:The Register
老王点评:简单地将数据复制到 SD 卡,然后从天上扔下来,听起来不靠谱,但是其实效果还不错。

2 微软将人工智能产品统一到 Copilot 品牌下

微软将其必应聊天工具更名为 Microsoft Copilot,与微软其他多款人工智能产品共享相同的品牌名称。该公司还宣布将推出 Copilot Studio,以支持 OpenAI 最近发布的代理型人工智能模型 GPT,这是为其 ChatGPT AI 助手定制的角色。微软的 Copilot 被用于多个应用程序,包括 Microsoft 365、Edge、Windows 等,有些是免费的,有些则不是。这一命名方案的历史始于 2021 年的 GitHub Copilot。微软称自己是“是一家 Copilot 公司。不久的将来,每个人、每件事都会有一个 Copilot”。

消息来源:Ars Technica
老王点评:不知道微软公司会不会和谷歌、Facebook 一样也改名,叫 Copilot 或 MicroPilot ??

3 程序员们仍然忍不住在代码中留下密钥和凭证

根据一项研究,在 Python 的官方代码库 PyPI 上提交的总共 45 万个项目中,发现了近 4000 个唯一的机密信息。近 3000 个项目至少包含一个独一无二的机密。许多机密被泄露了不止一次,使被曝光的机密总数达到近 57,000 个。这些泄露的凭证提供了对一系列资源的访问权限,如微软活动目录服务器、允许单点登录的 OAuth 服务器、SSH 服务器等。以及,还包括了与云服务交互的 API 密钥、数据库凭据以及各种令牌等。而 PyPI 只是众多开源代码库中的一个。

消息来源:Ars Technica
老王点评:再好的机制和最佳实践,也架不住程序员偷懒。

1 2023 年,GCC 仍然在为 COBOL 编译器开发新的功能

虽然现在不像 Rust 或其他语言那么流行,但对于 COBOL 爱好者和那些继续使用这种上世纪 50 年代编程语言维护代码库的人来说,GCC COBOL 编译器的树外支持在 2023 年底仍在继续。而且,ISO 发布了 COBOL 2023 规范,带来了异步消息传递、XOR 逻辑运算符、DELETE FILE 语句、布尔移位运算符、事务处理工具等功能。开发人员一直在努力支持该规范,并让他们的编译器支持通过越来越多的 COBOL 测试用例。

消息来源:Phoronix
老王点评:现在学 COBOL 还来得及去银行找份工作吗?

2 生成式 AI 的兴起引发了翻译技术的井喷式增长

数据提供商 Statista 预测,AI 翻译的全球市场将从 2023 年的约 50 亿美元增长到 2030 年的约 120 亿美元。在这一波 AI 翻译浪潮中,德国公司 DeepL 在 Google 和 Facebook 等强大竞争对手中间脱颖而出。DeepL 自 2017 年创办以来成长迅速,可能是过去 15 年翻译领域最成功的科技公司,今年 1 月它的估值达到了 10 亿美元。他们推出的 DeepL 是一个基于神经网络的在线翻译器。人工智能的进步为节省金钱和时间提供了可能,人工翻译只在需要时才介入。Gartner 预测,到 2025 年人类翻译者四分之一的工作量将是审阅和编辑机器翻译文本。

消息来源:《金融时报》
老王点评:我就说为什么 GPT 还没把 DeepL 打败,原来 DeepL 也是基于人工智能的,而且是专门针对场景优化过的。万能的 GPT 也不是每件事都能干到最好。

3 Google 支付 80 亿美元成为三星手机的默认应用程序

根据 Epic 在法庭上提供的信息,Google 同意在四年内向三星支付 80 亿美元,以使其应用程序在三星手机上成为默认设置。Google Play 收入的一半或更多来自三星设备,Google 和三星将分享应用商店的收入,以确保安卓移动设备预装 Google Play。

消息来源:The Hill
老王点评:随着对 Google 的各个诉讼案的审理,它和各大厂商的交易合作也随之被曝光。