小编Fra*_*eli的帖子

高阶函数返回纯函数

下面是一个名为functionA的高阶函数示例,它将customValue作为输入,并返回一个获取输入并使用自定义值来详细说明结果的函数:

let functionA = (customValue) => {
  let value = customValue || 1;
  return input => input * value;
};
Run Code Online (Sandbox Code Playgroud)

这是一些结果:

functionA()(4)             
// => returns 4

functionA(2)(4)
// => returns 8

functionA(3)(4)
// => returns 12

functionA(4)(4)
// => returns 16
Run Code Online (Sandbox Code Playgroud)

功能A返回的功能可以被认为是纯粹的吗?

更新:以上示例仅使用数字输入.正如@CRice所描述的那样,只有当customValue是常量且没有内部状态(如类)时,返回的函数才能被认为是纯函数.

javascript higher-order-functions pure-function

19
推荐指数
1
解决办法
973
查看次数

REQUEST_INSTALL_PACKAGES:权限使用与应用程序的核心用途没有直接关系

Google Play 支持不断拒绝我的应用程序的上次部署。

下面我就来说一下被拒绝的原因:

发现的问题:权限使用与应用程序的核心用途没有直接关系。我们发现您的应用不符合 REQUEST_INSTALL_PACKAGES 权限的使用方式。具体来说,权限的使用与应用程序的核心用途没有直接关系。

此外,请按照以下步骤使您的应用程序合规:

请从您的应用中删除 REQUEST_INSTALL_PACKAGES 权限的使用。

删除使用 REQUEST_INSTALL_PACKAGES 权限的未使用包后,我尝试重新部署,但应用程序一直被拒绝。

我可以确认当前使用的权限列表不包括 REQUEST_INSTALL_PACKAGES。

在 play.google.com 上,我检查了最后上传版本的权限列表(请参阅随附的屏幕截图)。

我还解压了最后上传的SDK文件(使用apktool),并在解压的文件夹中搜索“REQUEST_INSTALL_PACKAGES”;当然,没有找到任何结果。

有人对如何解决这个问题有任何建议吗?

在此输入图像描述

deployment android google-play-console

10
推荐指数
2
解决办法
5298
查看次数

Webpack 4:SCSS将CSS转换为单独的文件

我想使用Webpack 4来单独转换我的ES6 Javascript与Sass分开:

  • src/js/index.js→static/js/index.js
  • src/css/style.scss→static/css/style.css

目前我的webpack配置似乎正确地将javascript转换为bundle.js但我无法正确地将我的SCSS转换为CSS.

我肯定会尝试以某种方式调试,但由于我对Webpack内部非常无知,我不知道该怎么做.

关注我的webpack.config.js:

const ExtractTextPlugin = require('extract-text-webpack-plugin');
const path = require('path');

module.exports = {

  mode: 'development',

  entry: {
    bundle: './src/js/index.js',
  },

  output: {
    filename: '[name].js',
    path: path.resolve('static/js')
  },

  module: {
    rules: [{
      test: /\.scss$/,
      use: ExtractTextPlugin.extract({
        fallback: 'style-loader',
        use: [
          { loader: "css-loader" },     
          { 
            loader: "sass-loader",
            options: {
              includePaths: [
                path.resolve("./src/css")
              ]
            }
          },
        ]
      }),
    }]
  },

  plugins: [
    new ExtractTextPlugin({
      filename: path.resolve('static/css/style.css')
    })
  ],
}
Run Code Online (Sandbox Code Playgroud)

webpack

9
推荐指数
2
解决办法
7024
查看次数

当 Dockerfile 命令被缓存时

我试图了解 docker 缓存对于哪些类型的命令是危险的。

这里有一些例子以及我相信会发生的事情。

在我看来,这将始终使用缓存。我关心的?
并不是真的,因为如果以前缓存安装的curl版本使我的图像正常工作,它应该仍然可以工作:

RUN apt-get update && apt-get install --no-install-recommends -yy curl
Run Code Online (Sandbox Code Playgroud)

仅当requirements.txt 与之前相同时,此 COPY 命令才会使用缓存:

COPY ./requirements.txt /opt/client_web/requirements.txt
Run Code Online (Sandbox Code Playgroud)

仅当 /opt/client_web/requirements.txt 的内容与之前完全相同时,此 RUN 命令才会缓存,否则将不会使用缓存:

RUN python3 -m pip install --default-timeout=100 -r /opt/client_web/requirements.txt
Run Code Online (Sandbox Code Playgroud)

这个 RUN 命令可能会一直缓存,这是可以的。当然,如果更新版本的 pip 发布,我不会得到它:

RUN curl https://bootstrap.pypa.io/get-pip.py > get-pip.py && python3 get-pip.py
Run Code Online (Sandbox Code Playgroud)

上述说法正确吗?

如果是的话,我们是否可以说只有当命令不涉及文件更改时才使用docker缓存?

caching docker

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

使用HttpOnly Cookie的django-rest-framework

在以不安全的方式使用djangorestframework-jwt一年后,我终于决定我希望以一种更安全的方式使其工作。

我到处都读到了在本地客户端(例如,本地存储)中保存JWT令牌的方法不好,最好的解决方案是使用HttpOnly cookie。

我知道HttpOnly cookie确实是一个cookie,可以保存但不能被浏览器读取。所以我认为它可以像下面这样使用:

  • get_token:客户端通过发送用户名和密码来向服务器请求授权令牌:如果用户名和密码有效,则服务器将使用httpOnly cookie进行响应,该cookie可以存储但不能被客户端读取。
  • 从现在起,客户端执行的每个请求都将得到授权,因为HttpOnly cookie内有一个有效的授权令牌。
  • refresh_token:客户端需要刷新令牌后,只需要请求refresh_token:如果发送的cookie包含有效令牌,则服务器将使用新令牌响应更新的HttpOnly cookie。

我现在正尝试通过使用HttpOnly cookie来使用djangorestframework-jwt,而JWT_​​AUTH_COOKIE配置似乎是最合适的配置:

如果除了授权标头之外还想使用http cookie作为令牌的有效传输方式,则可以设置JWT_AUTH_COOKIE字符串。您在此处设置的字符串将用作在请求令牌时将在响应标头中设置的cookie名称。令牌验证过程还将调查此cookie(如果已设置)。如果请求中同时包含标头和cookie,则“授权”标头具有优先权。

默认值为“无”,创建令牌时不设置cookie,或在验证令牌时不接受。

将字符串值赋予JWT_AUTH_COOKIE之后,我收到了预期的httpOnly cookie。

问题:

当我调用refreshToken时,得到以下响应:

{"token":["This field is required."]}
Run Code Online (Sandbox Code Playgroud)

是的,我没有在请求的HEADER中发送任何令牌,这就是我想要的,因为客户端不应该将其保存在任何地方。

这就是我感到困惑的地方:

如果我从现在开始对客户端对服务器的每个请求都没错,则应将cookie添加到请求中。

看到标题中没有传递令牌后,服务器是否应该检查Cookie?如果不是这样,应该如何工作?

jwt django-rest-framework

5
推荐指数
2
解决办法
478
查看次数

Django Postgres 内存泄漏

我有一个自定义 Django (v 2.0.0) 命令以多线程方式启动后台作业执行器,这似乎给我带来了内存泄漏问题。

该命令可以像这样启动:

./manage.py start_job_executer --thread=1
Run Code Online (Sandbox Code Playgroud)

每个线程都有一个 while True 循环,用于从 PostgreSQL 表中获取作业。

为了继续工作并自动更改状态,我使用了事务:

./manage.py start_job_executer --thread=1
Run Code Online (Sandbox Code Playgroud)

Il 看起来这个 Django 自定义命令分配的内存不断增长。

使用tracemalloc,我尝试通过创建一个检查内存分配的后台线程来查找导致内存泄漏的原因:

# atomic transaction to temporary lock the db access and to
# get the most recent job from db with column status = pending
with transaction.atomic():
    job = Job.objects.select_for_update() \
        .filter(status=Job.STATUS['pending']) \
        .order_by('created_at').first()
    if job:
        job.status = Job.STATUS['executing']
        job.save()
Run Code Online (Sandbox Code Playgroud)

查找到如下日志:

def check_memory(self):
        while True:
            s1 = tracemalloc.take_snapshot()
            sleep(10)
            s2 = tracemalloc.take_snapshot()
            for alog in s2.compare_to(s1, 'lineno')[:10]: …
Run Code Online (Sandbox Code Playgroud)

python django postgresql multithreading memory-leaks

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

ReactTable:根据容器高度更改页面大小#552

我已经完成了基于实时可调整大小的容器来更改pageSize的工作:在更改页面之前,它可以很好地工作。

更改页面后,如果减小容器的高度,则表格的高度不能低于更改页面时的高度。

换句话说,当我更改页面时(例如,从第1页更改为第2页),假设高度为360px,带有约12行,如果我走得更高,则会平滑地“添加” 360px行,但是当我低于360px时,桌子的高度不再改变。

注意:更改页面之前,所有操作均正常进行。

在此处输入图片说明

export default class Table extends React.Component {

  constructor() {
    ...
  }

  componentWillReceiveProps(newProps) {
    if (this.props.y != newProps.y) {
      // size row
      let rowHeight = 32.88;
      // size resizable panel
      let panelHeight = newProps.y;
      // size of the extra y of the table (header + footer)
      let extraTable = 27 + (this.props.x < 650 ? 75 : 45);
      // setting pageSize of the table
      this.setState({pageSize: parseInt((panelHeight - extraTable) / rowHeight)});
    }
  }

  render() {
    return ( …
Run Code Online (Sandbox Code Playgroud)

reactjs react-table

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

ReduxForm:从mapStatetoProps传递initialValues

我正在尝试获取表单设置的initialValues如下,但它不起作用:

const mapStateToProps = (state, props) => ({
  initialValues: state.charts[props.resourceId],
});

const mapDispatchToProps = ...

export default reduxForm({ 
  form: 'ChartForm',
})(connect(mapStateToProps, mapDispatchToProps)(ChartForm));
Run Code Online (Sandbox Code Playgroud)

当然,如果我做这样的事情会起作用:

export default reduxForm({ 
      form: 'ChartForm',
      initialValues: {
          title: "Some Title",
          ...
      }
})(connect(mapStateToProps, mapDispatchToProps)(ChartForm));
Run Code Online (Sandbox Code Playgroud)

这不是我需要的.我需要从我的商店中的资源获取初始值id == this.props.resourceId

有人能指出第一个解决方案有什么问题吗?

redux redux-form

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

卷入功能和ES6破坏

我正在测试一些currying-in功能,我可以很容易地让它工作:

test = (a) => { return (b) => a+b } // test(5)(6) => 11
Run Code Online (Sandbox Code Playgroud)

使用ES6 destructing参数时,我无法使用相同的功能:

test = ({a}) => { return (b) => a+b } // test(5)(6) => NaN 
Run Code Online (Sandbox Code Playgroud)

有没有办法让它发挥作用?为什么第二个测试功能不起作用?

javascript currying destructuring

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

Peewee Sqlite 共享内存数据库

阅读这篇文章,我了解到可以跨线程共享内存数据库:

/sf/answers/1729572141/

使用 sqlite python 包我可以这样做:

sqlite3.connect('file:foobar_database?mode=memory&cache=shared', uri=True)
Run Code Online (Sandbox Code Playgroud)

在 Peewee 中如何做到这一点?我找不到任何描述它的文档。

sqlite multithreading in-memory-database peewee

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