Google Cloud SQL 宣称,最小机器类型的每小时费用仅为 0.0150 美元,而且我要按每小时收费,而不仅仅是我连接的小时数。这是因为我正在使用游泳池吗?我如何设置我的后端,以便它仅在需要时查询云数据库,这样我就不会为一天中的每个小时收费?
const mysql = require('mysql');
const pool = mysql.createPool({
host : process.env.SQL_IP,
user : 'root',
password : process.env.SQL_PASS,
database : 'mydb',
ssl : {
[redacted]
}
});
function query(queryStatement, cB){
pool.getConnection(function(err, connection) {
// Use the connection
connection.query(queryStatement, function (error, results, fields) {
// And done with the connection.
connection.destroy();
// Callback
cB(error,results,fields);
});
});
}
Run Code Online (Sandbox Code Playgroud) javascript mysql node.js google-cloud-sql google-cloud-platform
在Javascript es6模块中,可能有许多小的但易于测试的功能应进行测试,但不应导出。 如何在不导出功能的情况下测试模块中的功能?(不使用rewire)
我有一个在 AWS ECS 上运行的 Docker 容器。我不需要负载均衡器,因为容器旨在处理 websocket 连接。
https://aws.amazon.com/getting-started/tutorials/deploy-docker-containers/显示使用负载均衡器 DNS 名称到达容器。但由于我没有添加负载均衡器,所以我看不到到达容器的方法。
如何在没有负载均衡器的情况下与 ECS 上运行的 Docker 容器建立 Websocket 连接?
我想将此行的映射部分变成一个函数:
let i: Vec<u32> = (0..=5).map(|x| x * 2).collect();
Run Code Online (Sandbox Code Playgroud)
我编写了这段代码,我认为它是我从原始代码中删除的内容的直接插入:
let j: Vec<u32> = process(0..=5).collect();
Run Code Online (Sandbox Code Playgroud)
fn process<I>(src: I) -> I
where
I: Iterator<Item = u32>,
{
src.map(|x| x * 2)
}
Run Code Online (Sandbox Code Playgroud)
我得到这个编译时错误:
error[E0308]: mismatched types
--> src/lib.rs:5:5
|
1 | fn process<I>(src: I) -> I
| - - expected `I` because of return type
| |
| this type parameter
...
5 | src.map(|x| x * 2)
| ^^^^^^^^^^^^^^^^^^ expected type parameter `I`, found struct `std::iter::Map`
|
= note: expected …
Run Code Online (Sandbox Code Playgroud) 答案只是将容器设置为在崩溃时重新启动。在开发中,我使用 nodemon 来防止进程在崩溃时退出 - 所以我认为进程崩溃不会导致容器退出。我的错。进程崩溃实际上会导致容器在使用node
和不使用时退出nodemon
。
{
"scripts": {
"development:service": "nodemon ./service/server.js",
"production:service": "node ./service/server.js"
}
}
Run Code Online (Sandbox Code Playgroud)
当容器内的进程崩溃时,如何重新启动 docker 容器?
最好的方法是--autorestart ON_FAILURE
为容器设置,然后在内部进程崩溃时使容器崩溃?如果是这样,当其中一个进程崩溃时,如何强制容器崩溃?
我正在使用图像node:10.15.3
。
有用的链接:如果容器本身崩溃,如何使容器重新启动
FROM node:10.15.3
ENV NODE_ENV development
# Create application directory.
RUN mkdir -p /src
WORKDIR /src
# Install app dependencies and build.
ADD . /src
RUN yarn install --force
RUN ["chmod", "+x", "./run.sh"]
CMD [ "./run.sh" ]
Run Code Online (Sandbox Code Playgroud)
USER PID %CPU %MEM …
Run Code Online (Sandbox Code Playgroud) 以下(尽管是人为的)组件违反了react-hooks/rules-of-hooks(通过eslint)
function Apple(props){
const {seeds} = props;
if(!seeds){
return null;
}
const [bitesTaken, setBitesTaken] = useState(0);
return <div>{bitesTaken}</div>
}
Run Code Online (Sandbox Code Playgroud)
出现以下错误
React Hook "useState" is called conditionally. React Hooks must be called in the exact same order in every component render. Did you accidentally call a React Hook after an early return?
我理解钩子需要以相同的顺序调用,但是这种条件渲染(只要返回之前没有调用钩子)并不会阻止以相同的顺序调用钩子。我认为eslint规则是太严格了,但也许有更好的方法。
有条件地渲染使用钩子的组件的最佳方法是什么?
如何在保持输入信息的同时将变量解构为新名称?
renderItem({item:'apple'})
// jsx:
function renderItem({item: region}) {
// region == 'apple'
return <div>{region}</div>;
}
Run Code Online (Sandbox Code Playgroud)
以上将使用 item 解构一个对象并将其分配给region
.
如何表达此函数签名的键入信息?
更新未挂载组件的状态如何导致内存泄漏?
警告:无法对卸载的组件执行 React 状态更新。这是一个空操作,但它表明您的应用程序中存在内存泄漏。要修复,请取消 useEffect 清理函数中的所有订阅和异步任务。
但是,当组件刚刚被解除并且不再需要时,用“isUnmounted”检查乱扔我的承诺链似乎很奇怪。这如何导致内存泄漏?
我正在练习我在阅读 The Book 时学到的 Rust 概念。我已经能够List
通过复制Box
并将 分配list
给复制的框来迭代我的枚举,但直觉上,我觉得必须有一种方法可以“使其指向行中的下一个指针”。
如果我尝试在没有 的情况下执行此操作bx.clone()
,例如:self.list = **bx
,我会“无法从**bx
可变引用后面移出”。这意味着我需要拥有它,但我无法拥有bx
它,因为当我在if let
.
是否可以或建议在不复制的情况下移动引用?
#[derive(Clone)]
enum List {
Cons(u32, Box<List>),
Nil,
}
struct ListHolder {
list: List,
}
impl Iterator for ListHolder {
type Item = u32;
fn next(&mut self) -> Option<u32> {
if let Cons(num, bx) = &mut self.list {
let val = *num;
self.list = *bx.clone(); // This is the key line
Some(val) …
Run Code Online (Sandbox Code Playgroud) 编辑 这似乎是由于 React 中的一个问题造成的,并将在未来的版本中修复。 https://github.com/facebook/react/issues/18066
给定一个 React 中的表,该表显示来自 API 的数据,可以用全新的信息刷新,我观察到分离的 DOM 节点泄漏(观察绿色数字):
这是 gif 中执行的代码(下面包含代码以供后代使用)。要查看泄漏,请转到完整页面,打开 chrome 开发工具,查看“性能监视器”选项卡,然后快速单击“Regen”按钮,如 gif 所示。
在这个codesandbox中,节点不是在循环中生成的,因此不会发生泄漏。
唯一的区别是{rows}
jsx 中的数组。令人困惑的部分是它{rows}
不是一个全局变量,所以我不知道它如何防止旧节点被 GC'd。
为什么使用局部变量会rows
导致分离的 DOM 节点泄漏?
注意:DOM 节点似乎稳定在 21,000 个,但无论如何都不应该有那么多节点,因为您可以看到在第一个表生成后它从 7,000 个开始。在我的现实应用程序中,这些分离的节点甚至通过导航(使用反应路由器)仍然存在,这让我相信这是一个真正的泄漏,而不仅仅是等待 GC 的节点。
模拟泄漏的完整代码:
import React, { useState } from "react";
export default function App() {
const [count, setCount] = useState(0);
return (
<div className="App">
<button onClick={() => setCount(prev => prev + 1)}>Regen</button>
<FTable count={count} />
</div> …
Run Code Online (Sandbox Code Playgroud) 以下打印9
,然后true
,如预期的那样:
fn main() {
let mut a = (1..10);
println!("{}", a.by_ref().count()); // 9
println!("{}", a.all(|x| x < 10)); // true
}
Run Code Online (Sandbox Code Playgroud)
下面的打印true
然后0
!
fn main() {
let mut a = (1..10);
println!("{}", a.by_ref().all(|x| x < 10)); // true
println!("{}", a.count()); // 0
}
Run Code Online (Sandbox Code Playgroud)
调用.by_ref()
之前不应该调用迭代器以.all
防止.all
使用迭代器吗?
以下两项都可以工作(两次调用),但感觉太冗长了。
fn main() {
let v = vec![Some(0), Some(1), None, Some(2)];
assert_eq!(
vec![0,2,4],
v.iter()
.filter(|x| x.is_some())
.map(|x| x.unwrap() * 2)
.collect::<Vec<u8>>());
assert_eq!(
vec![0,2,4],
v.iter()
.filter_map(|x| *x)
.map(|x| x*2)
.collect::<Vec<u8>>());
}
Run Code Online (Sandbox Code Playgroud)
filter_map接近我想要的:
[filter_map] 自动删除选项层。如果您的映射已经返回一个 Option 并且您想跳过 None,那么使用 filter_map 会好得多。
但它不会解开闭包中的值,因为它期望返回一个 Option。
有没有办法既过滤某些值,又通过一次调用映射这些值? 例如:
// Fake, does not work
fn main() {
let v = vec![Some(0), Some(1), None, Some(2)];
assert_eq!(
vec![0,2,4],
v.iter()
.map_only_some(|x| x * 2)
.collect::<Vec<u8>>());
}
Run Code Online (Sandbox Code Playgroud) javascript ×5
rust ×4
reactjs ×3
memory-leaks ×2
react-hooks ×2
amazon-ecs ×1
amazon-elb ×1
aws-cloudmap ×1
crash ×1
docker ×1
ecmascript-6 ×1
es6-modules ×1
exit ×1
jestjs ×1
mysql ×1
node.js ×1
typescript ×1
unix ×1