我试图在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)
我的问题是双重的
这是在节点中创建和流式传输基本html等的"正确"方法,还是有更好/更优雅/更健壮的方法?
节点中的.pipe()基本上只是执行以下操作吗?
.
var …Run Code Online (Sandbox Code Playgroud) 我正在使用Sinatra框架在ruby中构建一个简单的应用程序.它主要是"获取" - 大多数请求将用于列出数据.但是,应用程序中有几个关键屏幕将收集用户输入.我想确保应用程序尽可能安全,并且目前正试图找到如何实现您在Rails表单中获得的真实性令牌?
我必须去的地方:嗯,我知道我需要csrf的令牌,但我不确定我是否需要自己生成它们,或者Sinatra是否可以为我做这些 - 我已经查看了文档并且他们说Sinatra正在使用机架保护,但是,我找不到它的任何示例代码,似乎无法弄清楚如何实现它 - 任何帮助升值 - 谢谢!
如果我运行以下代码,前两行将返回我所期望的.但是,第三个返回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.
我正在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 …