小编sla*_*ote的帖子

NodeJS中的基本静态文件服务器

我试图在nodejs中创建一个静态文件服务器,作为理解节点而不是完美服务器的练习.我非常了解Connect和node-static等项目,并且完全打算将这些库用于更多生产就绪的代码,但我也想了解我正在使用的基础知识.考虑到这一点,我编写了一个小型server.js:

var http = require('http'),
    url = require('url'),
    path = require('path'),
    fs = require('fs');
var mimeTypes = {
    "html": "text/html",
    "jpeg": "image/jpeg",
    "jpg": "image/jpeg",
    "png": "image/png",
    "js": "text/javascript",
    "css": "text/css"};

http.createServer(function(req, res) {
    var uri = url.parse(req.url).pathname;
    var filename = path.join(process.cwd(), uri);
    path.exists(filename, function(exists) {
        if(!exists) {
            console.log("not exists: " + filename);
            res.writeHead(200, {'Content-Type': 'text/plain'});
            res.write('404 Not Found\n');
            res.end();
        }
        var mimeType = mimeTypes[path.extname(filename).split(".")[1]];
        res.writeHead(200, mimeType);

        var fileStream = fs.createReadStream(filename);
        fileStream.pipe(res);

    }); //end path.exists
}).listen(1337);
Run Code Online (Sandbox Code Playgroud)

我的问题是双重的

  1. 这是在节点中创建和流式传输基本html等的"正确"方法,还是有更好/更优雅/更健壮的方法?

  2. 节点中的.pipe()基本上只是执行以下操作吗?

.

var …
Run Code Online (Sandbox Code Playgroud)

webserver http node.js

84
推荐指数
3
解决办法
8万
查看次数

Sinatra CSRF真品令牌

我正在使用Sinatra框架在ruby中构建一个简单的应用程序.它主要是"获取" - 大多数请求将用于列出数据.但是,应用程序中有几个关键屏幕将收集用户输入.我想确保应用程序尽可能安全,并且目前正试图找到如何实现您在Rails表单中获得的真实性令牌?

我必须去的地方:嗯,我知道我需要csrf的令牌,但我不确定我是否需要自己生成它们,或者Sinatra是否可以为我做这些 - 我已经查看了文档并且他们说Sinatra正在使用机架保护,但是,我找不到它的任何示例代码,似乎无法弄清楚如何实现它 - 任何帮助升值 - 谢谢!

ruby csrf sinatra

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

Ruby to_s转换为二进制(参数中的Splat运算符)

如果我运行以下代码,前两行将返回我所期望的.但是,第三个返回2的二进制表示.

2.to_s      # => "2"
2.to_s * 2  # => "22"
2.to_s *2   # => "10" 
Run Code Online (Sandbox Code Playgroud)

我知道在调用时传入2 to_s会将我的输出转换为二进制,但为什么to_s忽略*第三种情况呢?如果这有任何区别,我正在运行Ruby 1.9.2.

ruby splat ruby-1.9.2

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

Rails在模型中设置默认布尔值

我正在Rails编写一个简单的博客应用程序,版本3.2.8.我已将"posts"资源搭建如下:

rails g scaffold post title:string body:string islive:boolean
Run Code Online (Sandbox Code Playgroud)

我希望默认情况下将islive设置为false,我试图在我的模型中这样做.我还决定我不希望它可用于大规模分配,所以我编写了我的模型如下:

class Post < ActiveRecord::Base
  attr_accessible :body,  :title

  before_save :default_values

  def default_values
    self.islive = false
  end
end
Run Code Online (Sandbox Code Playgroud)

我也islive从表单中删除了该字段.问题是当我尝试使用上面的模型创建一个新帖子时,它不会保存.控制台看起来像这样:

Started POST "/posts" for 127.0.0.1 at 2012-10-14 18:23:30 +0100
Processing by PostsController#create as HTML
  Parameters: {"utf8"=>"?",
"authenticity_token"=>"/lNa21JBeBz/H2cYLqAsF8uWr1frLV88WsOVKzOqwb4=", "post"=>
 {"title"=>"sample title", "body"=>"the body"}, "commit"=>"Create Post"}
(0.1ms)  begin transaction
(0.0ms)  rollback transaction
Rendered posts/_form.html.erb (1.8ms)
Rendered posts/new.html.erb within layouts/application (2.5ms)
Completed 200 OK in 29ms (Views: 26.3ms | ActiveRecord: 0.1ms)
Run Code Online (Sandbox Code Playgroud)

没有任何东西得救.我只是得到了begin transaction rollback …

ruby boolean default ruby-on-rails ruby-on-rails-3

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