制作了一个使用 Jetpack compose 在 KMP 上测试 API 的小工具。但我遇到了一个问题,即Windows的可用性不足。我不想安装虚拟机(希望可以不用虚拟机),以前也没有做过docker(自己也搞不清楚),而且这不是我的领域,所以决定向专家请教。
我想为什么不在 gitlab 上使用 CI/CD,但是那里的跑者是需要付费的(如果我理解正确的话)。
那么,有没有一种真正的方法来编译 exe 文件,而不是从 Windows 编译?
制作了一个使用 Jetpack compose 在 KMP 上测试 API 的小工具。但我遇到了一个问题,即Windows的可用性不足。我不想安装虚拟机(希望可以不用虚拟机),以前也没有做过docker(自己也搞不清楚),而且这不是我的领域,所以决定向专家请教。
我想为什么不在 gitlab 上使用 CI/CD,但是那里的跑者是需要付费的(如果我理解正确的话)。
那么,有没有一种真正的方法来编译 exe 文件,而不是从 Windows 编译?
平面上有两个点,需要计算距离和方向角,角度要用量角器的刻度来表示(把圆分成6000份)。
计算距离没有问题,我使用欧几里得距离来计算:
ΔX = x1 - x2
ΔY = y1 - y2
距离 = sqrt(ΔX^2 + ΔY^2)(距离也是半径)
该角度计算为 ΔY / ΔX 的反正切,结果值以弧度为单位,然后转换为度。
问题是:如果将一个圆分成 6000 个等份,那么一度内有 16.6 (6) 个量角器等份
因此,如果反正切是 45 度,我可以将 45 度乘以 16.6 并得到量角器的数值吗?
需要编写某种分析仪来计算患者的生存率。简单来说,它的运行算法如下:
将医生计算出的某个值 VAL [ 1 ] 与二维数组中的值 [ 2 ] 进行比较。比较只应与第一列的数据进行比较。
VAL 的值可能与数组中的某个值完全匹配,也可能与数组中的任何值都不匹配,但非常接近其中一个;超出数组中的值的范围。
如果 VAL 值与数组中的某个值完全匹配,那么算法应该向医生打印第 [ 3 ] 行中的下一个值(例如如图所示,VAL = 11 ,算法将打印第 - 280 行中的下一个值)。
至此我已经写出了[ 2 ]阶段的简化模型。下面的代码:
import numpy as np
a = np.array([
[1, 244], [2, 211], [3, 466], [4, 698], [5, 899], [6, 109], [7, 129], [8, 140],
[9, 168], [10, 188], [11, 280], [12, 282], [13, 245], [14, 256], [15, 258],
[16, 305], [17, 352], [18, 345], [19, 365], [20, 348], [21, 440],[22, 424],
[23, 444], [24, 446], [25, 477], [26, 479], [27, 571], [28, 573], [29, 557],
[30, 577]
], int)
val = 11
if val in a:
print('СОВПАТЕНИЕ ЕСТЬ!')
idx = np.where(a == val)
row = idx[0][0]
print(f'Связанное значение: {a[row][1]}')
else:
print('СОВПАДЕНИЙ НЕТ!')
nearest_val = a.flat[np.abs(a - val).argmin()]
print(f'Ближайшее значение: {nearest_val}')
idx = np.where(a == nearest_val)
row = idx[0][0]
print(f'Связанное значение: {a[row][1]}')
该模型适用于两种情况:当 VAL 值与数组中的某个值完全匹配时,以及当没有精确的值,但有一个接近它的值时。第三个还没写。模型中使用的数组很小,只有 30 个值,而在成熟计算器中将使用的数组每列包含超过 5000 个值,并且在我看来,在这种情况下使用 Numpy 工具包是合乎逻辑的。
我想听听在这些问题上更有经验的同事的意见:
其逻辑实现得有多合理?从经验丰富的程序员的角度来看,是否存在更胜任的选择?
该算法一次搜索数组中的所有值,但如何将搜索限制在仅一列呢?
在模型中数组很小,但在计算器完整版本中将使用的数组每列包含超过 5000 个值。组织这种数组的最佳方法是什么?使其成为外部文件?或者将所有值移入代码本身?
我怎样才能以某种方式提取位于数组中的变量的索引值并将它们用作常规 int 值?在模型中我使用以下方法实现了这一点:
idx = np.where(a == val)
row = idx[0][0]
这是精确匹配。但我对这种方法的正确性表示严重怀疑。
补充:在研究strawdog 的评论 的过程中,我设法整理出了以下版本的算法:
import numpy as np
a = np.array([
[1, 244], [2, 211], [3, 466], [4, 698], [5, 899], [6, 109], [7, 129], [8, 140],
[9, 168], [10, 188], [11, 280], [12, 282], [13, 245], [14, 256], [15, 258],
[16, 305], [17, 352], [18, 345], [19, 365], [20, 348], [21, 440],[22, 424],
[23, 444], [24, 446], [25, 477], [26, 479], [27, 571], [28, 573], [29, 557],
[30, 577]
], int)
val = 2
row = a[np.abs(a[:,0] - val).argmin()]
if val in a[:,0]:
print(f'СОВПАТЕНИЕ ЕСТЬ!\n'
f'Связанное значение: {a[np.where(a == row)][1]}')
else:
print(f'СОВПАДЕНИЙ НЕТ!\n'
f'Ближайшее значение: {a[np.where(a == row)][0]}\n'
f'Связанное значение: {a[np.where(a == row)][1]}')
反过来,它与Serge3leo提出的选项非常相似。因此,我暂时就到此为止,稍后我将通过添加处理VAL值超出数组范围的情况的场景来补充答案。非常感谢strawdog和Serge3leo帮助我解决问题!
计算机安装了Linux Mint 21.3(Cinnamon)。昨天,愚蠢地,没有其他方式可以这么说,我安装了 Gnome-shell-pomodoro 包。我没有多想,但正如我所料,Gnome-shell 取代了我心爱的 Cinnamon。我试图删除最后一个,但最终我还是删除了
sudo apt autoremove gnome*
现在计算机启动进入控制台。 startx 命令启动 X 甚至我的 Cinnamon 环境,但我希望图形立即启动,而不是从命令行启动。
请告诉我该怎么办?
我有一些负责图像延迟加载的 js 代码。但如果我们也用 picture 标签包裹 img,并且针对 webp、avif 格式的图片添加 source 标签,那么是否也需要对 source 标签做延迟加载呢?或者如果您使用图像的延迟加载,您可以不用图片标签和 webp、avif 格式吗?
<picture>
<source srcset="human-back.avif" type="image/avif">
<img class="lazy first" data-src="human-back.avif" src="pixel.png" alt="">
</picture>
const Images = document.querySelectorAll('img[data-src]');
function loadImages(entries) {
if (entries[0].isIntersecting) {
entries[0].target.src = entries[0].target.dataset.src
observer.unobserve(entries[0].target)
}
}
const options = {
threshold: 0,
rootMargin: '50px'
}
const observer = new IntersectionObserver(loadImages, options)
Images.forEach(img => {
observer.observe(img)
})