小编Eva*_*ice的帖子

Javascript在对象文字上调用eval(带函数)

免责声明:我完全理解使用eval的风险/缺点,但这是一个我无法找到任何其他方式的利基案例.

在Google Apps Scripting中,仍然没有内置功能可以将脚本作为库导入,所以很多工作表都可以使用相同的代码; 但是,有内置的设施,我可以从一个纯文本文件导入文本.

这是评估代码:

var id = [The-docID-goes-here];
var code = DocsList.getFileById(id).getContentAsString();
var lib = eval(code);
Logger.log(lib.fetchDate());
Run Code Online (Sandbox Code Playgroud)

这是我在外部文件中使用的一些示例代码:

{
  fetchDate: function() {
    var d = new Date();
    var dateString = (d.getMonth() + 1) + "/" + d.getDate() + "/" + d.getFullYear();
    return dateString;
  }
}
Run Code Online (Sandbox Code Playgroud)

我的目标是将一个大对象文字(包含所有库代码)放到一个局部变量上,这样我就可以引用它的属性/函数,就像它们包含在它们自己的命名空间中一样.

javascript import eval google-apps-script

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

什么是最轻的解决方案,创建一个多进程架构,所有进程都共享状态

我有多层应用程序架构,有4个部分:

  • 网络服务器/客户端层
  • 用于处理进程之间交互的中间数据层
  • 监控层
  • 客户层由n个实例组成

客户/服务器层:

客户端/服务器层处理与使用自定义第2层协议实现的另一台计算机的异步网络通信.由于通信中内置的设计约束,它需要保持独立并能够异步地轮询/推送数据到数据层.

中间层:

目前使用数据库实现中间层.一个表包含可以调用的所有可能标签(大约120,000).第二个表包含第一个表的中间缓存,其中仅包含正在使用的值,这需要不断更新,并在请求新的项集合时刷新.第三个表是发送集合更新的位置,仅在请求挂起时包含数据.

监控层:

监视器层是一个多线程单片应用程序.它根据连接的监视器数量生成n个客户端实例.它管理所有客户端实例之间的全局状态,因为它们中的一个或多个可以共享相似/相同的状态.它创建所需值的唯一列表,管理在客户端需要不同标签集时发送更新请求,并管理重复更新.

显然,这并不理想.如果一个实例出现故障,可以将其余部分关闭.我想要做的是删除中间层,将其替换为监视器层,并使所有内容都作为监视器进程的子进程生成,以便在出现问题时可以随意重新生成(例如,通信心跳停止,客户端崩溃)等).

数据库看起来太沉重,不够专业,无法处理IPC(进程间通信).该程序是在极端时间限制下编写的,因此利用数据库是"简单的解决方案",期望它将来会发生变化.我非常喜欢谷歌Chrome的多进程架构的强大功能,但我对它们如何将所有进程绑定在一起(管道,tcp,?)知之甚少.

所以:

  1. 我是否可以期望在数据库中使用IPC作为中间层可以显着提高性能?

  2. 什么形式的IPC在Windows系统上是理想的?

  3. 是否有可用的交叉平台(读取Linux)替代解决方案,如果将开发转移到Mono,可以使用它?

  4. 我在哪里可以找到有助于开始的资源/示例?

注意:我知道这个系统的体系结构似乎不必要地复杂,但它作为更大系统的前端存在.此应用程序也是关键任务,因此稳定性胜过效率.

更新:

我在最初的问题中忘了提到.数据库数据/索引在引导时直接从ramdisk加载.已对数据库本身编制索引以获得最佳性能.需要频繁写入的表或值不会编入索引,但其余数据都是索引.

我正在寻找一种替代方法来衡量,因为数据库的优化已经达到极限,我认为还有很大的改进空间.

一旦我有时间绘制它,我就会上传一些架构图.

c# multithreading ipc data-access-layer multiprocessing

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

CasperJS没有跟随重定向到HTTPS

我正在尝试使用CasperJS来自动化大量繁琐的数据输入.具体来说,要在佳能网站上注册一大批相机设备.

我有处理表单填充的代码,使用CasperJS浏览网页时没有问题,但我无法让CasperJS导航到登录页面.

这是我到目前为止所拥有的:

var casper = require('casper').create({
    verbose: true,
    userAgent: 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36',
    logLevel: "debug"
});

phantom.cookiesEnabled = true;

casper.start();

casper.thenOpen('https://b2cweb.usa.canon.com/b2cweb/view/myAccountHome.jsf?LOGINACTION=Y', function(response) {
require('utils').dump(response);
});

casper.run();
Run Code Online (Sandbox Code Playgroud)

注意:上面的代码一旦到达页面就转储标题内容.我还尝试了不同的用户代理字符串,以防Adobe主动阻止抓取工具.

该链接在Google Chrome中完美运行,但CasperJS只记录以下内容.

加载资源失败,状态=失败

从Google Dev Tools看来链接302重定向到

https://b2cweb.usa.canon.com/b2cweb/view/myAccountHome.jsf?LOGINACTION=Y

然后301重定向到:

https://b2cweb.usa.canon.com/b2cweb/view/login.jsf?TYPE=33554432&REALMOID=06-979697ef-63e3-49da-a97f-795f9d794fcc&GUID=&SMAUTHREASON=0&METHOD=GET&SMAGENTNAME=-SM-EA3lbvOPfpMVWEZ5fDNhRBdvP75YFZ%2fmmFcIOEdxcmO9f3eSAXAISOKvl7eaVyQm&TARGET=- SM-HTTP%3A%2F%2fb2cweb%2eusa%2ecanon%2ecom%2fb2cweb%2fview%2fmyAccountHome%2ejsf%3fLOGINACTION%3DY

我假设重定向是CasperJS无法获取登录页面的原因.

是否有可能使CasperJS遵循这些类型的重定向?可以使用CasperJS通过HTTPS浏览和/或登录吗?

更新:

我不太确定它是否是导致问题的重定向.

作为一种解决方法,我尝试预先将会话cookie(从chrome复制)预加载到casperjs中,然后直接导航到帐户页面.

我还尝试在命令中添加--ignore-ssl-errors = true标志但没有成功.

无论我做什么,它都会返回一个about:blank url.

https redirect casperjs

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

JS FileReader:从本地文件和jquery-csv读取CSV

我在与html页面相同的目录中有一个CSV文件,我想使用FileReader将文件内容读入jquery-csv的To Arrays函数,但我似乎无法让它正常工作.我想我理解这项任务的异步性,但我是否正确描述了它?在这里,我正在尝试输出第二列中的第二个单元格.谢谢你的帮助.

<script type="text/javascript" src="https://www.google.com/jsapi?autoload={'modules':[{'name':'visualization','version':'1','packages':['timeline']}]}"></script>

<script src="https://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="jquery.csv-0.71.js"></script>
<script type="text/javascript">

var reader = new FileReader();

reader.onload = function(e) {
  var text = e.target.result;
  var data = $.csv.toArrays(text);
  document.write(data[1][1]);

}

reader.readAsText('data.csv');




</script>
Run Code Online (Sandbox Code Playgroud)

javascript csv filereader jquery-csv

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

Angular2 ES6 @Input替代品

我正在尝试构建一个<markdown-component>使用ES6语法.该@Input语法糖不ES6支持,我无法找到一个可行的替代方案.

我在父母中定义输入:

<ng2-markdown [source]="source"></ng2-markdown>
Run Code Online (Sandbox Code Playgroud)

然后使用以下方式接受输入:

@Component({
  selector: 'ng2-markdown',
  inputs: [ 'source' ]
})
Run Code Online (Sandbox Code Playgroud)

如果我添加一个模板,我可以得到它将按预期输出值,但是没有办法在构造函数中使用输入.

该模块实际上应该是一个指令,该source值将定义要加载的Markdown文件的路径.

ecmascript-6 angular2-inputs angular

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

运行Angular2 ver.2.0.0-alpha.44时不存在属性问题

Angular2的新手,试图在我的本地系统上运行这个plunkr项目.我收到以下错误:

错误:(25,23)TS2339:'PeopleService'类型中不存在属性'people'.错误:(26,39)TS2339:'人''类型中不存在属性'人'

在线:
peopleService.people .subscribe(people => this.people = people);

我有理由相信我已正确设置了环境,因为我正在运行其他基本组件.

people.ts文件:

import {Component, View, CORE_DIRECTIVES} from 'angular2/angular2'  
import {PeopleService} from './peopleService'  
import {Person} from './person'

@Component({  
    selector: 'my-app',  
    providers: [PeopleService]  
})  
@View({
    template: `
    <div>
      <h2>Hello Angular2!</h2>
      <my-person
        *ng-for="#person of people"
        [name]="person.name"
        (hello)="saidHello($event)">
      </my-person>
    </div>
  `,  
        directives: [CORE_DIRECTIVES, Person]  
})  
export class People {  
    constructor(public peopleService:PeopleService) {  
        peopleService.people  
            .subscribe(people => this.people = people);  
    }  
    saidHello($event){  
        alert(`You said hello to ${$event}`)  
    }
}
Run Code Online (Sandbox Code Playgroud)

peopleService.ts文件中的类似错误:

错误:(8,14)TS2339:'PeopleService'类型中不存在属性'people'.

//a simple …
Run Code Online (Sandbox Code Playgroud)

typescript angular

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

Angular2 Impelements vs进口

我正在浏览Angular2指南,虽然关键字implements在类定义中使用,但在文档中并没有真正详细描述.

例如,在以下内容中:

export class CrisisDetailComponent implements OnInit, CanDeactivate {

  crisis: Crisis;
  editName: string;

  cancel() {
    this.editName = this.crisis.name;
    this.gotoCrises();
  }

  save() {
    this.crisis.name = this.editName;
    this.gotoCrises();
  }
}
Run Code Online (Sandbox Code Playgroud)

OnInit通过implements关键字引入类,但我最常见的是OnInit导入import {Component, OnInit} from 'angular2/core',然后在类定义中使用.

implements关键字的效用是什么?而且,OnInit这个类定义中没有直接使用,那为什么它会被带入课堂呢?为implements使OnInit可用的goToCrises()方法?如果是这样,为什么你不能只注入OnInit定义的组件goToCrises()

谢谢你的帮助.

typescript angular

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

在jQuery中读取和使用CSV文件

我有以下问题:

我有一个很大的CSV文件,其中包含很多数据,我只需要使用jQuery就可以在(外部(当然,已批准!))网页上使用这些数据。

我发现jQuery-csv能够将csv数据处理到数组中。一旦我将数据存储在数组中,我就可以完成我需要做的一切。但是,我不太了解在哪里以及如何“包含” csv文件。它是托管的,可以通过url获得。jQuery-csv似乎从未链接到文件,并且它们的演示页仅显示通过页内<input>标记使用的内容。

为了进一步了解这种情况:客户希望使用带有大量句子的.csv文件数据库(“我很喜欢这个!”),并在自己的网站上随机显示这些句子。

tl; dr:如何将.csv文件加载到页面上,以便可以与jQuery-csv一起使用?

csv jquery include jquery-csv

0
推荐指数
1
解决办法
1085
查看次数