我正在尝试创建一个可更新的进度状态。为了做到这一点,我需要能够完全清除最后一个输出,以便我可以更新它。回车可以工作,但是当输出超过终端宽度并回绕时,将无法清除最后一个输出。所以我正在使用 tput:
n=0
while [[ $n -ne 100 ]]; do
n=$((n+1))
tput ed #clear
tput sc #save cursor
echo -n "Progress: ${n}%"
tput rc #restore cursor
sleep 1s
done
echo
Run Code Online (Sandbox Code Playgroud)
但是,如果输出足够长以致于强制终端向上滚动,这将失败。发生这种情况时,保存的光标位置不再正确,并且无法正确清除最后的输出。
例如,如果光标当前在终端的底部并且输出比终端宽度长,则会强制终端向上滚动,使之前保存的光标位置无效。
那么有没有什么办法可以保证Bash中的光标永远不会到终端结束呢?或者也许还有其他一些替代方法来防止这个问题?
编辑:我根据 F. Hauri 的回答制作了我自己的版本,简化了我的用例
#!/bin/bash
str=$(head -c 338 < /dev/zero | tr '\0' '\141')
len="${#str}"
col=$(tput cols)
lines=$(( ((len + col - 1) / col) - 1 ))
echo -ne "${str}\r"
(( len > col )) && tput cuu "$lines"
sleep 3s
tput ed
Run Code Online (Sandbox Code Playgroud) 我有一张表如下:
ID NAME AMOUNT
______________________
1 A 3
1 B 4
2 C 18
4 I 2
4 P 9
Run Code Online (Sandbox Code Playgroud)
我想要每个 ID 的最小值(金额),但我仍然想显示其名称。所以我想要这个:
ID NAME min(AMOUNT)
______________________
1 A 3
2 C 18
4 I 2
Run Code Online (Sandbox Code Playgroud)
ID 可以出现多次,名称也是如此。我试过这个:
SELECT ID, NAME, min(AMOUNT) FROM TABLE
GROUP BY ID
Run Code Online (Sandbox Code Playgroud)
但这当然是一个错误,因为我必须
GROUP BY ID, NAME
Run Code Online (Sandbox Code Playgroud)
但后来我明白了
ID NAME AMOUNT
______________________
1 A 3
1 B 4
2 C 18
4 I 2
4 P 9
Run Code Online (Sandbox Code Playgroud)
我明白为什么,它会查找 ID + NAME 的每个组合的最小值(AMOUNT)。所以我的问题基本上是,如何选择多列(ID、NAME、AMOUNT)并仅获取一列的最小值,同时仍显示其他列?
我对 SQL 很陌生,但我似乎找不到答案。
我创建了一个带有表单的 Ionic 应用程序。没什么特别的(代码如下)。在我添加表单并使用表单组和其他东西之前,它工作得很好。当我开始添加表单组和所有连接的东西时,我收到此错误:
\n\n\n\n\ncore.js:6260 错误错误:未捕获(承诺中):错误:NodeInjector:\n NOT_FOUND [ControlContainer] 错误:NodeInjector: NOT_FOUND\n [ControlContainer]\n 位于 getOrCreateInjectable (core.js:5894)\n 模块处。 \xc9\xb5\xc9\xb5directiveInject (core.js:21115)\n 在 NodeInjectorFactory.NgControlStatusGroup_Factory [作为工厂] (forms.js:1073)\n 在 getNodeInjectable (core.js:6025)\n 在 instantiateAllDirectives (core. js:12953)\n 在 createDirectivesInstances (core.js:12169)\n 在 \xc9\xb5\xc9\xb5elementStart (core.js:21298)\n 在 EditPage_Template (template.html:18)\n 在executeTemplate (core) .js:12129)\ n在renderView(core.js:11899)\ n在resolvePromise(zone-evergreen.js:798)\ n在resolvePromise(zone-evergreen.js:750)\ n在zone-evergreen.js :860\n 在 ZoneDelegate.invokeTask (zone-evergreen.js:399)\n 在 Object.onInvokeTask (core.js:41640)\n 在 ZoneDelegate.invokeTask (zone-evergreen.js:398)\n 在区域。 runTask (zone-evergreen.js:167)\n 在rainMicroTaskQueue (zone-evergreen.js:569)
\n
我尝试了在网上找到的东西:\n从文件 app.module.ts 中的 @angular/forms 导入 Forms Module 和 ReactiveFormsModule
\n\n这对我不起作用,并且我不断收到错误。
\n\n我在 SO 上找到并尝试过的链接,但没有成功:
\n\n我需要.ts
从 mp4 视频创建固定持续时间(例如 5 或 10 秒)的视频块 ( )。我还需要不同格式的块(260p、480p、720p、1080p)。
我可以使用以下命令创建块和 m3u8:
ffmpeg -i input.mp4 -g 60 -hls_time 10 out.m3u8
Run Code Online (Sandbox Code Playgroud)
但无法创建如上所述的不同分辨率。
在下面的代码中编写语句A::x=5
给出了错误:
命名空间“A”中的“x”未命名类型
我们不能为x
变量全局赋值吗?
#include <iostream>
int x = 10;
namespace A
{
int x = 20;
}
A::x=5;
int main()
{
int x = 30;
std::cout << "x = " << x << std::endl;
std::cout << "A::x = " << A::x << std::endl;
std::cout << "::x = " << ::x << std::endl;
}
Run Code Online (Sandbox Code Playgroud) 我需要实现一个接受任何 STL 容器的模板函数。并基于什么样的容器来执行某些操作。
例子:
template <class Container, class T>
void func(Container<T> container) {
if (container == std::map) {
...
} else {
...
}
}
int main() {
std::vector<int> v1;
func(v1); // ok
std::vector<double> v2;
func(v2); // ok
std::map<int, double> m1;
func(m1); // ok
std::list<int> l1;
func(l1); // ok
}
Run Code Online (Sandbox Code Playgroud) 我的目标是使用谷歌应用程序脚本的谷歌工作表中的信息创建谷歌文档。
我可以根据谷歌表格中的数据生成雷达图。雷达图如下所示:
问题:当我将图表作为图像获取并将其粘贴到谷歌文档时。看起来一切都错了。看图片和代码。
我的代码:
var chart = sheet.newChart()
.setChartType(Charts.ChartType.RADAR)
.setPosition(8,2,0,0)
.setNumHeaders(1)
.setOption('title', title)
.addRange(sheet.getRange("A1:G1"))
.addRange(sheet.getRange("A2:G2"))
.setMergeStrategy(Charts.ChartMergeStrategy.MERGE_ROWS)
.setTransposeRowsAndColumns(true)
.setOption('vAxes',{0: {viewWindow: {min: 0, max: 100}}})
.setOption('series', {0: {lineWidth: 4, color: '#FFA500'}})
.build();
sheet.insertChart(chart);
var image = sheet.getCharts()[0].getBlob().getAs('image/png');
Run Code Online (Sandbox Code Playgroud)
我发现的最新类似帖子是这个:Automatting Radar Chart Generation in Google Doc using Google Apps Script
但那里没有给出答案。希望有人能帮忙。
编辑: 感谢 Tanaike,它现在可以工作了。对于任何想知道的人,这是我用来生成图表并将其插入谷歌文档的脚本。用图表替换文本。
var chart = sheet.newChart()
.setChartType(Charts.ChartType.RADAR)
.setPosition(8,2,0,0)
.setNumHeaders(1)
.setOption('title', title)
.addRange(sheet.getRange("A1:G1"))
.addRange(sheet.getRange("A2:G2"))
.setMergeStrategy(Charts.ChartMergeStrategy.MERGE_ROWS)
.setTransposeRowsAndColumns(true)
.setOption('vAxes',{0: {viewWindow: {min: 0, max: 100}}})
.setOption('series', {0: {lineWidth: 4, color: '#FFA500'}})
.build();
sheet.insertChart(chart); …
Run Code Online (Sandbox Code Playgroud) 我正在开发一个简单的基准测试脚本,它需要https://outlook.office365.com/autodiscover/autodiscover.xml提供的信息。我正在使用我的 Outlook.com 电子邮件凭据进行基本身份验证,并且在我的计算机上进行测试时它工作正常。
当我与我的同事(使用相同的凭据)共享脚本时,他收到了403 Forbidden
请求的响应。经过一些试验和错误后,脚本似乎在我国内的多个不同网络上运行,但是一旦我从其他国家/地区运行它,我就会得到403 Forbidden
. 由于这是一个基准脚本,因此我必须使用相同的凭据。
鉴于脚本始终相同,我无法获得有关可能导致问题的原因的任何信息,我怀疑这可能是一项安全功能,可阻止用户从不同国家/地区进行身份验证,但我找不到任何文档,甚至无法提及其中。
有没有人知道可能导致 403 的原因?
exchange-server autodiscovery exchangewebservices http-status-code-403
给您一个字符串元素列表,并要求您返回一个列表,其中包含标题大小写的字符串中的每个元素,换句话说,字符串的第一个字符为大写,其余所有字符为小写
输入示例:
['VARMA', 'raj', 'Gupta', 'SaNdeeP']
Run Code Online (Sandbox Code Playgroud)
样本输出
['Varma', 'Raj', 'Gupta', 'Sandeep']
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Spring security 进行 CORS。这是我的 WebSecurityConfigurerAdapter :
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.cors()
.and()
.authorizeRequests()
.anyRequest()
.authenticated()
.and()
.oauth2Login();
}
@Bean
public CorsConfigurationSource corsConfigurationSource() {
final CorsConfiguration configuration = new CorsConfiguration();
configuration.setAllowedOrigins(List.of("*"));
configuration.setAllowedMethods(List.of("HEAD", "GET", "POST", "PUT", "DELETE", "PATCH"));
configuration.setAllowCredentials(true);
configuration.setAllowedHeaders(List.of("Authorization", "Cache-Control", "Content-Type"));
final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", configuration);
return source;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的 WebMvcCofigurer :
@EnableWebSecurity
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer
{
@Override
public void …
Run Code Online (Sandbox Code Playgroud) c++ ×2
angular ×1
bash ×1
cors ×1
definition ×1
ffmpeg ×1
for-loop ×1
javascript ×1
list ×1
oauth-2.0 ×1
python ×1
radar-chart ×1
reactjs ×1
spring-boot ×1
sql ×1
statements ×1
string ×1
templates ×1
tput ×1
video.js ×1