我需要在浏览器中生成唯一的ID.目前,我正在使用这个:
Math.floor(Math.random() * 10000000000000001)
Run Code Online (Sandbox Code Playgroud)
我想使用当前的UNIX时间((new Date).getTime()),但我很担心,如果两个客户端产生的IDS 确切的同时,他们也不会是唯一的.
我可以使用当前的UNIX时间(我想因为那种方式会存储更多信息)吗?如果没有,最好的方法是什么(可能是UNIX时间+ 2个随机数字?)
我正在尝试使用pdfKit从html文件创建pdf文件来在python中设置服务.
所以基本上我会将我的元素作为字符串发送并期望服务器返回它的pdf版本,但为了准确表示我还需要发送元素的css文件.
我怎样才能做到这一点?仅使用元素及其所有子元素的相关样式属性和选择器生成JSON /对象.尊重层次结构,没有重复.有类似的问题,但它们已经过时,往往不考虑儿童元素.
我想也许有一种方法可以从这个元素创建一个新的DOM,然后获得根css?
我需要生成UUID以最终存储在数据库中.我可以在客户端浏览器上从Javascript生成这些UUID(这里有一些例子)?
这样做有安全隐患吗?据我所知,任何人都可以在将UUID传递到服务器进行存储之前对其进行修改.因此,我需要在将它们存储到数据库之前检查它们是否是真正独特的,但除此之外,是否还有其他要检查的东西?
(抱歉我的英文,随时纠正任何语法错误)
编辑:要回答有关我为什么要这样做的问题,这是因为我可以在Javascript中创建一个新对象及其标识符并将其添加到我的视图中,然后对服务器进行AJAX调用以将其添加到数据库中.这样,我不需要从数据库加载它以知道它的主要标识符是什么.
我有使用angular js的代码:
<!DOCTYPE html >
<html>
<head>
<title>Untitled Page</title>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.5/angular.min.js"></script>
<script type="text/javascript">
function TodoCtrl($scope) {
$scope.total = function () {
return $scope.x + $scope.y;
};
}
</script>
</head>
<body>
<div ng-app>
<h2>Calculate</h2>
<div ng-controller="TodoCtrl">
<form>
<li>Number 1: <input type="text" ng-model="x" /> </li>
<li>Number 2: <input type="text" ng-model="y" /> </li>
<li>Total <input type="text" value="{{total()}}"/></li>
</form>
</div>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我能够进行乘法,除法和减法但是为了加法,代码只是连接x和y值(即如果x = 3且y = 4,则总数为34而不是7)
我究竟做错了什么?
任何人对如何实现同时使用localStorage和REST远程存储的数据持久层有任何想法或参考:
某个客户端的数据与localStorage一起存储(使用ember-data indexedDB适配器).本地存储的数据与远程服务器同步(使用ember-data RESTadapter).
服务器从客户端收集所有数据.使用数学集符号:
Server = Client1 ? Client2 ? ... ? ClientN
Run Code Online (Sandbox Code Playgroud)
通常,任何记录对某个客户来说可能不是唯一的:
ClientX ? ClientY ? 0, ? X,Y ? [1,N]
Run Code Online (Sandbox Code Playgroud)
以下是一些场景:
客户创建记录.无法在客户端上设置记录的ID,因为它可能与存储在服务器上的记录冲突.因此,需要将新创建的记录提交到服务器 - >接收id - >在localStorage中创建记录.
记录在服务器上更新,因此localStorage和服务器中的数据不同步.只有服务器知道,所以架构需要实现推送架构(?)
您是否会使用2个存储(一个用于localStorage,一个用于REST)并在它们之间同步,或者使用混合索引的DB2/REST适配器并在适配器中写入同步代码?
你能看到任何避免实现推送的方法(Web Sockets,...)?
在我的应用程序中我需要创建GUID,GUID将作为cookie工作,所以任何人都知道如何在angular-2/typescript中创建GUID或使用任何angular2依赖/库.
我有这个功能:
function getProduct(id: string){
//return some product
}
Run Code Online (Sandbox Code Playgroud)
其中id实际上是GUID.Typescript没有guid类型.可以GUID手动创建类型吗?
function getProduct(id: GUID){
//return some product
}
Run Code Online (Sandbox Code Playgroud)
所以,如果反而'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'会有些'notGuidbutJustString'话,我会看到打字稿编译错误.
更新:正如David Sherret所说:在编译时无法确保基于正则表达式或其他函数的字符串值,但是可以在运行时在一个地方执行所有检查.
我必须生成唯一的哈希 - 可能来自时间戳.hash必须有最多8个字符.怎么做?
现在我只有时间戳:
var t = new Date().getTime();
Run Code Online (Sandbox Code Playgroud) 以下代码使用生成3个随机数window.crypto.getRandomValues.根据开发人员的文档(Microsoft MSDN和Mozilla MDN),这应该适用于IE和Chrome.
但实际上它仅适用于Chrome,而不适用于Internet Explorer 11.根据Microsoft的说法,此代码应该可以运行 - 它们提供了与下面列出的相似的代码示例(请参阅上面的MSDN链接).
怎么了?它是如何修复的,以便在两种浏览器中都能正常工作?
var randomValuesArray = new Int32Array(3);
var crypto = window.crypto;
crypto.getRandomValues(randomValuesArray);
var outputString = "";
for (var i = 0; i < randomValuesArray.length; i++) {
if (i > 0) outputString += ",";
outputString += randomValuesArray[i];
}
console.log(outputString);Run Code Online (Sandbox Code Playgroud)
首先在Chrome中尝试使用此代码段,它会正确显示类似的内容
-513632982,-694446670,-254182938
在警报弹出窗口中.
然后,复制此问题的URL并在Internet Explorer 11中尝试- 它显示:
错误:{"message":"无法获取属性'getRandomValues'未定义或null>引用","filename":" https://stacksnippets.net/js ","lineno":15,"colno":2 }
一些背景:我想尝试使用这个代码在Javascript中生成Guids,然后我发现了这个问题.
(更新:根据 …
javascript ×5
uuid ×3
typescript ×2
angular ×1
angularjs ×1
css ×1
ember-data ×1
ember.js ×1
guid ×1
gwt ×1
jquery ×1
rest ×1
security ×1
types ×1
wkhtmltopdf ×1