2024年3月

本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进 Python 技术,并增长职业和副业的收入。

周刊全文:
https://pythoncat.top/posts/2024-03-30-weekly

特别提醒:本期赠书 5 本《明解Python算法与数据结构》,参与方式见原文。

以下是本期摘要:


前言

WPF中Window相信大家都很熟悉,有时我们有一些自定义需求默认Window是无法满足的,比如在标题栏上放一些自己东西,这个时候我们就需要写一个自己的Window,实现起来也很简单,只要给Window设置一个WindowChrome.WindowChrome附加属性就可以实现,WindowChrome 可以让你自定义窗口的非工作区的外观和行为。非工作区就是窗口的标题栏和边框,通常由操作系统绘制和管理。WindowChrome 可以让你将 WPF 的内容扩展到非工作区,同时保留一些系统的功能和行为,比如调整大小,移动,最大化,最小化等。

一、示例代码

1.1 基本使用

<local:CustomWindowx:Class="CustomWindowDemo.Window1"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:local="clr-namespace:CustomWindowDemo"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"Title="Window1"Width="800"Height="450"Icon="/logo.png"mc:Ignorable="d">
    <Grid/>
</local:CustomWindow>

1.2 自定义标题栏高度

<local:CustomWindowx:Class="CustomWindowDemo.Window1"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:local="clr-namespace:CustomWindowDemo"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"Title="Window1"Width="800"Height="450"CaptionHeight="35"Icon="/logo.png"mc:Ignorable="d">
    <Grid/>
</local:CustomWindow>

1.3 自定义标题栏颜色

<local:CustomWindowx:Class="CustomWindowDemo.Window1"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:local="clr-namespace:CustomWindowDemo"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"Title="Window1"Width="800"Height="450"CaptionBackground="Blue"Icon="/logo.png"mc:Ignorable="d">
    <Grid/>
</local:CustomWindow>

1.4 自定义标题栏内容

<local:CustomWindowx:Class="CustomWindowDemo.Window1"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:local="clr-namespace:CustomWindowDemo"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"Title="Window1"Width="800"Height="450"Icon="/logo.png"mc:Ignorable="d">
    <local:CustomWindow.CaptionBarContent>
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinitionWidth="Auto" />
                <ColumnDefinitionWidth="*" />
                <ColumnDefinitionWidth="Auto" />
            </Grid.ColumnDefinitions>

            <ButtonMargin="5"Padding="2"VerticalAlignment="Center"Background="Transparent"BorderThickness="0"WindowChrome.IsHitTestVisibleInChrome="True">
                <StackPanelOrientation="Horizontal">
                    <PolygonVerticalAlignment="Center"Fill="White"Points="0,6 6,0 6,12" />
                    <TextBlockMargin="4,0,0,0"VerticalAlignment="Center"FontSize="14"Foreground="White"Text="返回" />
                </StackPanel>
            </Button>
            <TextBlockGrid.Column="1"HorizontalAlignment="Center"VerticalAlignment="Center"FontSize="14"Foreground="White"Text="{Binding RelativeSource={RelativeSource AncestorType=Window}, Path=Title}" />
            <ButtonGrid.Column="2"Margin="5"Padding="2"VerticalAlignment="Center"Background="Transparent"BorderThickness="0"FontSize="14"Foreground="White"WindowChrome.IsHitTestVisibleInChrome="True">
                <StackPanelOrientation="Horizontal">
                    <TextBlockMargin="0,0,4,0"VerticalAlignment="Center"Text="Admin" />
                    <PolylineVerticalAlignment="Center"Points="0,0 5,5 10,0"Stroke="White"StrokeThickness="2" />
                </StackPanel>
            </Button>
        </Grid>
    </local:CustomWindow.CaptionBarContent>
    <Grid/>
</local:CustomWindow>

二、综合案例

如需以上代码,请到群共享文件中下载

技术交流群
联系方式

前言

俗话说得好“工欲善其事,必先利其器”,合理的选择和使用可视化的管理工具可以降低技术入门和使用的门槛。今天大姚给大家分享一款.NET Avalonia开源、免费、跨平台、快速的Git可视化管理工具:SourceGit。

Avalonia介绍

Avalonia是一个强大的框架,使开发人员能够使用.NET创建跨平台应用程序。它使用自己的渲染引擎绘制UI控件,确保在Windows、macOS、Linux、Android、iOS和WebAssembly等不同平台上具有一致的外观和行为。这意味着开发人员可以共享他们的UI代码,并在不同的目标平台上保持统一的外观和感觉。

工具特点

  • Git命令与图形界面.
  • 内置浅色/深色主题.
  • English/简体中文.
  • 文件历史记录、修订差异.
  • GitFlow支持等等.

工具源代码

工具下载

工具截图

黑暗主题

浅色主题

项目源码地址



更多项目实用功能和特性欢迎前往项目开源地址查看


FFmpeg内置了aac音频格式,在《FFmpeg开发实战:从零基础到短视频上线》一书的“5.2.2  Linux环境集成mp3lame”又介绍了如何给FFmpeg集成mp3格式,常见的音频文件除了这两种之外,还有ogg和amr两种格式也较常用。其中ogg格式的编解码依赖于libogg和libvorbis,而amr格式的编解码依赖于opencore-amr。因此要先安装编译这三个库,再让FFmpeg开启ogg和amr支持,在Linux环境的操作过程包含四个步骤:安装libogg、安装libvorbis、安装opencore-amr、重新编译FFmpeg,分别说明如下。

1、安装libogg

libogg支持解析ogg文件结构,也可用于封装ogg格式,它的安装步骤说明如下。
(1)到
https://www.linuxfromscratch.org/blfs/view/svn/multimedia/libogg.html
下载最新的libogg源码,比如2021年6月发布的libogg-1.3.5,该版本的源码下载地址是
https://downloads.xiph.org/releases/ogg/libogg-1.3.5.tar.gz
。将下载好的压缩包上传到服务器并解压,也就是依次执行以下命令。

tar zxvf libogg-1.3.5.tar.gz
cd libogg-1.3.5

(2)进入解压后的libogg目录,运行下面命令配置libogg。

./configure

(3)运行下面命令编译libogg。

make

(4)编译完成后,运行下面命令安装libogg。

make install

2、安装libvorbis

Vorbis是一种免费的音频编码标准,libvorbis是Vorbis音频的编解码库。因为Vorbis音频通常封装在ogg格式中,所以libvorbis依赖于libogg,它的安装步骤说明如下。
(1)到
https://www.linuxfromscratch.org/blfs/view/svn/multimedia/libvorbis.html
下载最新的libvorbis源码,比如2020年7月发布的libvorbis-1.3.7,该版本的源码下载地址是
https://downloads.xiph.org/releases/vorbis/libvorbis-1.3.7.tar.gz
。将下载好的压缩包上传到服务器并解压,也就是依次执行以下命令。

tar zxvf libvorbis-1.3.7.tar.gz
cd libvorbis-1.3.7

(2)进入解压后的libvorbis目录,运行下面命令配置libvorbis。

./configure

(3)运行下面命令编译libvorbis。

make

(4)编译完成后,运行下面命令安装libvorbis。

make install

3、安装opencore-amr

opencore-amr是AMR音频的编解码库,支持对AMR-NB和AMR-WB格式的音频进行编解码,它的安装步骤说明如下。
(1)到
https://sourceforge.net/projects/opencore-amr/files/opencore-amr/
下载最新的opencore-amr源码,比如2022年10月发布的opencore-amr-0.1.6,该版本的源码下载地址是
https://nchc.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-0.1.6.tar.gz
。将下载好的压缩包上传到服务器并解压,也就是依次执行以下命令。

tar zxvf opencore-amr-0.1.6.tar.gz
cd opencore-amr-0.1.6

(2)进入解压后的opencore-amr目录,运行下面命令配置opencore-amr。

./configure

(3)运行下面命令编译opencore-amr。

make

(4)编译完成后,运行下面命令安装opencore-amr。

make install

4、重新编译FFmpeg

由于FFmpeg默认未启用ogg和amr,因此需要重新配置FFmpeg,标明启用ogg和amr,然后重新编译安装FFmpeg。FFmpeg的Linux环境完整编译过程参见《FFmpeg开发实战:从零基础到短视频上线》一书的“1.2.3  自行编译与安装FFmpeg”,详细的启用步骤说明如下。
(1)回到FFmpeg源码的目录,执行以下命令重新配置FFmpeg,主要增加启用ogg和amr。(增加了选项--enable-libvorbis --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3)

./configure --prefix=/usr/local/ffmpeg --enable-shared --disable-static --disable-doc --enable-zlib --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libdavs2 --enable-libmp3lame --enable-libfreetype --enable-libass --enable-libfribidi --enable-libxml2 --enable-fontconfig --enable-sdl2 --enable-libvorbis --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3 --enable-iconv --enable-gpl --enable-nonfree

(2)运行下面命令编译FFmpeg。

make clean
make -j4

(3)执行下面命令安装FFmpeg。

make install

(4)运行以下命令查看FFmpeg的版本信息。

ffmpeg -version

查看控制台回显的FFmpeg版本信息,找到“--enable-libvorbis --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3”,说明FFmpeg正确启用了新增的音频格式ogg和amr。

一:禁止本机用户编辑注册表

使用win+r打开运行对话框,输入命令regedit,这样就能打开注册表编辑器

image

在运行对话框输入gpedit.msc,进入本地组策略编辑器

在这里我们可以阻止访问策略表编辑工具
image
双击
image

点击启用 确定

image

再次在运行对话框输入命令regedit,尝试进入注册表

发现已经不能进入了
image
image

二:禁用“关闭事件跟踪程序”

“关闭事件跟踪程序”要求在关机的时候提供关机原因

我们要想直接关机就需要禁用“关闭事件跟踪程序”
image

打开本地组策略编辑器,找到关闭事件跟踪程序

image

改选禁用,点击确定

image

再次关机发现不需要提供理由了

image

三:禁用Internet属性安全选项卡

点击“internet选项”、打开internet属性对话框

看到七个选项卡
image

打开本地组策略编辑器,找到internet控制面板禁用安全页面

image

修改为启用

image

再次打开发现安全选项卡已经不见了

image