小编Tar*_*oys的帖子

node.js回调中'done'和'next'之间的差异

在护照[configure authentication]文档中,它有一个相当可怕的功能,使用神秘的功能"完成".

passport.use(new LocalStrategy(
  function(username, password, done) {
    User.findOne({ username: username }, function (err, user) {
      if (err) { return done(err); }
      if (!user) {
        return done(null, false, { message: 'Incorrect username.' });
      }
      if (!user.validPassword(password)) {
        return done(null, false, { message: 'Incorrect password.' });
      }
      return done(null, user);
    });
   }
));
Run Code Online (Sandbox Code Playgroud)

现在,在快速文档中,有很多方法可以传递下一个名为next的东西.

app.use(function(err, req, res, next){
  console.error(err.stack);
  res.status(500).send('Something broke!');
});
Run Code Online (Sandbox Code Playgroud)

这是两个框架,快递和护照之间的区别吗?或者他们正在做两件事吗?

javascript node.js express passport.js

17
推荐指数
3
解决办法
1万
查看次数

基于线程的服务器和基于事件的服务器之间有什么区别?

我正在寻找一个类比,这将有助于我理解基于线程的服务器如何处理http请求与基于事件的服务器如何处理http请求之间的区别.假设服务器是建筑物中的商店,端口80是商店的前门,http请求是刚走进前门的顾客.接下来发生什么?商店如何处理客户?该商店如何处理多个客户,以及客户离开商店的速度有何不同?

简而言之,我正在寻找一个关于"事件循环"和"线程","阻塞"和"非阻塞"等事物的物理,真实世界类比的解释.

events multithreading

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

git commit对象的文件格式是什么?

上下文:我希望能够通过我的git提交消息和提交进行搜索而无需经历令人费解的复杂git grep命令,因此我决定看看如何存储git commit消息.

我看了一下.git文件夹,它看起来像是存储的提交

.git/objects 
Run Code Online (Sandbox Code Playgroud)

.git对象文件夹包含一堆名称为a6和9b的文件夹.这些文件夹中的每个文件夹都包含一个名称类似于提交的文件2f29598814b07fea915514cfc4d05129967bf7.当我在文本编辑器中打开其中一个文件时,我会感到胡言乱语.

  1. 什么文件格式是这个乱码/如何存储git提交对象?
  2. 在这个git commit日志中,文件夹9b包含一个commit sha

    aed8a9f773efb2f498f19c31f8603b6cb2a4bc
    
    Run Code Online (Sandbox Code Playgroud)

    为什么,并且是否存在多个提交sha将存储在文件9b中的情况?

  3. 有没有办法将这个乱码转换成纯文本,以便我可以在文本编辑器中混淆提交?

git

11
推荐指数
3
解决办法
7473
查看次数

无法在崇高文本2中杀死python进程

我在很多地方搜索过,但似乎无法让关键字正确.我在Sublime的Python中有一个拖延过程导致Mac上的死亡沙滩球.我无法访问工具>取消生成按钮,并且Control + C不起作用.我如何杀死这个过程?

sublimetext2

9
推荐指数
2
解决办法
3万
查看次数

在Sublime中关闭单个选项卡的命令是什么?

Cmd-shift-w关闭整个窗口.我想关闭一个标签.我怎么做?

tabs sublimetext

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

是否有程序允许我使用有限状态机图设计正则表达式?

我厌倦了正则表达式.这是丑陋的,不可读的,也无法调试.然而,数学家几十年来一直使用有限状态机来设计正则表达式.

有限状态机

如果我对正则表达式感到烦恼,我会手动将其绘制为有限状态机,然后必须将有限状态机转换为我今天使用的任何可怕的正则表达式语法.

有没有一个程序可以让我设计有限状态机并吐出一个正则表达式?

regex state-machine

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

如何在activeyord中为ruby设置一个非空约束?

我的迁移看起来像这样:

class CreatePosts < ActiveRecord::Migration
  def change
     create_table :posts do |t|
      t.string  :title 
      t.string  :content
      t.string  :author
      t.timestamps
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

如何将标题设置为NOT NULL?如果是SQL查询,我会这样做:

CREATE TABLE "posts" 
    ("id" serial primary key, 
     "title" character varying(255) NOT NULL, 
     "content" character varying(255), 
     "author" character varying(255), 
     "created_at" timestamp NOT NULL, 
     "updated_at" timestamp NOT NULL) 
Run Code Online (Sandbox Code Playgroud)

那么如何将该查询转换为ActiveRecord?

activerecord ruby-on-rails

7
推荐指数
2
解决办法
4092
查看次数

如何在 Sublime 中强制执行 50 个字符的提交摘要行?

作为一个天生健谈的灵魂,我的摘要行几乎总是超过 50 个字符。如何在 sublime 中对提交消息和仅提交消息的标题行强制执行 50 个字符的限制?有没有办法自定义设置?

git commit sublimetext

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

ssh-add和ssh-agent有什么区别?

我正在关注ssh github教程,我对ssh-add和ssh-agent之间的区别感到困惑.该教程似乎暗示每次我想使用我的ssh密钥时都需要输入密码,为了阻止它,我需要以某种方式将密钥提供给ssh代理.但是,在运行命令ssh-add之前,我没有提示输入密码,并且根据手册页

ssh-add将RSA或DSA身份添加到身份验证代理ssh-agent(1).

如果代理的要点是不必使用密码,为什么代理要求我创建密码?

这是我正在运行的代码和我对ssh-add的理解:

ssh-keygen -t rsa -C "your_email@example.com"
# Creates a new ssh key, using the provided email as a label
# Generating public/private rsa key pair. Public key is like a padlock, private key is like a padlock key. 
# Enter file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]  
#This is like taking the padlock and they key together and sticking them in a box.
#-------------------------------
ssh-add id_rsa
#ssh-add is like sticking your …
Run Code Online (Sandbox Code Playgroud)

ssh

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

在使用护照和快递的会话中,序列化和去序列化究竟做了什么?

我对会话的作用只有最危险的概念,官方文档没有多大帮助,因为它假定我知道会话是什么,因此也知道为什么用户需要序列化和反序列化.

这就是我认为我所知道的:一个会话就像贴在服务器冰箱上的便利贴,上面写着"用户鲍勃很酷.让他进来吧." 每次来自bob的新请求时,服务器都会检查post-it节点并说:"是的.Bob仍然很酷."

因此序列化正在编写便利贴,反序列化正在将其删除.这就是我不明白的地方:这段代码如何编写一个post-it节点,"做"了什么?

passport.serializeUser(function(user, done) {
  done(null, user.id);
});
Run Code Online (Sandbox Code Playgroud)

以下代码如何丢弃便利贴?findByID访问我存储用户的数组.如果"后贴注"刚刚被丢弃,为什么需要访问它?

passport.deserializeUser(function(id, done) {
  findById(id, function (err, user) {
    done(err, user);
  });
});
Run Code Online (Sandbox Code Playgroud)

究竟是什么流程呢?

这些示例的其余代码就在这里

session serialization node.js passport.js

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

bash变量$ COMP_LINE是什么,它有什么作用?

bash脚本中的$ COMP_LINE变量是什么?《Bash参考手册》有以下内容。

$ COMP_LINE

当前命令行。该变量仅在外壳函数和由可编程完成工具调用的外部命令中可用(请参见可编程完成)。

我不明白“当前命令行”的含义。

我试图将这个脚本分开看看它如何管理拦截bash命令。

hook() {
    echo "$@"
}

invoke_hook() {
    [ -n "$COMP_LINE" ] && return
    [ "$BASH_COMMAND" = "$PROMPT_COMMAND" ] && return
    local command=`history 1 | sed -e "s/^[ ]*[0-9]*[ ]*//g"`;
    hook "$command"
}

trap 'invoke_hook' DEBUG
Run Code Online (Sandbox Code Playgroud)

我在弄清楚以下行应该做什么时遇到麻烦。

[ -n "$COMP_LINE" ] && return
Run Code Online (Sandbox Code Playgroud)

在运行脚本的其余部分之前,我假设它已经过某种检查或测试,因为[]是bash测试命令的别名,但是由于我看不懂它,所以我无法弄清楚它应该测试什么。

variables bash shell

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