我的JavaScript:
this.items = [
{name: 'Amsterdam1', id: '1'},
{name: 'Amsterdam2', id: '2'},
{name: 'Amsterdam3', id: '3'}
];
Run Code Online (Sandbox Code Playgroud)
我的HTML:
<ul>
<li *ngFor="#item of items" id={{item.id}}>
{{ item.name}}
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
我想为每个元素分配动态ID,但无法使其工作.名称显示但id不是.
我找不到答案.如果我用Base64编码一个字符串,编码输出是否会根据字符串唯一?我问,因为我想创建一个包含用户信息的令牌,所以我需要确保输出将是唯一的,具体取决于信息.
例如,如果我编码"UnqUserId:987654321时间戳:01/02/03"这将是唯一的,所以无论我把它放在哪里的其他用户ID永远不会发生碰撞?
我正在学习Redis,正在构建一个用于学习目的的地理计划.我想只使用Redis存储数据,并试图避免任何关系数据库.我的问题是如何最好地为该程序设计数据库.这就是程序的方式:
1)我将在世界各地创造数以百万计的随机机器人,这些机器人可以徘徊,因此它们可以有不同的地理坐标(一些机器人可以在完全相同的空间内).
2)每个机器人将随机发送一个帖子到服务器(平均每隔几个小时),其中包含:a)机器人从哪里发送这些数据的位置(根据最佳实施思路,在坐标或geohash中)b )一些小文字
3)我将拥有一张包含所有机器人的地图,并希望能够点击机器人并获取此信息:a)我刚刚点击机器人附近发布的所有帖子
4)由于我将在AWS上托管此事件,我将需要每隔几小时删除一次帖子以保持较低的内存使用率,因此某些类型的过期是必需的.
我主要担心的是性能,我对如何设计Redis数据库很感兴趣.
在一天之内(我将计算随机帖子的数学)这将产生大约500,000,000个帖子.
到目前为止我的不完整的想法:
想法1
1)帖子将被存储为:
`HSET [Geohash of location] [timestamp] [small text] (<-- the value will be used in a later feature to increment the number of manual modification I make to a post).
Run Code Online (Sandbox Code Playgroud)
2)然后,我可以通过发送他所在的geohash位置获得机器人附近的所有帖子.这里的垮台是我还需要包括他的8个geohash邻居,这将需要8个以上的查询.这就是为什么我也在研究这个特征的空间接近度的概念.
HGETALL [GeoHash Location of robot]
Run Code Online (Sandbox Code Playgroud)
然后,这将返回字段([timestamp])和值("0");
3)旧帖子到期.由于我无法使用EXPIRE命令从哈希集中删除字段,因此我需要定期扫描所有哈希集字段并查找旧时间戳并将其删除.由于Redis只允许模式搜索,因此当所有时间戳不同时,这可能会很困难.
想法2:
使用Redis-geo(https://matt.sh/redis-geo).
1)要存储我将运行的帖子:
geoadd globalSet [posts_long] [posts_lat] "small text";
Run Code Online (Sandbox Code Playgroud)
2)获取附近机器人的所有发布信息:
georadius globalSet [robots_long] [robots_lat] [X] km
Run Code Online (Sandbox Code Playgroud)
这将返回X kms内机器人附近的所有帖子.
3)然后我现在卡住了如何删除旧帖子
我上课了.我需要在超时内做一些http工作.我面临的问题是超时内的http变量一直说它是未定义的.
export class MyClass {
http:Http:
constructor(private http:Http) {
this.http = http;
}
sendFriendRequest(){
this.http.post( ...//http variable is defined here
setTimeout(function(){
this.http.post(... //http is not defined here
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在努力学习Cassandra并且总是找到最好的方法是从创建一个非常简单和小的应用程序开始.因此,我正在创建一个基本的消息传递应用程序,它将使用Cassandra作为后端.我想做以下事情:
当我来自关系数据库的世界时,我的关系数据库看起来像这样:
UsersTable
username (text)
email (text)
password (text)
time_created (timestamp)
last_loggedIn (timestamp)
------------------------------------------------
ContactsTable
user_i_added (text)
user_added_me (text)
------------------------------------------------
MessagesTable
from_user (text)
to_user (text)
msg_body (text)
metadata (text)
has_been_read (boolean)
message_sent_time (timestamp)
Run Code Online (Sandbox Code Playgroud)
通过阅读几本Cassandra教科书,我想到了如何建模数据库.我主要关心的是以非常有效的方式对数据库进行建模.因此,我试图避免二级索引等事情.这是我的模型到目前为止:
CREATE TABLE users_by_username (
username text PRIMARY KEY,
email text,
password text
timeCreated timestamp
last_loggedin timestamp
)
CREATE TABLE users_by_email (
email text PRIMARY KEY,
username text,
password text
timeCreated timestamp
last_loggedin timestamp
)
Run Code Online (Sandbox Code Playgroud)
为了均匀地传播数据并读取最少量的分区(希望只有一个),我可以根据用户的用户名或电子邮件快速查找用户.这方面的缺点显然是我的数据增加了一倍,但是存储成本非常便宜,所以我觉得这是一个很好的权衡,而不是使用二级索引.最后登录也需要两次写入,但Cassandra在写入时很有效,所以我相信这也是一个很好的权衡.
对于联系人,我想不出任何其他方式来模拟这个,所以我建模它非常类似于我在关系数据库中的方式.根据我读过的书,这是一个非常规范化的设计我应该对性能有好处吗?
CREATE TABLE "user_follows" (
follower_username text,
followed_username …
Run Code Online (Sandbox Code Playgroud) 我有一个socket.io聊天室运行,当我们在一台机器上运行时,其流量变得越来越大.我们使用ws库为套接字运行基准测试,它们的性能要好得多,这样可以更好地利用我们的硬件.这需要重写我们的应用程序.
我们的socket.io应用程序允许用户创建使用命名空间实现的私人聊天室.例如
localhost:8080/room/1
localhost:8080/room/2
localhost:8080/room/3
Run Code Online (Sandbox Code Playgroud)
当一切都在一个实例中时很容易,但现在我们正在寻求将这个容量扩展到多个节点.
我们在亚马逊的云中运行这个实例.以前看起来像缩放websockets是ELB的一个问题.我们注意到Amazon现在支持和支持websockets的应用程序负载均衡器.这听起来不错,但在阅读完文档之后我必须承认我并不知道这意味着什么.如果我使用带有数千个命名空间的socket.io,我只是将实例放在这个ALB后面,一切都会起作用吗?我的主要问题是:
如果x个用户加入命名空间,ALB会自动将我的消息重定向到适当的用户吗?所以假设我在ALB后面运行了5个vanilla socket.io实例.用户1创建名称空间.几个小时后通过,用户99999来了,并希望加入这个命名空间,是否需要编写任何其他代码来执行此操作,或者alb会重定向所有应该去的地方吗?发送和接收消息也是如此?
我想在我的移动应用程序中实现Facebook app邀请,以便用户可以邀请他们的朋友加入我的应用程序.我正在使用一种名为Ionic(cordova)的混合框架,但无法找到任何方式邀请朋友.有来自ng-crodova的Facebook插件,但他们不处理应用程序邀请.是否有任何插件或简单的解决方案才能使此功能正常工作?
phonegap-plugins cordova ionic-framework cordova-plugins facebook-invite-friends
我是云计算的新手,但有一个问题是,我将要描述的机制是否存在或是否可以创建?
Dynamodb已经提供了吞吐量(例如,100次写入/秒).当然,在现实世界中,应用程序的实际吞吐量非常动态,并且几乎永远不会达到100次写入/秒的预配量.我在想什么是一种类型的dynamodb队列会很棒.例如,我在高峰时段的dynamodb每秒可能会收到500个写入请求(是我分配的5倍)并会返回错误.是否有一些我可以放在客户端和数据库之间的队列,所以客户端请求进入队列,客户端得到确认他们的请求已被处理,然后队列以100的速率向dynamodb发出请求/确切地说/每秒写入,这样就没有返回错误,我不需要提高吞吐量,这将增加我的成本?
在Nodejs中,我有一个名为的页面variables.js
,如下所示:
exports.var1= 'a';
exports.var2= 'b';
Run Code Online (Sandbox Code Playgroud)
这个文件将我在我的应用程序中使用的变量保存在一个地方.
然后在另一个页面内我使用以下方法调用此页面:
var variables= require('./variables');
Run Code Online (Sandbox Code Playgroud)
现在我可以像这样使用它来访问变量sin那个页面,例如:
alert(variables.var1);
Run Code Online (Sandbox Code Playgroud)
我想在angular2(typescript)中做同样的事情.我试图玩出口和进口,但我不能让它工作.我如何使用打字稿在angular2中做到这一点?
我有一个名为的自定义HTML5标记<scroll-content>
.实际上,我的HTML文件中的某些位置的框架会为我创建并插入此标记.现在我想修改这个标签的CSS,所以在我的CSS文件中我去了:
scroll-content{
overflow: hidden;
}
Run Code Online (Sandbox Code Playgroud)
它做了它应该做的,但这是设计自定义标签的正确方法吗?
我不能为它们添加一个类,因为我没有创建标签,框架没有,所以我无法在我的代码中访问它们,我想避免使用Javascript来查找这些标签并以这种方式添加类.
我更愿意了解修改自定义标签的标准/最安全的方法.
angular ×3
javascript ×3
amazon-ec2 ×1
amazon-elb ×1
base64 ×1
cassandra ×1
cloud ×1
cordova ×1
cqlsh ×1
css ×1
database ×1
encoding ×1
geolocation ×1
geospatial ×1
html ×1
html5 ×1
node.js ×1
nosql ×1
redis ×1
socket.io ×1
typescript ×1
websocket ×1