小编Ari*_*zer的帖子

PHP5.3中的自执行功能?

我试图从JS到PHP借用一些编程范例(只是为了好玩).有办法吗?

$a = (function(){
  return 'a';
})();
Run Code Online (Sandbox Code Playgroud)

我当时认为用这个组合use可以很好地隐藏变量JS样式

$a = (function(){
    $hidden = 'a';
    return function($new) use (&$hidden){
        $hidden = $new;
        return $hidden;
    };
})();
Run Code Online (Sandbox Code Playgroud)

现在我需要这样做:

$temp = function(){....};
$a = $temp();
Run Code Online (Sandbox Code Playgroud)

这似乎毫无意义......

php lambda closures php-5.3

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

如何将Redux与非常大的数据集和IndexedDB集成

我有一个使用同步API来获取其数据的应用程序,并且需要在本地存储所有数据.数据集本身非常大,我不愿意将它存储在内存中,因为它可以包含数千条记录.由于我不认为实际的数据结构是相关的,让我们假设我正在构建一个需要离线访问的电子邮件客户端,并且我希望我的存储机制是IndexedDB(它是异步的).

我知道一个简单的解决方案是不将数据结构作为我的状态对象的一部分,并且仅使用所需数据填充状态(例如,当触发EMAIL_OPEN操作时将电子邮件内容存储在状态中).这很简单,特别是对于redux-thunk.

但是,这意味着我需要妥协两件事:

  1. 用户数据不再是"应用程序状态"的一部分,尽管事实确实如此.由于同步行为很复杂,将其从app状态机中删除会损害redux概念的优雅(我理解它们的方式)
  2. 我非常喜欢redux架构,并希望我的所有逻辑都能通过它,而不仅仅是视图状态.

有关如何将redux与非内存状态属性一起使用的最佳实践吗?我发现最难解决的问题是redux依赖于同步API,因此我无法用异步状态对象替换我的状态对象(除非我完全删除redux并将其替换为我自己的异步实现和连接器).

我找不到使用谷歌的答案,但如果已经有很好的资源,我也很乐意指出.

更新:问题得到了回答,但想要更好地解释我是如何实现它的,以防有人遇到它:

主要思想是使用简单的redux reducer维护客户端和服务器的更改列表,并使用连接器监听这些更改列表以更新IDB,并使用客户端更改来更新服务器:

  1. 客户端进行更改时,使用reducers更新客户端更改列表.
  2. 当服务器发送更新时,使用reducers更新服务器更改列表.
  3. 连接器侦听存储,并在状态更改时更新IDB.还维护已修改的项目的内部列表.
  4. 更新服务器时,使用已修改项目列表从IDB中提取增量并发送到服务器.
  5. 访问数据时,使用正常操作从IDB中提取(例如使用redux-thunk)

这种方法唯一需要注意的是,由于真实状态存储在IDB中,因此我们确实失去了拥有一个状态对象的一些价值(并且更难以倒带/快进状态)

javascript redux

32
推荐指数
1
解决办法
7338
查看次数

检查类是否是另一个类的子类

我想在不创建实例的情况下检查类是否是另一个类的子类.我有一个类作为参数接收类名,作为验证过程的一部分,我想检查它是否属于特定的类系列(以防止安全问题等).这样做有什么好办法吗?

php oop inheritance class

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

浏览器在使用CORS XHR时不发送cookie

编辑 - 使用Chrome网络检查器查看Cookie,似乎无论Cookie的过期价值是什么,浏览器都会将其设置为会话Cookie并根据请求删除它.

我正在使用Node.js和Express为我正在教授的课程构建一个CORS示例.

但是,尽管从服务器设置了cookie,但它们不会在以下请求中发送回服务器.这几乎意味着我不能使用任何简单的会话管理器.

知道我在这里缺少什么吗?为什么浏览器不将域设置的cookie发送回该域?这不应该自动发生吗?

编辑 - 一些代码示例:设置XHR请求:

var xhr = new XMLHttpRequest();

xhr.open(method, url, true);
xhr.widthCredentials = true;

xhr.onreadystatechange = function(res){
    if (xhr.readyState == 4){
        cb(res,xhr);
    }
};

xhr.setRequestHeader("Content-Type",'application/json');

xhr.setRequestHeader('Accept','application/json');

xhr.send(JSON.encode({param:some_param})); 
Run Code Online (Sandbox Code Playgroud)

服务器:

function allowCrossDomain(req,res,next) {  
    res.header('Access-Control-Allow-Credentials', true);
    res.header('Access-Control-Allow-Origin', req.headers.origin);
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
    res.header('Access-Control-Allow-Headers', 'Content-Type,Accept,X-Requested-With');

    if (req.method!='OPTIONS') return next();

    res.send(204);
}                 

//while configuring express
app.use(allowCrossDomain)
Run Code Online (Sandbox Code Playgroud)

值得一提的是,我尝试过各种npm中间件,这些中间件做同样的事情而没有可观察到的差别

至于场景:

  1. 使用XHR发出CORS请求
  2. 服务器设置一个cookie,正在成功发送回客户端(快速会话cookie)
  3. 下一个XHR请求不会将该cookie发送回服务器,因此express无法识别用户,因此会创建新的会话cookie等等.

javascript node.js cors express

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

React native需要很长时间才能加载到设备上

我一直在使用模拟器开发一个本机应用程序.在模拟器(iOS)上,应用程序加载速度非常快(例如在重新加载时).但是,当我尝试将应用程序加载到设备时,它会在启动画面中花费1-3分钟,然后再加载到应用程序中.

我的项目相当小,除了javascript之外没有额外的资源.看看文档,我找不到可能导致问题的原因,但我怀疑它与没有从打包器本地服务器获取JS这一事实有关.

我究竟做错了什么?

(顺便说一句 - react-native v0.31)

react-native

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

如何在打字稿中导出重载函数

我有一个想要重载的函数,以便它arg2根据 的值arg1(有一个已知值列表)知道 的类型。

一个非常粗略的例子来演示我正在尝试做的事情:

interface CatArgs {legs : number}

interface FishArgs {fins: number}

type CarOrFishArgs = CatArgs | FishArgs;
type Animal = Cat | Fish;

type Type = 'Cat' | 'Fish';

class Cat{
    constructor(args:CatArgs){}
}

class Fish {
    constructor(args:FishArgs){}
}

export declare function getAnimal(type:'Cat', args:CatArgs): Cat;
export declare function getAnimal(type:'Fish', args:FishArgs): Fish;

export function getAnimal(type:Type, args:CarOrFishArgs): Animal {
    switch (type) {
        case 'Cat':
            return new Cat(args as CatArgs);
        case 'Fish':
            return new Fish(args as FishArgs);
    } …
Run Code Online (Sandbox Code Playgroud)

typescript

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

如何在cygwin上安装mysql?

我一直在尝试在我的cygwin上安装mysql.在repo上没有这个包,所以我想我会编译一个,但我无法弄清楚我需要使用哪个包,也不知道我应该发送哪些选项./configure

有小费吗?

mysql cygwin

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

使用正则表达式仅用JS替换最后一次出现的模式

我有一个案例,我试图用另一个模式替换某个模式.我的问题是我只需要替换该模式的最后一次出现,而不是全部.我发现了这个问题:

如何使用javascript替换字符串中最后出现的字符

但它不符合我的需要.作为背景,我会说我正在尝试替换CSS规则,但是对于当前示例,我们来看看这个文本:

abcd:bka:

bbb:aad:

accx:aaa:

bbb:a0d:

cczc:aaa:
Run Code Online (Sandbox Code Playgroud)

假设我只想替换bbb的值.我现在的规则是

text.replace(/(\s*bbb:)([^:]+)/,"$1aaa")
Run Code Online (Sandbox Code Playgroud)

但它只会取代第一场比赛,而我希望它取代最后一场比赛.我目前的模式实际上比这个更复杂,但我认为伪问题就足够了.

javascript regex

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

我如何获取文件的绝对路径

说我有一个文件 /var/www/foo/test.php

我如何从中发现它的路径.我正在尝试创建一个"添加到包含路径"操作,为此我需要绝对路径.

php

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

如何将bash命令的输出作为参数传递给另一个?

我有一个程序,它返回一个文件名列表.我需要将这些文件的内容传递给另一个程序.

我知道如何使用cat传递内容:

cat file1 file2 file3 | some_program
Run Code Online (Sandbox Code Playgroud)

我想做的是:

list=`get_file_list`
cat ${list} | some_program
Run Code Online (Sandbox Code Playgroud)

虽然执行上述操作只会传递列表变量的内容,而不是文件的内容.

bash

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

如何在 IndexedDB 中创建具有多个条件的查询

我有一个商店,其中有多个我想要查询的索引。为了举例,我们假设我有一个消息存储,其中包含 user_id 索引和 create_date (时间戳)(并且假设我有索引 - user_id / create_date / user_id, create_date

我知道如何通过 id 查询用户:

var range = IDBKeyRange.only('123');
store.index('user_id').openCursor(range).onsuccess= function(e){....};
Run Code Online (Sandbox Code Playgroud)

我知道如何按日期查询:

var range = IDBKeyRange.lowerBound(Date.now()-24 * 60 * 1000))
store.index('create_data').openCursor(range).onsuccess = function(e){....};
Run Code Online (Sandbox Code Playgroud)

购买我不知道如何一起查询两者。我知道我可以使用 JS 解析两者中任何一个的结果,但我想知道是否可以使用 IDB 来做到这一点。


编辑-我想做的伪查询是

user_id=123 AND create_date < (NOW() - 24 * 60 * 1000)
Run Code Online (Sandbox Code Playgroud)

谢谢!

javascript indexeddb

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

如何获取gulp + babel + browserify + uglify的源图

我正在使用gulp将browserify + babelify与uglifyjs捆绑在一起.但是,从我的项目生成的源图只给了我捆绑的版本,而不是捆绑的版本.

这是我的设置:

var gulp       = require('gulp'),
    source     = require('vinyl-source-stream'),
    browserify = require('browserify'),
    gutil      = require('gulp-util'),
    buffer     = require('vinyl-buffer'),
    sourcemaps = require('gulp-sourcemaps'),
    uglify     = require('gulp-uglify'),
    file       = 'index.js';

gulp.task('build', function(){
    return browserify({
        entries: [file],
        transform: ["babelify"]
      })
    .bundle()
    .pipe(source(file))
    .pipe(buffer())
    .pipe(sourcemaps.init({loadMaps: true}))
    .pipe(uglify())
    .pipe(sourcemaps.write('./'))
    .pipe(gulp.dest('./public/js'))
    .pipe(gutil.noop())
})
Run Code Online (Sandbox Code Playgroud)

有没有办法让我创建一个捆绑babel => browserify => uglify并仍然将地图返回给我的pre-babel文件的构建?

我也不介意不使用gulp(我实际上更喜欢咕噜声,但这个设置过去常常适合我).

uglifyjs browserify gulp babeljs

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