Articles of javascript

我怎样才能更正Nginx反向代理configuration中的Meteor base-url?

我通过反向代理(在Ubuntu服务器上)将Apache和Meteor都安装在NginX后面。 Apache直接映射为baseURL(www.mydomain.com/),Meteor映射为子文件夹(www.mydomain.com/live/)。 我遇到的问题是我的Meteortesting(在端口3000工作正常)在NginX后面停止工作,因为每个引用(CSS,Javascript,模板)对于baseURL是绝对的。 <html> <head> <link rel="stylesheet" href="/live.css?abc"> <script type="text/javascript" src="/packages/underscore/underscore.js?efg"></script> … <script type="text/javascript" src="/template.live.js?hij"></script> <script type="text/javascript" src="/live.js?klm"></script> </head> 显然,由于Apache被映射到baseURL,因此在通过NginX进行testing时,没有find这些文件。 解决问题的最好方法是什么? 系统pipe理不是我的特长,而Meteor是我在服务器端JavaScript的第一次入侵。 所以我甚至不知道这是否可以解决,如果是的话,如果这是通过服务器configuration,meteorconfiguration或编程。 编辑:在meteor0.4.0新的“绝对url”包修正了问题! http://docs.meteor.com/#absoluteurl

实时的pubsub通过websockets与历史logging聊天

我有兴趣创buildDisqus与他们的评论系统做了什么: http : //highscalability.com/blog/2014/5/7/update-on-disqus-its-still-about-realtime-but-go-demolishes html的 基础架构中最令人印象深刻的部分是Nginx推送stream模块: 仍然在5台机器上运行Nginx机器。 使用NginxPushStream,它支持EventSource,WebSocket,长轮询和Forever Iframe。 所有用户都连接到这些机器。 在正常的日子里,每台机器可以看到3200个连接/秒,100万个连接,150K包/秒TX和130K包/秒RX,150Mbps / s TX和80M比特/秒RC,<15ms延迟端到端这比Javascript快可以提供评论) 最初有很多资源枯竭的问题。 给出了Nginx和OS的configuration,以帮助缓解这些问题,并调整它们以处理具有多个连接移动less量数据的场景。 显然这个Nginx模块不支持数据存储。 只有在push_stream_store_messages指令支持的内存机制,但作为作者说 : 存储消息的主要目标是将消息传递给发布消息时处于脱机状态的订阅者。 很明显,Disqus不会直接向Nginx发布消息,而是尽pipeGo后端设法将消息存储在Redis中,然后通过内部POST将消息发布到保持订阅者的Nginx。 有没有人有一个经验,即使我们使用推送stream模块更新的消息,之前加载页面上通过Redis的消息历史? 您是否必须一次性推送旧邮件历史logging,或者将其呈现为纯HTML,然后是pubsub,以便在加载页面后显示新邮件? 逻辑需要尽可能的分离。 我不打算在用户和Nginx之间引入用于实时消息通信的阻塞机制。 这将是一个很好的解决scheme下面? 客户端从网页推送消息(通过websockets) Ajax请求直接推送stream位置和Ajax完整callback它请求后端存储消息在Redis(在另一个方向它被后端locking) 一旦用户刷新页面后端提取Redis列表并显示历史logging 用户可以查看历史logging并发布新消息 它只需要开发两个后端请求:接受消息并存储在Redis中,获取数据并在页面加载时显示。 最好使用无阻塞的后端,比如Lua模块 ,甚至Redis的HTTP接口都称为Webdis 。 我想从架构的angular度来了解一下聪明人对这个机制的看法,没有代码的例子。

为Express和NginxconfigurationHTTPS

我正在尝试configuration我的ExpressJS应用程序的https连接。 Express服务器在localhost:8080和安全的localhost:8443上运行。 这里是与https相关的server.js代码: var app = express(); var https = require('https'); const options = { cert: fs.readFileSync('/etc/letsencrypt/live/fire.mydomain.me/fullchain.pem'), key: fs.readFileSync('/etc/letsencrypt/live/fire.mydomain.me/privkey.pem') }; app.listen(8080, console.log("Server running")); https.createServer(options, app).listen(8443, console.log("Secure server running on port 8443")); 这是我的Nginxconfiguration: server { listen 80; listen [::]:80; server_name fire.mydomain.me; location / { proxy_pass http://localhost:8080; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host […]

如何正确设置Nginx的访问控制 – 允许 – 原产地基于来自请求Origin头的响应头?

我正在寻找一个nginxconfiguration设置,它将Access-Control-Allow-Origin设置为Access-Control-Allow-Origin中收到的值。 看起来, *方法不适用于Chrome,并且多个URL不能用于Firefox,因为CORS规范不允许。 到目前为止,唯一的解决scheme是将Access-Control-Allow-Origin设置为Access-Control-Allow-Origin中接收的值(是的,可以执行一些validation)。 问题是如何在nginx中做到这一点,最好不要安装额外的扩展。 set $allow_origin "https://example.com" # instead I want to get the value from Origin request header add_header 'Access-Control-Allow-Origin' $allow_origin;

节点js azure SDK getBlobToStream使用大量内存

我正在编写一个备份脚本,只需将特定Azure帐户的所有blob容器中的所有blob下载即可。 该脚本使用async.js来确保只有这么多的线程可以同时运行,所以它不会使服务器过载。 当我运行这个脚本时,它可以正常工作,但是当它遇到大文件时,内存不足。 我猜测下载运行速度比磁盘写入速度快,最终会填满内存缓冲区,导致内存耗尽,但是到目前为止,debugging确切的原因是不可能的。 似乎使用大量内存的具体function如下所示: blobService.getBlobToStream( containerName, blob.name, fs.createWriteStream(fullPath), function(error) { if(error){ //Something went wrong, write it to the console but finish the queue item and continue. console.log("Failed writing " + blob.name + " (" + error + ")"); callback(); } else if(!error) { //Write the last modified date and finish the queue item silently […]

如何更新刷子上多线的标记?

画多行 var city= focus.selectAll(".city") .data(cities) .enter().append("g") .attr("class", "city"); var bad=city.append("path") .attr("class", "line") .attr("d", function(d) { return line(d.values); }) .style("stroke", function(d) { return color(d.name); }) .style("opacity",0.5); 代码为多行的标记 var point = city.append("g") .attr("class", "line-point"); point.selectAll('.line-point') .data(function(d){ return d.values}) .enter() .append('circle') .attr("cx", function(d) { return x(d.timestamp) }) .attr("cy", function(d) { return y(d.limit) }) .attr("r", 1) .style("fill", "grey") .on("mouseover", […]

另一个文件权限问题

我有一个分类网站,当用户发布一个新的分类,他们可能会select上传图片。 我的PHP代码将select的图像,上传到一个图像文件夹,并相应地命名。 这里的问题是,我必须设置图像文件夹777为了这个工作。 我的问题是,应该设置什么权限? 还有任何想法,为什么它不工作,如果不是777? 如果你需要更多的投入,只要让我知道… 谢谢 UPDATE 我有一个用户(丹尼)有根访问…图像上传到的文件夹,以及“魔术image_upload.php”文件,是由用户“丹尼”拥有。 然后我试着将它们设置为chmod 764,但是当我这样做的时候,我遇到了一个问题。 看来,我似乎要设置r + w + e权限的“公共”的一切工作。 不知道为什么… 再次感谢

Uncaught ReferenceError:$未定义?

这个代码怎么抛出一个 Uncaught ReferenceError:$未定义 什么时候可以呢? $(document).ready(function() { $('#tabs > ul').tabs({ fx: { opacity: 'toggle' } }); $('#featuredvid > ul').tabs(); }); 标签中的结果不再closures。 在头文件中引用了jQuery: <script language="JavaScript" type="text/javascript" src="<?php echo get_option('siteurl') ?>/js/sprinkle.js"></script> <script language="JavaScript" type="text/javascript" src="<?php echo get_option('siteurl') ?>/js/jquery-1.2.6.min.js"></script> <script language="JavaScript" type="text/javascript" src="<?php echo get_option('siteurl') ?>/js/jquery-ui-personalized-1.5.2.packed.js"></script>

chrome.tabs.getSelected未定义在使用清单版本2的最新chrome上?

我试图创build一个插件,它使用chrome.tabs.getSelected来查找当前的URL, 下面我附上一个最小的例子,当任何按键被按下,一个对话框将popup,但它不断告诉我chrome.tabs.getSelected是未定义的: 清单文件: { "content_scripts": [ { "matches": ["http://*/*" , "https://*/*"], "js" : [ "main.js" ] } ], "manifest_version": 2, "description": "XX", "icons": { "128": "icon.png", "16": "button.png", "32": "button.png", "48": "icon.png" }, "name": "XX", "permissions": [ "tabs", "http://*/*", "https://*/*" ], "version": "1.2" } 和main.js: window.addEventListener("keyup", function(e) { chrome.tabs.getSelected(null, function(tab) { // undefined alert (tab.url); […]

“用代码8退出”示例meteor应用程序

我是Meteor.js新手,目前正在研究"leaderboard"示例应用程序。 插入一行代码后: Template.leaderboard.player = function(){ return "Some other text" } 我收到了应用程序界面中的错误: “你的应用程序崩溃了,这是最新的日志。” 你好,世界 /home/tomas/.meteor/packages/meteor-tool/.1.0.35.hgbesu++os.linux.x86_32+web.browser+web.cordova/meteor-tool-os.linux.x86_32/dev_bundle/lib/node_modules/fibers/future.js:173 throw(ex); ^ ReferenceError: Template is not defined at app/leaderboard.js:13:1 at app/leaderboard.js:17:3 at /home/tomas/leaderboard/.meteor/local/build/programs/server/boot.js:168:10 at Array.forEach (native) at Function._.each._.forEach (/home/tomas/.meteor/packages/meteor-tool/.1.0.35.hgbesu++os.linux.x86_32+web.browser+web.cordova/meteor-tool-os.linux.x86_32/dev_bundle/lib/node_modules/underscore/underscore.js:79:11) at /home/tomas/leaderboard/.meteor/local/build/programs/server/boot.js:82:5 => Exited with code: 8 => Your application is crashing. Waiting for file change." 我重新保存了文件,进入terminal并停止了服务器并重新启动并收到了以下内容: => Exited with code: 8 […]