我正在评估 Prisma,我是一个十足的菜鸟......
model Sth {
id Int @default(autoincrement()) @id
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
expiresAt DateTime?
}
Run Code Online (Sandbox Code Playgroud)
该createdAt
专栏翻译为
createdAt | timestamp(3) without time zone | | not null | CURRENT_TIMESTAMP
因为我打算真正使用时间戳 - 我需要它们timestamp with time zone
。
我如何使用 Prisma 实现这一目标?
编辑 NOW() > '2021-02-16':Prisma 现在具有“本机类型”
我在Symony2中创建了一个非常简单的REST控制器,其中包含控制器操作中的数据库插入/更新/删除.
是否有一种很好的方法可以为这些控制器操作编写单元/集成测试而不会污染生产数据库?我是否必须使用不同的环境 - 或者是否有来自框架供应商的建议方法?
电流控制器示例:
public function postAction()
{
$json = $this->getRequest()->getContent();
$params = json_decode($json);
$name = $params->name;
$description = $params->description;
$sandbox = new Sandbox();
$sandbox->setName($name);
$sandbox->setDescription($description);
$em = $this->getDoctrine()->getManager();
$em->persist($sandbox);
$em->flush();
$response = new Response('/sandbox/'.$sandbox->getId());
$response->setStatusCode(201);
return $response;
}
Run Code Online (Sandbox Code Playgroud)
目前的测试示例:
class SandboxControllerTest extends WebTestCase
{
public function testRest()
{
$client = static::createClient();
$crawler = $client->request('POST', '/service/sandbox', array(), array(), array(), json_encode(array('name' => 'TestMe', 'description' => 'TestDesc')));
$this->assertEquals(
201, $client->getResponse()->getStatusCode()
);
}
}
Run Code Online (Sandbox Code Playgroud) 对不起 - 这有点含糊......
这里:(在 CTE 中找到无限递归循环)讨论了如何防止递归查询中出现无限循环。在“查询级别”上阻止了递归 - 至少在关于 Postgresql 的答案中是这样。
Postgresql (10) 有没有办法实现某种安全网来防止无限递归?这是一种可行的方法,statement_timeout
还是有其他广泛接受的方法?
我在没有Gapps的LG2上安装了CyanogenMod.我只使用开源软件 - 除了我从备份中恢复的Slack应用程序
Slack应用程序运行良好,但总是要求我安装"Google Play服务".我只是忽略它,它的工作原理.
是否有可能以某种方式模拟/伪造Google Play API,以便每当Slack要求"安装了Google Play服务"时,假API会返回true
?
我不是Android开发人员 - 我知道Java和Linux所以成为一个应该可以解决这个小问题.
我想将 CSV 数据上传到 REST API(仅特定点的 CSV 数据除外)。
CSV数据的来源是用户上传的。上传的格式可以是CVS、ODS或XLSX电子表格数据。
当用户上传 CSV 文件时 - 我只是这样做(简化):
$handle = \fopen($tempFile, 'r');
$client->post('/import', ['body' => $handle]);
Run Code Online (Sandbox Code Playgroud)
这很有效并且很容易做到。但是,例如,当用户上传 XLSX 时,我当前会循环第一张表中的行并使用 fputcsv 创建资源。
use Box\Spout\Reader\ReaderFactory;
$reader = ReaderFactory::create('xlsx');
$reader->open($tempFile);
$handle = \fopen('php://temp', 'r+');
/** @var $reader \Box\Spout\Reader\XLSX\Reader */
foreach ($reader->getSheetIterator() as $sheet) {
/** @var $sheet \Box\Spout\Reader\XLSX\Sheet */
foreach ($sheet->getRowIterator() as $row) {
\fputcsv($handle, $row);
}
break;
}
$reader->close();
$client->post('/import', ['body' => $handle]);
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种在内存消耗和性能方面优化程序(XLSX 导入)的方法。
是否可以使用 guzzle 从分foreach ($sheet->getRowIterator() as $row)
块请求中发送请求,而无需先使用 fputcsv 创建完整的资源?我希望这是有道理的。也许这甚至不是一个优化......
我有一个带有 Webpack (4.x) 的 AngularJs (1.7) SPA。
这是我们创建块名的方式:
config.output = {
path: PATHS.build,
publicPath: '/dist/',
filename: `[name]${isDev ? '' : '.[contenthash:8]'}.bundle.js`,
chunkFilename: `chunks/[name]${isDev ? '' : '.[contenthash:8]'}.chunk.js`
};
Run Code Online (Sandbox Code Playgroud)
延迟加载是在 ui-router 的状态定义中完成的,基本上是这样的:
$stateProvider
.state('reports', {
url: '/projects/:project_id/reports',
lazyLoad: function($transition$) {
const injector = $transition$.injector().get('$injector');
return import(/* webpackChunkName: "admin.reports.module" */ './reports')
.then(mod => {
injector.loadNewModules([mod.default]);
})
.catch(err => {
throw new Error('An error occured, ' + err);
});
}
})
Run Code Online (Sandbox Code Playgroud)
由于对“动态”块中的模块进行更改而进行部署后 - 该块的文件名将更改([contenthash] 已更改)。
当登录用户(在上次部署之前加载所有捆绑资产)现在尝试使用新块打开路由时 - 块不存在(404)并且它将失败:
Transition Rejection($id: 4 …
Run Code Online (Sandbox Code Playgroud) 像许多 Postgres 一样,n00bs
我们有很多带有外键约束但未建立索引的表。在某些情况下,这不会对性能造成很大影响 - 但这需要进一步分析。
我已阅读以下文章:https://www.cybertec-postgresql.com/en/index-your-foreign-key/
并使用以下查询查找所有没有索引的外键:
SELECT c.conrelid::regclass AS "table",
/* list of key column names in order */
string_agg(a.attname, ',' ORDER BY x.n) AS columns,
pg_catalog.pg_size_pretty(
pg_catalog.pg_relation_size(c.conrelid)
) AS size,
c.conname AS constraint,
c.confrelid::regclass AS referenced_table
FROM pg_catalog.pg_constraint c
/* enumerated key column numbers per foreign key */
CROSS JOIN LATERAL
unnest(c.conkey) WITH ORDINALITY AS x(attnum, n)
/* name for each key column */
JOIN pg_catalog.pg_attribute a
ON a.attnum = x.attnum
AND a.attrelid = c.conrelid …
Run Code Online (Sandbox Code Playgroud) 是否可以在属性名称中使用带有通配符的jQuery查找所有DOM元素?
请考虑以下HTML:
<input
id="val1"
type="text"
data-validate-required
data-validate-minlength="3"
data-validate-email />
Run Code Online (Sandbox Code Playgroud)
我想要实现的是找到所有具有属性名称的dom节点 data-validate-
据我所知,这里描述的通配符与属性的"值"有关.
原因是 - 我想知道哪些元素应该被验证 - 然后找出哪些验证参数(如-email)发挥作用.
谢谢
我想在运行一些CasperJs浏览器测试之前运行一些设置例程.
有一次我无法填写表格数据,因为有一些错位的HTML(表格标签放在表格中):
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Test</title>
</head>
<body>
<table>
<form id="test1">
<input type="text" name="selector_1" />
</form>
</table>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这是一个简单的测试用例:
casper.test.begin('Test', 0, function suite(test) {
casper.start('http://localhost:8000', function() {
this.fill('form#test1', {
"selector_1": 'Yo!'
}, true);
});
casper.run(function() {
test.done();
});
});
Run Code Online (Sandbox Code Playgroud)
测试结果是: error: Errors encountered while filling form: no field matching names selector "selector_1" in form
当我在这个例子中删除表标记时,它可以工作.
不幸的是,我不能在"现实世界"中改变这一点,因为破坏的HTML来自我没有源代码访问的应用程序.
这可以直接用CasperJs解决吗?
我想我也可以尝试通过替换损坏的部分来"修复"HTML.这可能是让这个工作的唯一方法吗?
考虑以下最小的工作烧瓶应用程序:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "I am /"
@app.route("/api")
def api():
return "I am /api"
if __name__ == "__main__":
app.run()
Run Code Online (Sandbox Code Playgroud)
这很开心.但是当我尝试从hello
路由到api
路由的"请求"模块发出GET请求时- 我在尝试访问时从未在浏览器中收到响应http://127.0.0.1:5000/
from flask import Flask
import requests
app = Flask(__name__)
@app.route("/")
def hello():
r = requests.get("http://127.0.0.1:5000/api")
return "I am /" # This never happens :(
@app.route("/api")
def api():
return "I am /api"
if __name__ == "__main__":
app.run()
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:为什么会发生这种情况,我该如何解决这个问题呢?
我可以从 pgAdmin4 访问远程 postgres 数据库,也可以使用 Mac 从 nodejs 访问。现在我使用相同的代码来访问 Windows 中的数据库。我的连接代码如下:
const { Client } = require('pg'); //Importing the Postgres package
const hosts= require('../hosts'); //Using the file containig all hosts
const connectionData = { //Begin creating the connection settings object
host: hosts.DBHost, //DB host
port: hosts.DBPort, //DB hosts port
database: hosts.DB, //DB
user: hosts.DBUser, //DB user
password: hosts.DBPassword, //DB user password
}
Run Code Online (Sandbox Code Playgroud)
我的测试如下:
var client = new Client(connectionData); //New client instance using the above connection settings
client.connect(); //Open the connection …
Run Code Online (Sandbox Code Playgroud) 我将密码哈希值存储在使用以下命令生成的 Postgresql 数据库中:
password_hash($password, PASSWORD_DEFAULT);
现在我还希望能够使用 Postgresql 和 pgcrypto 验证用户密码。
但 pgcrypto 的crypt()
功能无法验证现有的密码哈希值。
但是 - 我可以使用 PHP 验证 Postgresql 生成的密码哈希值password_verify
。
例如:
password_hash('hello', PASSWORD_DEFAULT);
$2y$10$fD2cw7T6s4dPvk1SFHmiJeRRaegalE/Oa3zSD6.x5WncQJC9wtCAS
Run Code Online (Sandbox Code Playgroud)
postgres=# SELECT crypt('hello', gen_salt('bf'));
crypt
--------------------------------------------------------------
$2a$06$7/AGAXFSTCMu9r.08oD.UulYR0/05q7lmuCTC68Adyu/aNJkzpoIW
Run Code Online (Sandbox Code Playgroud)
确认:
// php_verify with the Postgresql hash
php > var_dump(password_verify('hello', '$2a$06$7/AGAXFSTCMu9r.08oD.UulYR0/05q7lmuCTC68Adyu/aNJkzpoIW'));
bool(true)
Run Code Online (Sandbox Code Playgroud)
postgres=# SELECT crypt('hello', '$2y$10$fD2cw7T6s4dPvk1SFHmiJeRRaegalE/Oa3zSD6.x5WncQJC9wtCAS');
crypt
---------------
$2JgKNLEdsV2E
(1 Zeile)
Run Code Online (Sandbox Code Playgroud)
我的问题基本上是: