<div class="hid-spis">
<select onchange="if (this.value) window.location.href = this.value" id="city-dropdown1">
<option value="" disabled selected>Покупателям</option>
<option value="https://www.gismeteo.ru">gismeteo</option>
<option value="http://www.nova-wings.ru/forecast/">nova-wings</option>
</select>
</div>
故事发生了,VLC SDKpod的Windows头文件(包括)有问题MSYS2。
一般来说,当从 *nix 迁移插件时,头文件vlc_threads.h会显示:
static inline int vlc_poll(struct pollfd *fds, unsigned nfds, int timeout)
{
int val;
vlc_testcancel();
val = poll(fds, nfds, timeout);
if (val < 0)
vlc_testcancel();
return val;
}
# define poll(u,n,t) vlc_poll(u, n, t)
没有一个编译器想吃掉它。说到poll一开始没有定义,以及libtorrent-rasterbar使用 的,由于定义了宏而boost无法访问该函数。poll
我决定走这条路:下载SDK,解压(我们只在组装库时需要它),然后如果程序集在下面WIN32,则转到带有标题的文件夹,读取文件,从那里剪切宏,更换:
if (WIN32)
include (FetchContent)
cmake_policy (SET CMP0135 NEW)
FetchContent_Declare (
vlc_windows
URL "https://github.com/evo-i/vlc-bittorrent-sdk-windows/raw/vlc-3.0.32-win64/vlc-3.0.21-win64.7z")
FetchContent_MakeAvailable(vlc_windows)
add_library (libvlccore SHARED IMPORTED)
set_target_properties (libvlccore
PROPERTIES
IMPORTED_IMPLIB "${vlc_windows_SOURCE_DIR}/sdk/lib/libvlccore.lib"
INTERFACE_INCLUDE_DIRECTORIES "${vlc_windows_SOURCE_DIR}/sdk/include/vlc/plugins")
add_library (Vendor::VlcPlugin ALIAS libvlccore)
if (NOT DEFINED VLC_THREADS_FIXED)
file (READ
"${vlc_windows_SOURCE_DIR}/sdk/include/vlc/plugins/vlc_threads.h"
VLC_THREADS_BUG)
string (REPLACE "val = poll(fds, nfds, timeout)"
"val = vlc_poll(fds, nfds, timeout)"
VLC_THREADS_NO_THREADS_BUG
${VLC_THREADS_BUG})
string (REPLACE "# define poll(u,n,t) vlc_poll(u, n, t)" ""
VLC_THREADS_NO_MORE_BUGS
${VLC_THREADS_NO_THREADS_BUG})
file (WRITE
"${vlc_windows_SOURCE_DIR}/sdk/include/vlc/plugins/vlc_threads.h"
${VLC_THREADS_NO_MORE_BUGS})
unset (VLC_THREADS_NO_MORE_BUGS)
set (VLC_THREADS_FIXED 1 CACHE BOOL "" FORCE)
endif (NOT DEFINED VLC_THREADS_FIXED)
else (WIN32)
...
因此,当写入文件时,一切都很好,但没有一个分号;!什么都吃了CMake!认为这是一个列表...
有什么办法让他不要这样做吗?当阅读或写作时......嗯,你确实需要这样做。
我正在编写一个矩阵类,并希望将同一类的方法放入属性类中
class Matrix:
def __init__(
self,
rows: int=None,
columns: int=None,
values: list[int | float | list[int | float]]=None
) -> None:
self.__rows = 3 if not rows else (3 if rows <= 0 else rows)
self.__columns = 3 if not columns else (3 if columns <= 0 else columns)
self.__values = [
[
random.randint(-10, 10)
for _ in range(self.__columns)
]
for _ in range(self.__rows)
] if not values and self.__rows != 1 \
else [
random.randint(-10, 10)
for _ in range(self.get_columns)
] if self.__rows == 1 else values
self.T = self.__transposition()
def __transposition(self) -> typing.Self:
return Matrix(
self.__columns,
self.__rows,
[
[
self.__values[j][i]
for j in range(self.__rows)
]
for i in range(self.__columns)
]
)
if name == 'main':
a = Matrix(rows=2)
print(a.T)
但有深度递归
File "Matrix.py", line 25, in __init__
self.T = self.__transposition()
^^^^^^^^^^^^^^^^^^^^^^
File "Matrix.py", line 47, in __transposition
return Matrix(
^^^^^^^
RecursionError: maximum recursion depth exceeded
可以做什么?我尝试通过静态方法装饰器运行它,但没有任何效果。
我需要得到一个这样的对象
{
2019: {
11: [массив событий],
12: [массив событий],
}
2020: {
10: [массив событий],
11: [массив событий],
12: [массив событий],
}
}
我实现了以下代码(像往常一样错误):
let events = [
{
date: '2019-12',
event: 'name1'
},
{
date: '2019-12',
event: 'name2'
},
{
date: '2019-11',
event: 'name3'
},
{
date: '2019-11',
event: 'name4'
},
{
date: '2020-10',
event: 'name5'
},
{
date: '2020-10',
event: 'name6'
},
{
date: '2020-11',
event: 'name5'
},
{
date: '2020-11',
event: 'name6'
},
{
date: '2020-12',
event: 'name7'
},
{
date: '2020-12',
event: 'name8'
},
{
date: '2020-12',
event: 'name9'
},
]
let result = {};
for (const obj of events) {
if (!result[obj.date.slice(0,4)]) {
result[obj.date.slice(0,4)] = [];
}
result[obj.date.slice(0,4)].push(obj.event);
}
console.log(result)
警告 我真的不需要现成的解决方案。我需要更多关于创建多维对象的算法中的错误的指导。我和他们有问题。几乎所有的教育网站都给出了简单的例子,我理解它们形成的逻辑,但是当涉及到创建我自己的东西时,我迷失了(我对逐步创建它的算法感兴趣)请不要投票。否则,我永远不会理解对象(甚至多维数组)。先感谢您。
我编写了以下代码来在 WPF 窗口中显示客户端发送的图像:
namespace ScreenStream
{
public partial class MainWindow : Window
{
private TcpListener _listener;
public MainWindow()
{
InitializeComponent();
StartServer();
}
private async void StartServer()
{
_listener = new TcpListener(IPAddress.Any, 12345);
_listener.Start();
while (true)
{
var client = await _listener.AcceptTcpClientAsync();
_ = Task.Run(() => HandleClient(client));
}
}
private async Task HandleClient(TcpClient client)
{
using (var networkStream = client.GetStream())
using (var memoryStream = new MemoryStream())
{
await networkStream.CopyToAsync(memoryStream);
memoryStream.Position = 0;
var bitmapImage = new BitmapImage();
bitmapImage.BeginInit();
bitmapImage.StreamSource = memoryStream;
bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
bitmapImage.EndInit();
Dispatcher.Invoke(() =>
{
ScreenshotImage.Source = bitmapImage;
});
}
client.Close();
}
protected override void OnClosed(EventArgs e)
{
_listener?.Stop();
base.OnClosed(e);
}
}
}
问题是ScreenshotImage.Source = bitmapImage;它会抛出错误System.InvalidOperationException: 'The calling thread cannot access this object because a different thread owns it.'。
我尝试以不同的方式声明它纯粹是无意义的Dispatcher,例如:
this.Dispatcher.Invoke(() =>
{
ScreenshotImage.Source = bitmapImage;
});
或者
Application.Current.Dispatcher.Invoke(() =>
{
ScreenshotImage.Source = bitmapImage;
});
但结果总是相同的,原则上这并不奇怪,而且我对如何解决问题没有任何其他想法,我用谷歌搜索了它,他们写到的任何地方都可以通过简单地添加来修复错误Dispatcher.Invoke,但是对于出于某种原因它对我没有帮助