小编Ans*_*was的帖子

与光纤模块相关的Meteor部署问题

在尝试部署meteor时,我通过以下方式安装节点光纤:

$ cd bundle/server
Run Code Online (Sandbox Code Playgroud)

然后安装光纤

$ npm install fibers
Run Code Online (Sandbox Code Playgroud)

它似乎安装但有这条消息:

`linux-x64-v8-3.14` exists; testing
Binary is fine; exiting
fibers@1.0.1 node_modules/fibers
Run Code Online (Sandbox Code Playgroud)

但是,在使用以下代码部署代码时:

node bundle/main.js
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

throw new Error('`'+ modPath+ '.node` is missing. Try reinstalling `node-fibe
~/main_repo/bundle/server/node_modules/fibers/bin/linux-x64-v8-3.20/fibers.node` is missing. Try reinstalling `node-fibers`?
Run Code Online (Sandbox Code Playgroud)

我可以看到linux-x64-v8-3.xx的版本不同.我正在使用Ubuntu 13.04

节点版本为v0.11.3,NPM版本为1.2.18

meteor node-fibers

8
推荐指数
1
解决办法
4576
查看次数

从mysql表中删除旧记录但保留备份

我有一个MYSQL表,只需要在今天日期之前30天内获得数据.它的数据可能在今天之后的几年内.为了更快地查询,我通常会删除旧记录,因为我认为没有必要搜索旧记录.但是,如果我们需要它来进行分析,我仍会保留记录的备份副本.原始表是这样的:

CREATE TABLE featured_deal (
     id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
      fsa VARCHAR(10),
      poster_id int(11),
      dealid bigint(20),
      bookedDate date,
      createDate timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
    UNIQUE KEY `featured_unique`(fsa, bookedDate)
    )
Run Code Online (Sandbox Code Playgroud)

我创建了一个表,这是该表的副本,称为历史:

CREATE TABLE featured_deal_history (
             id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
              fsa VARCHAR(10),
              poster_id int(11),
              dealid bigint(20),
              bookedDate date,
              createDate timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
            UNIQUE KEY `featured_unique`(fsa, bookedDate)
            )
Run Code Online (Sandbox Code Playgroud)

每当原始表上发生插入时,我都会触发填充历史表:

CREATE TRIGGER `featured_to_history`
            AFTER INSERT ON lst_enmasse_featured_deal 
            FOR EACH ROW
            INSERT INTO lst_enmasse_featured_deal_history (fsa,poster_id,dealid,bookedDate,createDate)
            VALUES (NEW.fsa,NEW.poster_id,NEW.dealid,NEW.bookedDate,NEW.createDate)
Run Code Online (Sandbox Code Playgroud)

最后,我使用cron作业和命令清理表: …

mysql performance replication

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

Firefox中的JCrop附加原始图像高度/宽度

我们正在使用JCrop库来裁剪个人资料图片.当用户更改其个人资料照片时,新照片仍然使用旧图像尺寸.这适用于Chrome,但在Firefox中不起作用.我使用destroy删除了上一个图像和JCrop:

jcrop_api.destroy();
Run Code Online (Sandbox Code Playgroud)

我还添加了这行代码,试图清除包含宽度和高度的样式.

$('#target').removeAttr('style');
Run Code Online (Sandbox Code Playgroud)

css jquery jcrop

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

Meteor.js上传生产文件夹

因此,我们在应用程序中构建了一个文件上传器,用于处理本地环境.我们将文件上传到公共/上传,我们可以使用以下方式读取文件:

http://localhost:3000/upload/filename.extension
Run Code Online (Sandbox Code Playgroud)

现在,当我们将代码移至生产时,我们使用检查:

getUploadPath = function () {
    var fs = Npm.require('fs');
    var path = Npm.require('path');
    var devPath = path.join(process.cwd(),"../../../../../public");
    var prodPath = path.join(process.cwd(),"../client/app/");
    if (fs.existsSync(devPath)) {
        return path.join(devPath,"upload");
    } 
    else {
        return path.join(prodPath,"upload");
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,这会将文件保存到{prod_path}/programs/client/app/upload.但是,我无法在应用程序中使用该文件.令人惊讶的是,本地的所有文件似乎也存在于同一个上传文件夹中,并且可由应用程序访问.我错过了什么?

node.js meteor

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

WebSocket over SSL:Cloudflare

我在cloudflare后面有一个网站.我需要通过SSL启用websockets而不关闭cloudflare支持.我有一个PRO计划,因此不会获得新的websocket支持.我正在使用Nginx代理SSL连接到节点服务器上运行的Web套接字.现在,我读到某个地方,cloudflare可以使用已批准的端口支持websockets.因此,我使用8443作为Nginx端口,使用另一个端口作为节点服务器.使用wscat它会返回200错误.

$ wscat -c wss://xyz.com:8443
error: Error: unexpected server response (200)
Run Code Online (Sandbox Code Playgroud)

我知道websocket期待101代码.但是,如果我访问https://xyz.com:8443,我可以看到节点服务器显示的页面告诉我代理正在运行.此外,一旦我关闭cloudflare支持,websocket就开始工作了.有任何线索让这个工作.我知道我可以创建一个子域但我更喜欢在cloudflare后面运行websocket.

nginx websocket node.js cloudflare

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

Web浏览器无法在Google Chrome上运行

我有一个PHP服务器绑定到端口并侦听套接字.我的服务器是在PHP脚本中启动的:

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1);
socket_bind($socket, 0, $port);
Run Code Online (Sandbox Code Playgroud)

然后它监听端口:

socket_listen($socket);
Run Code Online (Sandbox Code Playgroud)

当HTTP消息从客户端到达时,服务器将读取标头:

$header = socket_read($socket_new,1024);
Run Code Online (Sandbox Code Playgroud)

然后将连接存储在Memcache存储中.这适用于大多数浏览器,包括safari,firefox和Chrome的Canary.但是,它不适用于chrome.浏览器抛出一条错误消息:

与'ws://xyz.com:9001/chat_server.php'的WebSocket连接失败:WebSocket握手期间出错:错误的'Sec-WebSocket-Accept'标头值

我的Chrome版本是:版本38.0.2125.111米(64位)

php google-chrome websocket

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