小编Sha*_*lav的帖子

如何用jQuery检查文件输入大小?

我有一个具有文件上传功能的表单,如果用户尝试上传的文件太大,我希望能够有一些不错的客户端错误报告,有没有办法用jQuery检查文件大小,要么纯粹在客户端或以某种方式将文件发回服务器进行检查?

javascript jquery file-upload

128
推荐指数
5
解决办法
30万
查看次数

如何在前端使用OAuth成功验证后与后端进行交互?

我想构建小型应用程序.会有一些用户.我不想创建自己的用户系统.我想将我的应用程序与oauth/oauth2.0集成.

集成我的前端应用程序和oauth 2.0没有问题.有很多有用的文章,如何做到这一点,甚至在stackoverflow.com上.例如,这篇文章非常有帮助.

但.成功授权前端后我该怎么办?当然,我可以在客户端上标记"好吧,伙计,用户已经过身份验证",但我现在应该如何与我的后端进行交互?我不能只提出一些要求.后端 - 一些提供API函数的应用程序.每个人都可以访问此API.

所以,我的FE和BE之间需要一些auth系统.这个系统应该如何工作?

ps我有一些英语问题,可能我不能正确'问谷歌'.你能提供正确的问题吗:)或至少提供一些关于我的问题的文章.

UPD

我正在寻找概念.我不想为我当前的问题找到一些解决方案.我不认为我使用FE和BE的问题(无论如何我将在下面提供有关它的信息)

FE和BE将使用JSON进行通信.FE将发出请求,BE将发送JSON响应.我的应用程序将具有此结构(可能):

  • 前端 - 可能是AngularJS
  • 后端 - 可能是Laravel(laravel将实现逻辑,结构中也有数据库)

也许像google.com,vk.com,twitter.com等"服务提供商"会记得用户的状态?在FE成功验证后,我可以询问BE的用户状态吗?

frontend backend oauth oauth-2.0 angularjs

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

Angular 2+:基于api响应的路由

说我有以下内容

const routes = [
  { 
    path: 'product/:id',
    component: ProductDetailsComponent,
  }
  { 
    path: 'search',
    component: SearchResultsComponent,
  }
]
Run Code Online (Sandbox Code Playgroud)

现在说

product/1 - 是一部由电影呈现的电影 DigitalMediaComponent

product/2 - 是说电视 ProductDetailsComponent

product/3 - 是一个洗衣机/烘干机捆绑,呈现为 BundleComponent

product/4 - 是一个床垫系列,这包括,床垫,框架,封面,床单,枕头,一旦可以选择一些东西,颜色,尺寸,线程数等购买之前

product/5- 是一种汽车产品说轮胎,所以这使得TireComponent- 这需要一个配件模块,年份/品牌/型号/装饰选择,以及许多其他定制,然后才能购买

而这样的例子不胜枚举.

显然,有些组件在其中一些组件之间重复使用,但总的来说它们之间存在很大差异.所以我想懒加载(或懒惰下载)包含这些组件的javascript文件(和css),我不需要MoviePreviewComponent显示轮胎时.

我已经阅读了很多例子,他们都谈到了一个非常简单的路由和组件之间的一对一关系的情况,比如

{ path: 'product/:id', loadChildren: 'product/ProductDetailsComponent' }
or
{ path: 'product/:id', loadChildren: () => System.import('./product/ProductDetailsComponent').then(mod => mod.default) }
Run Code Online (Sandbox Code Playgroud)

我有办法吗?

  1. 在导航到路线时呼叫api
  2. 并根据对api的响应System.import('...')用于懒惰下载模块

我不想导航到插页式广告组件并从那里加载,因为当用户点击搜索结果中的产品时(或整个网站中的任何其他促销横幅,可能会或可能不会使用角度2构建),以及如果页面加载需要一些,他们可以按下esc并单击其他内容.这是正常的浏览器行为,我不想失去它

即使我最终得到插页式组件,我将如何加载动态模块呢?

ngOnInit() {
  let id = this.route.snapshot.params['id'];
  fetch('/my/api/' + id) …
Run Code Online (Sandbox Code Playgroud)

angular

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

蚁群算法的奇怪行为

我开发了一个aco算法.我认为它不能正常工作......很难解释,但我会尝试.

问题是信息素水平浮动.我认为,最佳路径上的信息素水平必须越来越高,但在我的程序中它并非如此.

Optimal path 是一个路径,通过在起始顶点和目标顶点之间的边缘上找到最大信息素水平来构建.

例:

1 5 3
4 5 10
0 0 0
Run Code Online (Sandbox Code Playgroud)

Optimal path会的1 -> 2 -> 3.

重量矩阵:

 0 3 10
 0 0 3
 0 0 0
Run Code Online (Sandbox Code Playgroud)

最佳路径是:1 -> 2 -> 3 (length: 6) 另一条路径(非最佳路径):1 -> 3 (length: 10)


10只蚂蚁后的信息素水平:

0 5 1 
0 0 3
0 0 0
Run Code Online (Sandbox Code Playgroud)

最佳路径: 1 -> 2 -> 3


20只蚂蚁后的信息素水平(10多个):

0 1 5 
0 0 1
0 0 0
Run Code Online (Sandbox Code Playgroud)

最佳路径: 1 -> 3


30只蚂蚁后的信息素水平:

0 …
Run Code Online (Sandbox Code Playgroud)

algorithm ant-colony

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

如何显示Alpha Beta修剪算法结果?

更新

更新1

我试过这个(第2行):我添加了更改节点颜色作为alphabeta函数中的第一条指令.我得到了这个结果:

结果

绿色节点是访问节点.看起来,算法正确地投掷节点,对吗?但是如何在节点中输出正确的值 - 我还需要这样做?最小子值,最大子值(不包括已修剪的分支).

更新2

我试图输出alpha和beta到树节点,但没有得到正确的结果.是代码(添加了第18行和第31行).是代码的结果:

产量

这张图片上我展示了奇怪的地方:

输出错误

第一个箭头:为什么7和6的最小值是5?第二个箭头:为什么最多4,3和2是5?奇怪.这就是为什么我认为它现在正常工作.

老问题

曾几何时我在这里创建了类似的问题.这就像:"为什么我会收到这个错误?".让我们回滚并创建一个新的.这个问题将是:"如何显示Alpha Beta修剪算法结果?"

我在维基上找到了这个算法的伪代码.它可以在这里找到.

我的实现如下(它是在JavaScript上,但我不认为回答这个问题你必须知道JS或Java或C++等).问题是如何在图形(树形结构)上输出该算法的结果?一开始我有这个树结构:

任务,我的结构

注意:我有树结构(一定数量的链接nodes),我将使用alpha beta修剪算法,我有另一个树结构(为了显示结果,我们称之为"图").我用来显示图形的树节点与节点连接,我用它来查找算法的结果.

因此,alpha beta修剪algroithm的代码如下.你能说清楚我必须输出的内容和位置,以正确显示算法的过程/结果吗?

我的假设是输出alpha和beta,但我认为,这是错误的.我尝试过,但它不起作用.

我想显示修剪并用正确的值填充树中的所有节点.

这是我用alpha beta修剪实现的minimax:

function alphabeta(node, depth, alpha, beta, isMax, g) {
    if((depth == 0) || (node.isTerminal == true)) {
        return node.value;
    }
    if(isMax) {
        console.log('maximizing');
        for (var i in node.children) {
            var child = node.children[i];
            console.log(child);
            alpha = Math.max(alpha, alphabeta(child, depth-1, alpha, beta, false, g)); …
Run Code Online (Sandbox Code Playgroud)

algorithm search artificial-intelligence minimax alpha-beta-pruning

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

在 Angular 中单元测试 requestAnimationFrame 有哪些选项?

对 requestAnimationFrame 进行单元测试的方法有哪些?

requestAnimationFrame 与 setTimeout/setInterval 具有相同的性质。它也由 zone.js 修补,就像 fn 的 setTimeout 一样被修补。所以我首先想到的选项是

  1. 异步 + 当稳定
  2. fakeAsync + 滴答(无效)
  3. 假异步 + 刷新
  4. fakeAsync + 滴答声(数字)
  5. setTimeout(1000) + 完成(茉莉花)

结果:

  1. async + whenStable :就是不工作
  2. fakeAsync + tick(void) :不起作用
  3. fakeAsync + 刷新:不起作用
  4. fakeAsync + tick(number) :有效(阅读下文)
  5. setTimeout(1000) + done (jasmine) :不工作

这是方法:

 reqAnimFrame() {
   requestAnimationFrame(() => {
     console.log('log stuff');
     this.title = 'req frame title';
   });
 }
Run Code Online (Sandbox Code Playgroud)

这是单元测试(工作单元测试):

it('fakeAsync', fakeAsync(function () {
  const fixture = TestBed.createComponent(AppComponent);
  const app: AppComponent = fixture.debugElement.componentInstance;

  fixture.detectChanges();

  app.reqAnimFrame(); …
Run Code Online (Sandbox Code Playgroud)

javascript unit-testing zone.js angular ngzone

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

如何解决AngularJS单元测试中的承诺

我正在使用基本的karma/jasmine设置来测试我的Angular代码.这是我的测试:

var $controllerConstructor, ctr, mockSuperheroData, scope, deferred, q;

describe('main controller', function() {
   var $controllerConstructor, ctr, mockSuperheroData, scope, deferred, q;


   beforeEach(inject(function($controller, $rootScope, $q) {
     scope = $rootScope.$new();
     $controllerConstructor = $controller;
     q = $q;
     mockSuperheroData = {
       getSuperheroes: function() {
         deferred = q.defer();
         return deferred.promise;
       }
     };
     ctr = $controllerConstructor('MainCtrl', {$scope: scope, $location: {}, superheroService: mockSuperheroData, keys: {}});
   }));

   it('should set the result of getResource to scope.heroes', function() {
     scope.getHeroes();
     expect(scope.heroes).toBe(100);
   });
}
Run Code Online (Sandbox Code Playgroud)

scope.getHeroes()调用mockSuperheroData.getSuperheroes()正在返回承诺的人.如何强制承诺在单元测试中返回我想要的内容?我在哪里可以接受嘲笑其回报的承诺?

javascript unit-testing promise jasmine angularjs

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

console.log/console.dir 显示对象的最后状态,而不是当前状态

我想用新的循环步骤记录我的数组/对象是如何变化的。Console.log这样做不好。它只显示所有对象的最后状态。例如:

var a = {};
console.log(a); // {bob1: 0, bob2: 0}
a.bob1 = 0;
console.log(a); // {bob1: 0, bob2: 0}
a.bob2 = 0;
console.log(a); // {bob1: 0, bob2: 0}
Run Code Online (Sandbox Code Playgroud)

我在那里找到了另一个命令:console.dir. 它在同一个例子中正常工作。它正确地显示了对象的状态。

看看这个例子。此命令完美运行:http : //jsfiddle.net/RLzVV/

现在,请看我的代码。所有输出都在控制台中。http://jsfiddle.net/3BDs7/4/

这是aStar算法。<--- neighbor 3 start ---> this code is situated here <--- neighbor 3 stop -->在控制台中查看这部分(邻居 3 循环)。将其输出到控制台的车道是105-113

new openset length: 2
openset after adding new vertex
**shows 1 element, but length is 2**
Run Code Online (Sandbox Code Playgroud)

它显示长度为 2,但仅显示 …

javascript logging console.log

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

如何在Angular 2中触发ajax请求?

我在Angular 2中定义了这样的服务:

import { Inject } from 'angular2/angular2';
import { Http ,Headers , HTTP_PROVIDERS } from 'angular2/http';

export interface CourseInterface {
    courseId: number,
    coursePrice: number,
    authorName: string
}

export class CourseDetailsService {
    http: Http;
    constructor(@Inject(Http) Http) {
        console.log(Http)
        this.http = Http;
    }

    load() {
        console.log("came here in service")
        var headers = new Headers();
        headers.append('Authorization', <my username password>);

        this.http.get('https://some.api',{
            headers : headers
        }).map(res => console.log("Response came!!!"))

        console.log("done . . .")
    }
}
Run Code Online (Sandbox Code Playgroud)

在另一个组件中,我使用这样的服务:

import {CourseInterface, CourseDetailsService} from '../services/course';

@Component({
    selector: 'dashboard', …
Run Code Online (Sandbox Code Playgroud)

javascript angular

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

是否有任何命令在VS Code中打开分支列表?

git.branchVS Code键盘快捷键中有一个命令.此命令将打开对话框以创建新分支.

我找不到打开所有分支列表的命令.有没有命令呢?

visual-studio-code

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