小编mad*_*low的帖子

Prisma 中带有时区列的时间戳

我正在评估 Prisma,我是一个十足的菜鸟......

  • 我正在使用 Postgresql
  • 我有以下模型定义
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 现在具有“本机类型”

prisma

11
推荐指数
2
解决办法
4万
查看次数

使用Doctrine在Symfony2中测试控制器

我在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)

php phpunit symfony symfony-2.1

9
推荐指数
1
解决办法
7864
查看次数

防止 Postgresql 递归查询中的无限循环

对不起 - 这有点含糊......

这里:(在 CTE 中找到无限递归循环)讨论了如何防止递归查询中出现无限循环。在“查询级别”上阻止了递归 - 至少在关于 Postgresql 的答案中是这样。

Postgresql (10) 有没有办法实现某种安全网来防止无限递归?这是一种可行的方法,statement_timeout还是有其他广泛接受的方法?

postgresql recursive-query common-table-expression

8
推荐指数
1
解决办法
4544
查看次数

虚假/模拟Google Play服务

我在没有Gapps的LG2上安装了CyanogenMod.我只使用开源软件 - 除了我从备份中恢复的Slack应用程序

Slack应用程序运行良好,但总是要求我安装"Google Play服务".我只是忽略它,它的工作原理.

是否有可能以某种方式模拟/伪造Google Play API,以便每当Slack要求"安装了Google Play服务"时,假API会返回true

我不是Android开发人员 - 我知道Java和Linux所以成为一个应该可以解决这个小问题.

android google-play-services

6
推荐指数
1
解决办法
7780
查看次数

使用 Guzzle 将 csv 数据作为分块请求发送

我想将 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 创建完整的资源?我希望这是有道理的。也许这甚至不是一个优化......

php rest http guzzle

5
推荐指数
1
解决办法
2177
查看次数

使用 Webpack 进行新部署后处理丢失的动态块

我有一个带有 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)

javascript angularjs angular-ui-router webpack webpack-4

5
推荐指数
1
解决办法
1589
查看次数

在 Postgresql 中索引外键

像许多 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)

sql postgresql indexing query-performance

5
推荐指数
1
解决办法
4855
查看次数

HTML5数据属性中的通配符

是否可以在属性名称中使用带有通配符的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)发挥作用.

谢谢

javascript jquery html5 sizzle

4
推荐指数
1
解决办法
3424
查看次数

使用casperjs测试损坏的html

我想在运行一些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.这可能是让这个工作的唯一方法吗?

javascript casperjs

4
推荐指数
1
解决办法
310
查看次数

在flask路由功能中使用请求模块

考虑以下最小的工作烧瓶应用程序:

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)

所以我的问题是:为什么会发生这种情况,我该如何解决这个问题呢?

python flask python-requests

3
推荐指数
1
解决办法
3140
查看次数

Postgres 服务器未响应 nodejs 请求

我可以从 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 node.js node-postgres

3
推荐指数
1
解决办法
1260
查看次数

使用pgcrypto验证password_hash生成的密码

我将密码哈希值存储在使用以下命令生成的 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)

我的问题基本上是:

  • 我做错了吗?
  • 如果这是不可能的:是否有迁移路径可以实现这一点?

php postgresql crypt pgcrypto

2
推荐指数
1
解决办法
2153
查看次数