Eu uso o Neovim com WSL e configurei a cópia na seleção no WindowsTerminal. No entanto, no :set mouse=a
Neovim, a cópia na seleção com o mouse não funciona no nvim.
Como posso fazer isso funcionar no Neovim?
Eu uso o Neovim com WSL e configurei a cópia na seleção no WindowsTerminal. No entanto, no :set mouse=a
Neovim, a cópia na seleção com o mouse não funciona no nvim.
Como posso fazer isso funcionar no Neovim?
Eu tenho o seguinte recurso
[ResourceRegistration, DependencyRegistration(typeof(IConnectionAttempt), [typeof(IStatusCheck)])]
public class FooDriver : Driver
{
// Expected Dependency Injection
public IStatusCheck StatusCheck { get; set; }
public IConnectionAttempt ConnectionAttempt { get; set; }
...
}
Quero que as propriedades ConnectionAttempt
e StatusCheck
sejam injetadas com o plugin especificado aqui , mas quando crio o recurso, recebo uma exceção de referência nula chamando a propriedade.
Quero fazer uma solicitação de rede e mostrar os resultados da lista no Jetpack Compose. Passo os parâmetros da solicitação para o widget de lista. Mas o widget de lista não consegue recompor depois que o mapa foi alterado, mesmo adicionando um key
.
Abaixo está uma pequena demonstração: O valor int deve mudar após tocar no botão.
Por favor, ajude-me a consertar isso.
@Preview
@Composable
fun test() {
var map by remember { mutableStateOf(mapOf<String, Any>()) }
Column {
Button(
onClick = {
map = HashMap(map)
}
) {
Text(
text = "Tap"
)
}
key(map) { testWidget1(map = map) }
}
}
@Composable
fun testWidget1(map: Map<String, Any>) {
var testInt by remember { mutableStateOf(0) }
LaunchedEffect(map) {
testInt += 1
request()
}
Text(
text = "$testInt"
)
}
fun request() {
}
Se definirmos nosso próprio mapeamento de solicitação para "localhost:8080/actuator/health", ele será registrado? Em vez disso, ele chamará o atuador de mola?
Estou tentando limpar dados brutos que possuem \r\n ou \n incorporados em linhas csv. O terminador de linha é \r\n.
Sou capaz de tecer abaixo do código dataweave do Mule 4, exceto a lógica de tradução de pontuação. Usei reduce, mas não está traduzindo corretamente.
código dataweave:
%dw 2.0
output application/csv header=true
var translateMap = {
"‘": "'", "’": "'", "‚": "'", "‛": "'",
"“": "\"", "”": "\"", "„": "\"",
"–": "-", "—": "--", "―": "--",
"…": "...", "•": "*",
"′": "'", "″": "\"",
"‹": "<", "›": ">", "«": "<<", "»": ">>",
" ": " ",
"‐": "-", "‑": "-", "‒": "-", "−": "-",
"©": "(c)", "®": "(R)", "™": "(TM)"
}
fun cleanField(value: String) = (
translateMap reduce ((acc, pair) -> acc replace pair.key with pair.value)
replace /(\r\n|\n)/ with " "
replace /[^\x00-\x7F]/ with ""
)
---
payload map (row) ->
row mapObject (key, value) -> {
(value) : cleanField(key)
}
Dados de amostra:
Header1|Header2|Header3|Header4|Header5|Header6\r\n
Value1A|Value1B|Value1C|Value1D|Value1E|Value1F\r\n
Value2A|Value2B|Value2C—with—emdash|Value2D|Value2E|Value2F\r\n
Value3A|Value3B|Value3C|Value3D ␍\f mid-line |Value3E|Value3F\r\n
Value4A|‘Single’Quote|“Double”Quote|Value4D|Value4E|Value4F\r\n
Value5A|Value5B|Value5C|Value5D|Value5E|Value5F‐hyphen\r\n
Explicação dos dados da amostra:
Terminador de Linha: Cada linha termina com \r\n, conforme solicitado. Separados por Barras Diretas: Os campos dentro de cada registro são separados pelo símbolo de barra vertical|.
Cabeçalho: A primeira linha contém a linha de cabeçalho:
Cabeçalho1|Cabeçalho2|Cabeçalho3|Cabeçalho4|Cabeçalho5|Cabeçalho6.
Cinco registros: há cinco linhas de dados seguindo o cabeçalho.
Seis colunas: cada registro tem seis valores separados por barras verticais.
Sinais de pontuação UTF-8: A linha 4 contém uma aspa simples à esquerda ' e uma aspa dupla à direita “.
\r\n no meio da linha: A linha 3 contém \r\n no meio da linha. Os caracteres \r (retorno de carro) e \n (avanço de página) estão incorporados no campo "Value3D".
Emdash: A linha 2 contém um travessão — dentro do campo "Value2C".
Hífen UTF-8: A linha 5 contém um hífen não padrão (U+2010, Hífen) no final do campo "Value5F".
Saída esperada:
traduzir sinais de pontuação UTF-8 com ASCII
remover quebras de linha incorporadas \r\n. preservar o terminador de linha \r\n
remova qualquer outro UTF-8 que esteja fora do intervalo ASCII
saída de corrente:
O ASCII está sendo limpo corretamente e as linhas incorporadas. A tradução da pontuação não está funcionando.
nova saída:
Sim. Não consegui anexar a captura de tela.
1. Header1|Header2|Header3|Header4|Header5|Header6
2. Value1A|Value1B|Value1C\r\n
|Value1D|Value1E|Value1F\r\n
3. Value2A|Value2B|Value2C--with--emdash|Value2D|Value2E|Value2F
4. Value3A|Value3B|Value3C|Value3D mid-line |Value3E|Value3F
5. Value4A|'Single'Quote|\"Double\"Quote|Value4D|Value4E|Value4F
6. Value5A|Value5B|Value5C|Value5D|Value5E|Value5F-hyphen
Limpar o \r\n incorporado é complicado, preservando o terminador real. As substituições abaixo não têm nenhum efeito on-line.
replace /(\r\n|\n)/ with " "
Eu projetei uma função para procurar um objeto em um array de objetos aninhados infinitamente (ou desconhecidos).
Meu design:
const findActualParent = (parentId:Number, serviceList: Service[] | Service) =>{
for (const service of serviceList){
if(service.id == parentId){
return service
}
if(service.children?.length>0){
let actualParent: Service = findActualParent(parentId, service.children)!
return actualParent!
}
}
return null
}
Esta função (e meu aplicativo) funcionavam bem até eu tentar compilar o aplicativo para implantação ( npm run build
). Ele não compilava, apresentando um erro do TypeScript referenciando minha nova função:
Type must have a '[Symbol.iterator]()' method that returns an iterator
Passei muito tempo pesquisando sobre isso, com a maioria das respostas propondo adicionar diferentes versões do ES no meu compilerOptions
. tsconfig
Tentei várias versões e nenhuma funcionou para mim (minhas opções são ["dom", "dom.iterable", "esnext"]
).
Então me deparei com outra publicação online, um tanto sem relação com a minha pergunta. Tinha a ver com o operador de dispersão em arrays, mas testei na minha implementação. E funcionou? Atualizei meu loop de busca com isto:for (const service of serviceList as any[])
Então, basicamente, estou passando um array estritamente tipado para minha função e, posteriormente, revogando o tipo. Com essa modificação, o aplicativo foi construído e implantado perfeitamente.
Alguém pode explicar por que isso funcionou? E/ou se a minha maneira de iterar um array tipado está errada? Se estiver, por favor, sugira uma solução que funcione independentemente da versão do ES/TS.
Obrigado
Sou bastante novo no AWS e no Docker.
No meu ambiente de desenvolvimento local, quero carregar arquivos do servidor de aplicativos e colocá-los no LocalStack S3. No entanto, quando tento acessar o LocalStack S3 a partir do servidor de aplicativos, ocorre o seguinte erro.
AggregateError [ECONNREFUSED]:
at internalConnectMultiple (node:net:1139:18)
at afterConnectMultiple (node:net:1712:7) {
code: 'ECONNREFUSED',
'$metadata': { attempts: 3, totalRetryDelay: 105 },
[errors]: [
Error: connect ECONNREFUSED ::1:4566
at createConnectionError (node:net:1675:14)
at afterConnectMultiple (node:net:1705:16) {
errno: -111,
code: 'ECONNREFUSED',
syscall: 'connect',
address: '::1',
port: 4566
},
Error: connect ECONNREFUSED 127.0.0.1:4566
at createConnectionError (node:net:1675:14)
at afterConnectMultiple (node:net:1705:16) {
errno: -111,
code: 'ECONNREFUSED',
syscall: 'connect',
address: '127.0.0.1',
port: 4566
}
]
}
A configuração do docker-compose é a seguinte. Usei este link como referência.
version: '3'
services:
test-app:
build:
dockerfile: Dockerfile
context: .
args:
- VARIANT=22-bookworm
container_name: test-app
stdin_open: true
dns:
# Set the DNS server to be the LocalStack container
- 10.0.2.20
networks:
- ls
localstack:
container_name: localstack
image: localstack/localstack
ports:
- "4566:4566"
- "4510-4559:4510-4559"
environment:
- SERVICES=s3
networks:
ls:
# Set the container IP address in the 10.0.2.0/24 subnet
ipv4_address: 10.0.2.20
networks:
ls:
ipam:
config:
# Specify the subnet range for IP address allocation
- subnet: 10.0.2.0/24
O aplicativo é executado no NestJS e o S3Client é inicializado e injetado com o seguinte trecho de código:
import { S3Client } from '@aws-sdk/client-s3';
import type { Provider } from '@nestjs/common';
export const S3_CLIENT_TOKEN = 'S3Client';
export const s3ClientProvider: Provider = {
provide: S3_CLIENT_TOKEN,
useValue: new S3Client({
endpoint: 'https://localhost.localstack.cloud:4566',
region: 'ap-northeast-1',
credentials: {
accessKeyId: '',
secretAccessKey: '',
},
}),
};
O Controlador trabalha com o seguinte trecho de código:
@Post()
async uploadFile(
@AuthorizedUser() _user: User,
@UploadedFile() file: Express.Multer.File,
): Promise<void> {
const command = new PutObjectCommand({
Bucket: 'test',
Key: file.filename,
Body: await readFile(file.path),
});
const response = await this.s3Client.send(command);
return;
}
Alguém pode me ajudar com isso? Agradeço desde já :)
Eu esperava um erro de cesta inexistente em vez de um erro de rede, ou que o upload do arquivo fosse bem-sucedido.
Tentei os passos neste link, mas não obtive os resultados esperados.
Eu estava experimentando com std::iterator_traits
and std::views::iota
. E de repente descobri que std::iterator_traits
return unexpected type para uma categoria de iterador.
libc++
:
#include <ranges>
int main() {
auto view = std::views::iota(0ULL, 10000000000ULL);
static_assert(
std::is_same_v<
std::iterator_traits<decltype(view.begin())>::iterator_category
, std::input_iterator_tag>
);
}
libstdc++
:
#include <ranges>
int main() {
auto view = std::views::iota(0ULL, 10000000000ULL);
static_assert(
std::is_same_v<
std::iterator_traits<decltype(view.begin())>::iterator_category
, std::output_iterator_tag>
);
}
Qual a razão para isso? Por que a categoria de características difere de std::random_access_tag
?
Tenho lido a documentação em https://docs.aws.amazon.com/cli/v1/userguide/cli-usage-filter.html e https://jmespath.org/specification.html , mas não funciona.
Por exemplo, quero usar starts_with para encontrar instâncias de banco de dados cujo DBInstances.DBInstanceIdentifier começa com "foo".
aws rds describe-db-instances --query 'DBInstances.DBInstanceIdentifier[?starts_with(@, "foo")]'
null
---
aws rds describe-db-instances --query 'DBInstances[?starts_with("DBInstanceIdentifier", "foo")]'
In function starts_with(), invalid type for value: None, expected one of: ['string'], received: "null"
---
aws rds describe-db-instances --query 'DBInstances[?starts_with(DBInstanceIdentifier, "foo")]'
In function starts_with(), invalid type for value: None, expected one of: ['string'], received: "null"
Eu também gostaria de usar funções como contains etc. para fazer outras coisas, mas nenhuma delas parece funcionar.
Estou ciente de que posso simplesmente passar a saída por jq e é uma solução fácil, apenas tentando entender mais ferramentas
aws rds describe-db-instances | jq '.DBInstances[] | select(.DBInstanceIdentifier | startswith("foo"))'