小编m0m*_*eni的帖子

什么时候在流中使用类型别名的接口?

在interface和type声明似乎做同样的事情.你什么时候用另一个?

type Fooable = {
  foo(): string
}
Run Code Online (Sandbox Code Playgroud)

VS

interface Fooable {
 foo(): string
}
Run Code Online (Sandbox Code Playgroud)

javascript flowtype

24
推荐指数
1
解决办法
2299
查看次数

以S3网站为原点的CloudFront不提供gzip压缩文件

AWS现在支持通过CloudFront gzipping文件

我已经按照服务压缩文件中的所有说明进行操作,但是gzipping不起作用.

我将一个S3存储桶设置为CloudFront用作源的网站.

  • Compress Objects Automatically 已启用
  • 我正在使用正确的内容类型提供文件,例如application/javascript和text/css
  • 这些文件在1,000和10,000,000字节之间
  • Content-Length据我所知,S3网站提供的文件
  • 为了更加确定没有缓存任何内容,我都使整个S3存储桶失效并将更新版本的文件上传到S3.
  • 此外,我使用的网络浏览器Chrome也接受gzip压缩文件.

尽管如此,我还是无法工作.我已经完成了包括SSL在内的所有其他工作,您可以访问以下网站:https://formulagrid.com/

如果你打开chrome控制台,你会注意到从S3提供的文件都没有被gzip压缩.唯一的gzip压缩文件,如谷歌字体是我从其他CDN抓取的.

gzip amazon-s3 amazon-web-services amazon-cloudfront

22
推荐指数
3
解决办法
3232
查看次数

如何从作为nodejs服务器的反向代理的nginx服务器提供静态文件?

我目前的nginx配置是这样的:

upstream nodejs {
    server 127.0.0.1:3000;
}

server {
    listen 8080;
    server_name localhost;
    root ~/workspace/test/app;
    index index.html;

    location / {
        proxy_pass http://nodejs;
        proxy_set_header Host $host ; 
        proxy_set_header X-Real-IP $remote_addr; 
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
Run Code Online (Sandbox Code Playgroud)

我对nginx非常新,但至少我知道nginx在提供静态文件方面比node/express更好.如何配置服务器以便nginx提供静态文件?

nginx node.js

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

冷观察的用例是什么?

我理解冷热观察的区别,但我总是看到人们使用热的观察而不是冷; 事实上,如果有人意外地使用冷观察,那么它被认为是一个错误,因为它通常是不良行为的原因.

在热门的情况下,您更喜欢或使用冷观察的情况是什么?

javascript observable rxjs

16
推荐指数
2
解决办法
495
查看次数

在docker入口点bash脚本的行开头的冒号

我正在查看docker脚本的入口点脚本,他们有以下几行(53-54)

: ${POSTGRES_USER:=postgres}
: ${POSTGRES_DB:=$POSTGRES_USER}
Run Code Online (Sandbox Code Playgroud)

我看到这个帖子的目的是什么:(冒号)GNU Bash内置?

并且能够找出:意味着真实并且:=用于分配默认值,但它并没有真正触及:至少对于这种特定情况在该行开头的内容.

bash docker

15
推荐指数
1
解决办法
2945
查看次数

使用带有异步函数和.then的MobX @action装饰器

我正在使用MobX 2.2.2尝试在异步操作中改变状态.我将MobX的useStrict设置为true.

@action someAsyncFunction(args) {
  fetch(`http://localhost:8080/some_url`, {
    method: 'POST',
    body: {
      args
    }
  })
  .then(res => res.json())
  .then(json => this.someStateProperty = json)
  .catch(error => {
    throw new Error(error)
  });
}
Run Code Online (Sandbox Code Playgroud)

我明白了:

Error: Error: [mobx] Invariant failed: It is not allowed to create or change state outside an `action` when MobX is in strict mode. Wrap the current method in `action` if this state change is intended
Run Code Online (Sandbox Code Playgroud)

我是否需要将@action装饰器提供给第二个.then语句?任何帮助,将不胜感激.

javascript mobx

14
推荐指数
2
解决办法
4391
查看次数

默认情况下,方法中的指针是否被取消引用?

我对Go中结构的方法感到困惑.我一直在他们的教程中跟随:

func (p *Page) save() error {
    filename := p.Title + ".txt"
    return ioutil.WriteFile(filename, p.Body, 0600)
}
Run Code Online (Sandbox Code Playgroud)

根据我的理解,p是指针,你需要在检索属性之前取消引用指针,例如:

filename := (*p).Title + ".txt"
Run Code Online (Sandbox Code Playgroud)

对我来说唯一有意义的方法是点如果像->C++一样.我错过了什么?

pointers go

12
推荐指数
1
解决办法
3884
查看次数

fmap和bind之间的能力差异?

我是函数式编程的新手(来自javascript),我很难分辨两者之间的区别,这也搞砸了我对functor与monads的理解.

仿函数:

class Functor f where
    fmap :: (a -> b) -> f a -> f b
Run Code Online (Sandbox Code Playgroud)

Monad(简化):

class Monad m where
    (>>=) :: m a -> (a -> m b) -> m b
Run Code Online (Sandbox Code Playgroud)
  • fmap 接受函数和仿函数,并返回一个仿函数.
  • >>= 接受一个函数和一个monad,并返回一个monad.

两者之间的区别在于函数参数:

  • fmap - (a -> b)
  • >>= - (a -> m b)

>>=获取一个返回monad的函数参数.我知道这很重要,但是我很难看到这个轻微的东西如何使monad比functor强大得多.谁能解释一下?

monads haskell functional-programming functor

12
推荐指数
2
解决办法
2178
查看次数

用express + webpack-dev-middleware/webpack-hot-middleware替换webpack-dev-server

我目前正在尝试使用基于express + webpack-middleware的更强大的解决方案来替换使用webpack-dev-server的旧设置.所以我用它来运行它:"webpack-dev-server --content-base public/--history-api-fallback"但现在我想像这样使用它:"node devServer.js".以下是我当前设置的详细信息.

webpack.config.dev.js:

var path = require('path');
var webpack = require('webpack');
var debug = require('debug');

debug.enable('app:*');

var log = debug('app:webpack');

log('Environment set to development mode.');
var NODE_ENV = process.env.NODE_ENV || 'development';
var DEVELOPMENT = NODE_ENV === 'development';

log('Creating webpack configuration with development settings.');
module.exports = {
  devtool: 'cheap-module-eval-source-map',
  entry: [
    'eventsource-polyfill', // necessary for hot reloading with IE
    'webpack-hot-middleware/client',
    './src/index',
    './src/scss/main.scss',
  ],
  output: {
    path: path.join(__dirname, 'public/js'),
    filename: 'bundle.js',
    publicPath: '/'
  },
  plugins: [
    new webpack.HotModuleReplacementPlugin(), …
Run Code Online (Sandbox Code Playgroud)

javascript express webpack webpack-dev-server

10
推荐指数
1
解决办法
1万
查看次数

在队列的关键部分使用二进制信号量而不是互斥量进行互斥是否有任何优势?

对于OS类,我当前必须在linux内核中创建一个线程安全队列,该队列使用系统调用进行交互.

现在对于关键部分,我的直觉是我想要使用标题中的mutex_lock和mutex_unlock函数mutex.h.但是,有人告诉我,我可以改用二进制信号与down_interruptible和up的semaphore.h头,并且它会更好.

我已经阅读了二进制信号量和互斥量之间的区别:从中我了解到,互斥体的主要优点是它强制执行所有权的强度,以及信号量的优势在于,因为它不强制实施所有权,所以您可以使用它作为两个(多个?)不同线程之间的同步机制.

我的问题是二进制信号量的优点是什么,如果你以与互斥量完全相同的方式使用它.如果我写的话更明确:

down()
/* critical */
up()
Run Code Online (Sandbox Code Playgroud)

就像我一样

mutex_lock()
/* critical */
mutex_unlock()
Run Code Online (Sandbox Code Playgroud)

是否有一些性能优势,因为它不如互斥锁安全?我错过了什么吗?


如果你想要更多的上下文(这是我的第一个C proj),这里有一小段我想要线程安全的代码片段:

#define MESSAGE_MAX_SIZE 512

typedef struct list_head list_node;

/* Create message struct */
typedef struct {
  size_t size;
  list_node node;
  char data[MESSAGE_MAX_SIZE];
} Message;

/* Create the linked list queue with dummy head */
struct {
  size_t size;
  list_node head;
} my_q = { 0, LIST_HEAD_INIT(my_q.head) };

/*
  Adds …
Run Code Online (Sandbox Code Playgroud)

c multithreading mutex semaphore linux-kernel

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