小编Pet*_*tai的帖子

在2011年为iOS/Android开发HTML5离线存储解决方案

问题:

我需要一个设备不可知(例如HTML5)解决方案,用于在手机或平板电脑类型设备(例如iOS/Android)上离线存储和查询250,000多行数据.我的想法是让人们在没有任何蜂窝数据连接的偏远地区工作,他们需要对这些数据运行查询并在离线时进行编辑.部分地,它将基于地理位置,因此如果他们所在的区域中有资产(使用GPS),那么它将显示这些资产并让它们被编辑.当他们返回办公室时,他们可以将数据同步回办公室服务器.

我从Web标准的角度来看这个问题的原因基本上是通过在HTML5中编写一次来节省金钱和时间,然后它可以跨多个平台工作,而不是在Objective C和Java中编写两次.此外,如果你写的是平台不可知的东西,那么你就不会被锁定,并且当每个人都搬到新的船上时,不要随船离开.我们有一个类似的应用程序为Windows Mobile 5编写,现在它没用,因为该平台已经死了.

设备上的脱机数据库需要是:

  • 快速(响应时间不超过2秒)
  • 可能执行连接并与能够查询数据库的其他表建立关系
  • 选择一定范围内的数据或标准,例如通过基于GPS读数的x&y坐标.

选项:

HTML5本地存储:

对于少量数据<5,000键/值,如果将其转换为JSON,甚至可以在其中存储数组/对象.

缺点:

  • 即使在高端机器上,超过10,000行,浏览器也会慢慢爬行.
  • 无法对数据执行复杂查询以提取所需数据,因为您必须遍历整个存储并手动搜索它.
  • 可存储的存储量限制

Web SQL数据库:

  • 符合要求.
  • 快速运行250,000行查询(1-2秒)
  • 可以创建复杂的查询,连接等
  • Safari,Android和Opera支持,因此适用于iOS和Android设备

缺点:

  • 截至2010年11月已弃用
  • 跨目录攻击的安全漏洞.这不是一个问题,因为我们不会在共享主机上

IndexedDB的:

键/值对象存储类似于本地存储,除了索引.

缺点:

  • 慢速运行200,000行(15-18秒)的查询
  • 无法运行复杂的查询
  • 无法与其他表连接
  • 主要手机或平板电脑设备不支持,例如iPad/Android
  • 标准不完整

这留下了实现已弃用的Web SQL方法的唯一选择,该方法可能仅工作一年左右.IndexedDB和本地存储目前无法使用.

我不确定Mozilla和Microsoft如何推荐Web SQL数据库标准,以及为什么W3C会让它发生.据称他们之间拥有77%的桌面浏览器市场.在先进的移动设备上,Mozilla和微软几乎没有影响力,因为Safari,Opera和Android拥有超过90%的市场份额.Mozilla和微软如何决定在最有可能使用离线存储的移动市场中应该使用哪种标准没有任何意义.

Mozilla评论中,为什么他们想要使用IndexedDB而不是主要关注"开发者美学",他们不喜欢在JavaScript中运行SQL的想法.我不是买它.

  1. 目前提出的标准较差,并且是一种非常基本的NoSQL实现,速度很慢,甚至不支持数据库中人们需要的高级功能.有许多样板代码来建立数据库并获取数据,但是他们声称人们会在其顶部编写一些很好的抽象库,它们将提供更高级的功能.截至2011年10月,他们无处可见.

  2. 他们已经弃用了现有的Web SQL标准,该标准实际上可以在主要的移动设备/平板电脑浏览器中实现.虽然主流移动浏览器无法提供"新"和"更好"的标准.

  3. 我们作为开发人员应该在未来3 - 5年内使用什么,这时IndexedDB规范可能会变得标准化,具有更多功能,在主要的移动/平板电脑浏览器中实现,还有一些很好的库可以让事情变得更容易?

W3C应该保持Web SQL数据库标准并行运行,并解决问题.它已经支持主要的移动平台,并且运行良好.事实上,Mozilla和微软作为拥有最多桌面浏览器份额的两家公司能够取消这一标准是非常可疑的,可能会被视为阻碍移动网络平台进展的尝试,直到他们能够赶上并提供针对iOS/Safari和Android的竞争解决方案.

总之,任何人都有我的问题的解决方案,适用于手机/平板电脑设备的iOS/Android.也许是一个很好的包装器API,它可以在后台使用多个数据库实现并具有查询功能,它允许您选择哪个数据库具有优先级.我已经看过像草坪椅这样的东西,但我很确定它只允许你默认使用本地存储,然后再回到其他存储.我想我宁愿使用Web SQL(默认情况下),然后使用较慢的选项.

对解决方案的任何帮助都非常感谢,谢谢!

javascript html5 web-sql indexeddb jaydata

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

如何在调用responde.end()后执行NodeJS/connect中间件?

我想实现这样的目标:

var c = require('connect');
var app = c();

app.use("/api", function(req, res, next){
    console.log("request filter 1");
    next();
});

app.use("/api", function(req, res, next){
    console.log("request filter 2");
    next();
});

app.use("/api", function(req, res, next){
   console.log("request handler");
    res.end("hello");
    next();
});

app.use("/api", function(req, res, next){
    console.log("response post processor");
    next();
});
app.listen(3000);
Run Code Online (Sandbox Code Playgroud)

当我为地址卷曲时,我得到一个控制台的例外,抱怨在发送之后标题不会被打扰,这是公平的.只是我不接触响应对象.

/usr/bin/node app2.js
request filter 1
request filter 2
request handler
Error: Can't set headers after they are sent.
    at ServerResponse.OutgoingMessage.setHeader (http.js:644:11)
    at ServerResponse.res.setHeader (/home/zpace/node_modules/connect/lib/patch.js:59:22)
    at next (/home/zpace/node_modules/connect/lib/proto.js:153:13)
    at Object.handle (/home/zpace/WebstormProjects/untitled1/app2.js:25:5)
    at next (/home/zpace/node_modules/connect/lib/proto.js:190:15) …
Run Code Online (Sandbox Code Playgroud)

javascript architecture connect node.js

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

对SQL Server数据库记录或插入/更新操作进行数字签名

有没有办法以某种方式用特定用户的证书或AD凭证等以数字方式对数据库记录或特定字段的当前状态进行签名?我需要实现某种记录级别的批准,其中特定字段或字段或行的正确性和有效性由用户名/密码组合或某些证书签名.数据应始终在记录中可见,我所需要的只是能够告诉:谁和何时批准数据.我不需要阻止状态更改(锁定),只需要验证当前状态是否已签名.

sql-server digital-signature

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

如何在Visual Studio 2012中创建/打开DAC应用程序?

我很难确定如何使用Visual Studio 2012实际创建甚至打开DAC应用程序.我使用的是SQL Server 2012.我安装了SSDT.

从Visual Studio创建:

根据在线文档,我应该能够看到一个名为"Data Tier Application"的项目模板,但我看到的只是SQL Server数据库项目.它们是一样的吗?

从SSMS创建:

在在线视频中,演示者使用SSMS - >数据库 - >右键单击 - >创建项目菜单项,并在向导后弹出VS项目.我没有这个菜单项,我所拥有的是任务 - >导出为数据层应用程序.这会创建DACPAC文件而不是VS项目,我无法弄清楚如何从VS打开dacpac.

sql-server dac visual-studio

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

如何使用PowerShell创建有效的空JSON数组?

在PowerShell中将数组转换为JSON字符串不是更简单:

@(1,2,3) | ConvertTo-Json
Run Code Online (Sandbox Code Playgroud)

生产:

[
    1,
    2,
    3
]
Run Code Online (Sandbox Code Playgroud)

但是,如果数组为空,则结果为空字符串:

@() | ConvertTo-Json
Run Code Online (Sandbox Code Playgroud)

结果是空字符串而不是[].

arrays powershell json

7
推荐指数
1
解决办法
4853
查看次数

在HTML5时代使用客户端XSLT转换

任何人都可以帮助了解移动HTML5浏览器中客户端XSLT的可用性吗?caniuse.com上没有任何内容.

XSLT是否真的在当前的移动浏览器中标准化了?

HTML5规范在XSLT上没有任何内容,这使人怀疑XML是否有未来(鉴于存在JSONP但没有"XMLP"的事实)

xslt html5 cross-browser client-side mobile-website

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

IndexedDb - 检查表是否存在并包含数据

当我的应用程序第一次运行时使用 IndexedDB,我用一些数据填充它,我想确保在创建数据库和表时它们还不存在。

我可以在 JavaScript 中查询表的长度以查看它是否包含数据吗?

html javascript indexeddb jaydata

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

如何从路由器组件以外的组件访问路由参数

在React-router 1.0/2.0中,可以this.props.params从Route组件访问路由参数- 但似乎没有支持的方法从上面Route组件中深深包含的组件访问参数.

可以访问数据类型,context.location但是这个会抛出一个警告,说明这是不推荐使用的.

reactjs react-router

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

JavaScript语法疯狂 - 任何人都知道发生这种情况的背景

我很遗憾为什么以下代码按照它的方式执行它的工作.

对于下面的表达式,我希望得到1作为结果,因为在文字的右侧我们实际上有一个obj.

表达:

> { a : 1 }.a 
Run Code Online (Sandbox Code Playgroud)

结果Chrome:

Syntax error: Unexpect token .
Run Code Online (Sandbox Code Playgroud)

结果NodeJS

1
Run Code Online (Sandbox Code Playgroud)

(另一个问题:为什么nodejs和chrome在这方面有所不同(以下)

虽然表达式本身有语法错误,但将其分配给变量仍然有效.

> var x = { a : 1 }.a; x;
Run Code Online (Sandbox Code Playgroud)

结果:

1
Run Code Online (Sandbox Code Playgroud)

现在在表达式周围使用eval可以在Chrome和NodeJS中使用

> eval({ a : 1 }.a)
Run Code Online (Sandbox Code Playgroud)

结果Chrome和Node

1
Run Code Online (Sandbox Code Playgroud)

现在使用eval和基于字符串的表达式都不适用于平台

eval("{a:1} .a")

结果Chrome:

SyntaxError: Unexpected token >
Run Code Online (Sandbox Code Playgroud)

结果NodeJS:

... //REPL waits more code
Run Code Online (Sandbox Code Playgroud)

最后括号解决了这一切,但为什么呢?

> eval("({ a : 1 }.a)")
Run Code Online (Sandbox Code Playgroud)

结果:

Works everywhere
Run Code Online (Sandbox Code Playgroud)

javascript syntax

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

缓冲区/节流元素使用RxJS拖动事件

我想在连续的事件源(拖动元素)上发生某些事情时实现一个场景 - 但是有一些缓冲/限制.我想收到一个通知让我们说

  • 每400毫秒
  • 但只有在源中有新项目时(拖动实际发生)

我与下面概述的油门操作器最接近的想法是等待400毫秒的暂停,然后提供序列 - 它不提供连续拖动的值:

Rx.Observable
      .fromEvent(element, "drag")
      .throttle(400);
Run Code Online (Sandbox Code Playgroud)

我想需要一些计时器的来源,但在这种情况下,如何将计时器源和拖动源与上述标准相结合?

javascript rxjs

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

JavaScript语法疯狂:指向eval函数的指针不是eval函数?

以下需要在函数范围内,因为不会发生奇怪的行为是交互式控制台模式.

以下函数按预期返回5

(function() { var x = 5; return eval("x"); })()
Run Code Online (Sandbox Code Playgroud)

一个简单的透明(ish)变化:

(function() { var x = 5; var j = eval; return j("x"); })()
Run Code Online (Sandbox Code Playgroud)

产生错误:

ReferenceError: x is not defined
Run Code Online (Sandbox Code Playgroud)

这是一种奇怪的安全措施吗?

javascript syntax

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

.NET Core,Mono和ASP.NET如何在非Windows平台上相关?

这分解为一些微不足道的子问题

  • .NET Core是Mono的替代品吗?
  • ASP.NET 5.0将在OSX/Ubuntu环境中与.NET Core或Mono一起运行吗?

我很困惑,因为我开始在.NET核心站点,跟随链接到ASP.NET 5 RC,一直提到Mono.

mono .net-core dnx dnx50 asp.net-core

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