小编ham*_*son的帖子

使用带有ES6发生器的redux-saga与带有ES2017异步/等待的redux-thunk的优点/缺点

现在有很多关于redux镇最新孩子的讨论,redux-saga/redux-saga.它使用生成器函数来监听/调度操作.

在我绕过它之前,我想知道redux-saga使用redux-thunkasync/await时使用的优点/缺点而不是下面的方法.

组件可能看起来像这样,像往常一样调度动作.

import { login } from 'redux/auth';

class LoginForm extends Component {

  onClick(e) {
    e.preventDefault();
    const { user, pass } = this.refs;
    this.props.dispatch(login(user.value, pass.value));
  }

  render() {
    return (<div>
        <input type="text" ref="user" />
        <input type="password" ref="pass" />
        <button onClick={::this.onClick}>Sign In</button>
    </div>);
  } 
}

export default connect((state) => ({}))(LoginForm);
Run Code Online (Sandbox Code Playgroud)

然后我的行为看起来像这样:

// auth.js

import request from 'axios';
import { loadUserData } from './user';

// define constants
// define initial state
// export default reducer …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs redux redux-thunk redux-saga

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

SVG元素的水平有序装箱

试图找出最好的方法,将装箱后的已知宽度的svg图像打包/分布在水平行中,如果容器的宽度太紧,可以将它们堆叠在一起。

容器的高度应最佳地自动调整,并且重力应为垂直中心点。创建了一些图像来说明所需的解决方案。

有没有解决这个问题的JS库,也许是d3?感觉上像是一个装箱问题,但也许在顺序和重力方面增加了一些复杂性。对画布解决方案不感兴趣。

如果容器足够宽

太紧,堆叠一些元素

更紧密地堆叠所有

javascript svg bin-packing d3.js

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

在本地测试Google Cloud PubSub推送端点

试图找出在本地测试PubSub推送端点的最佳方法.我们尝试使用ngrok.io,但您必须拥有该域才能进行白名单(这样做的工具也会被破坏...导致无限重定向循环).我们还尝试在本地模拟PubSub.我能够发布和拉取,但我不能让推送订阅工作.我们正在使用像这样的本地Flask网络服务器:

@app.route('/_ah/push-handlers/events', methods=['POST'])
def handle_message():
    print request.json
    return jsonify({'ok': 1}), 200
Run Code Online (Sandbox Code Playgroud)

以下产生无结果:

client = pubsub.Client()
topic = client('events')
topic.create()
subscription = topic.subscription('test_push', push_endpoint='http://localhost:5000/_ah/push-handlers/events')
subscription.create()
topic.publish('{"test": 123}')
Run Code Online (Sandbox Code Playgroud)

当我们尝试创建对HTTP端点的订阅时,它会对我们大喊大叫(如果您不使用HTTPS,则会显示实时PubSub).也许这是设计的?Pull工作得很好......关于如何最好地开发PubSub的任何想法在本地推送端点?

google-cloud-pubsub

14
推荐指数
1
解决办法
1532
查看次数

从网上播放时是否可以更改iOS 8锁屏音频标签?

我正在构建一个播放音频的HTML5应用.但是,在锁定屏幕模式下在iOS8 iPad/iPhone上播放音频时,会显示音频的URL(参见下图).如果可以将该文本更改为更具描述性的内容,例如轨道的艺术家/标题,那将是很棒的.逻辑解决方案是从title属性或某些特定于苹果的元标记中读取,但我尝试的任何内容似乎都无效.

有谁知道文本是否可以用html/javascript改变?

iPad锁屏

audio html5 lockscreen ios ios8

11
推荐指数
1
解决办法
2666
查看次数

Bash提示换行问题

新手问题,我最近改变了我的PS1:

RESET="\[\017\]"
NORMAL="\[\033[0m\]"
YELLOW="\[\033[0;33m\]"
CYAN="\[\033[0;36m\]"

export PS1="\[$RESET\]\u@\h:\[$CYAN\]\w\[$YELLOW\]\$(__git_ps1)\[$NORMAL\] \$ "
Run Code Online (Sandbox Code Playgroud)

但现在我得到一个换行错误.我创建了一个gif来解释这个问题:

在此输入图像描述

什么想法可能是错的?

macos bash command-prompt ps1

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

如何在公共事件属性上连接两个事件流?

考虑以下两个事件流.每个事件都有timestamp/ts和value属性.

输入流

我想将事件具有相同时间戳的这两个流组合到一个带有应用的值转换的结果流中.如果一个流丢失了一个时间戳(ts=3例如下面示例中的黄色),则应忽略该时间戳.

在此输入图像描述

想使用诸如xstreamrxjs之类的反应式编程库来解决问题.我对反应式编程的概念很陌生,但如果有人有另一个建议,我会全神贯注.谢谢!

javascript xstream reactive-programming node.js rxjs

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

每次使用路由器时,Backbone.js都会触发功能

只是想知道每次使用Backbone.js路由器时是否有一种简单的方法来触发自定义功能,而无需在每个路由器功能中添加它.现在我的脚本看起来像这样:

var AppRouter = Backbone.Router.extend({

    routes: {
        '' : 'index',
        'test': 'test',
    },

    initialize: function() {
    },

    index: function() {
        customFunction();
        indexView.render();
    },

    test: function() {
        customFunction();
        testView.render();
    },

});
Run Code Online (Sandbox Code Playgroud)

我想要这样的东西:

var AppRouter = Backbone.Router.extend({

    routes: {
        '' : 'index',
        'test': 'test',
    },

    initialize: function() {
    },

    index: function() {
        indexView.render();
    },

    test: function() {
        testView.render();
    },

    change: function() { 
        customFunction();
    }

});
Run Code Online (Sandbox Code Playgroud)

有没有人有什么建议?

javascript backbone.js

7
推荐指数
2
解决办法
8124
查看次数

保护ajax请求完整性的最佳方法

我正在构建一个Drupal网站,其中包含许多用户特定的信息,这些信息将使用jQuery/ajax发布.它本身的信息不是很敏感,重要的是验证表单数据没有被Firebug等工具篡改,以及确保指定用户真正请求信息.换句话说,我试图找出使用ajax发布时保护数据完整性和真实性的最佳方法.

理想情况下,我想使用一些众所周知的消息认证系统,如HMAC算法.但由于这包含了一个对称密钥,我不知道如何在不暴露我的javascript文件中的密钥的情况下加密POST数据(显然任何人都可以看到).

如果我对如何运作有错误的想法,请纠正我.

例如,我需要发送的信息

field1=x&field2=y&uid=10
Run Code Online (Sandbox Code Playgroud)

...然后计算数据的哈希值和密钥.这可能不在我的javascript代码中暴露哈希函数吗?

CHECKSUM: hash(postdata, "secret_key")
Run Code Online (Sandbox Code Playgroud)

...最后将校验和附加到原始postdata.

field1=x&field2=y&uid=1&c=CHECKSUM
Run Code Online (Sandbox Code Playgroud)

替代

我可以选择使用登录用户的会话ID.然而,这不会检查消息的完整性......

使用PHP生成表单时,我可以使用以下内容生成隐藏的输入

CHECKSUM: hash(session id for the current user, "secretkey")
Run Code Online (Sandbox Code Playgroud)

然后我将使用ajax发布的是

field1=x&field2=y&uid=10&c=CHECKSUM
Run Code Online (Sandbox Code Playgroud)

有了它,验证适当的用户(再次伪代码)是相当安全的

ssid = SELECT ssid FROM sessions WHERE uid = $_POST[uid]
if(ssid && hash(ssid, "secretkey") == $_POST[c]) {
     //User OK
} else {
     //Invalid user
}
Run Code Online (Sandbox Code Playgroud)

javascript php security ajax drupal

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

用于下采样间隔阵列的算法

我有一个不同长度的N个区间的排序数组.我正在用蓝色/绿色交替颜色绘制这些间隔.

我试图找到一种方法或算法来"下采样"间隔数组,以产生视觉上相似的图,但元素较少.

理想情况下,我可以编写一些函数,我可以将目标输出间隔数作为参数传递.输出长度只需接近目标.

input = [
  [0, 5, "blue"],
  [5, 6, "green"],
  [6, 10, "blue"],
  // ...etc
]

output = downsample(input, 25)
// [[0, 10, "blue"], ... ]
Run Code Online (Sandbox Code Playgroud)

下面是我想要完成的图片.在这个例子中,输入有大约250个间隔,输出大约有25个间隔.输入长度可能会有很大差异.

在此输入图像描述

algorithm downsampling intervals

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

双平方最大包装的图算法

我有一个连接方块的区域(img在左边),并且想要找到可以装入该区域的最大数量的"双"方块(img在右边).

我的方法是将原始区域表示为图形,其中每个方块表示由边缘连接到下方,上方,左侧和/或右侧的正方形的顶点.

我认为可以通过使用BFS算法,检查每个顶点和应用颜色来完成.但我也觉得可以用动态编程完成......我需要一些帮助!

在此输入图像描述在此输入图像描述

algorithm graph graph-algorithm

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

SQL加入两个视图

加入这两个表需要一些帮助

我有两个看起来像这样的观点

view1                view2
+------+--------+    +------+--------+
| code | SUM(*) |    | code | SUM(*) |
+------+--------+    +------+--------+
| AAA  |      4 |    | AAA  |      4 |
| BBB  |      3 |    | CCC  |      1 |
+------+--------+    +------+--------+
Run Code Online (Sandbox Code Playgroud)

我想将它们加入到一个看起来像这样的表中

+------+--------+
| code | SUM(*) |
+------+--------+
| AAA  |      4 |
| BBB  |      3 |
| CCC  |      1 |    
+------+--------+ 
Run Code Online (Sandbox Code Playgroud)

我试过了,但只是失败了......

sql database join views

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

Backbone.js从视图内的视图触发事件

无法让下面的代码工作.

我试图从具有自己的事件对象的渲染子视图中触发事件.

是否有可能以简单的方式做到这一点?

var SubView = Backbone.View.extend({
    events: {
      'click .subview-item a': 'test'
    },
    el: '#subview',
    test: function() {
      console.log('please print this...');
    },
    initialize: function() {
      this.template = '<div class="subview-item"><a href="#">Clickable Subview</a></div>'
    },
    render: function(){
      $(this.el).html(_.template(this.template));
      return this;
    }
});

var MainView = Backbone.View.extend({
    el: $('#content'),
    initialize: function(){
      this.template = '<h1>Hello</h1><div id="subview"></div>';
      this.subView = new SubView();
    },
    render: function(){
      $(this.el).html(_.template(this.template));
      this.subView.render();
      return this;
    }
});

var mainView = new MainView({});
mainView.render();
Run Code Online (Sandbox Code Playgroud)

有任何想法吗??

javascript backbone.js

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