小编Pau*_*aul的帖子

我怎样才能最好地了解django如何在内部工作?

所以我一直在玩django一点,我真的喜欢这个框架.但是,我想更好地了解它是如何"在幕后"实际运作的.

这是我目前对client-server-django世界的看法,这是非常粗糙的,可能会让你的脚趾甲卷曲(对不起)......

  1. 浏览器向服务器发送Http请求.
  2. 服务器发挥其魔力并通过CGI将请求转储到django(?)
  3. django的某些部分(?)接收请求并将其转换为django请求对象.
  4. 请求对象在通过中间件的一些模糊路径上漫游,中间件用它做奇怪的事情.
  5. 请求对象最终以某个函数(哪个?)结束,该函数查看url,从urls.py中取出模式并调用视图函数.
  6. 视图函数发挥其魔力(模型和模板作为合作伙伴),这可能是我最强烈的理解错觉(好吧,除了数据库抽象魔法,就是......;)
  7. 视图函数返回一个HttpResponse对象,我想这是在CGI的一些模糊路径上返回的.
  8. Webserver再次接管并将Http响应发送给客户端.

好的,那么你问我的问题到底是什么?嗯,这一切是如何工作的,真的吗?我并不指望你用勺子喂我所有的东西......我怀疑答案最终将是"阅读源,卢克",但是,如果我感激不尽,

  1. 你可以清理我的错误观念
  2. 告诉我从哪里开始?我想做的是抓住一个调试器并且只是完成这个过程几次,但我真的不知道从哪里开始
  3. 你可以指出我能解释这个问题的任何文件......是的,我听说过谷歌的这个东西但是没有真正找到任何超级有用的东西.

非常感谢保罗

django webserver cgi internals

15
推荐指数
2
解决办法
4330
查看次数

C++中的typesafe typedef

我想在我的C++程序中使用类似typedef的东西来增强类型安全性.

举个例子,假设我有两个功能

void function1(unsigned idOfType1);
void function2(unsigned idOfType2);
Run Code Online (Sandbox Code Playgroud)

那么我可以错误地将idOfType2传递给function1,反之亦然.我希望编译器在这种情况下给我一个错误.我知道我可以将这些unsigned包装在一个结构中,但是我必须提供一个字段名称并使用它.来访问它们,这有点不方便.这有什么好办法吗?

编辑:据我所知typedef,这不会用于此目的,因为它只是一种类型的简写,不会用于类型检查.

c++ types type-safety

14
推荐指数
2
解决办法
5020
查看次数

我如何摆脱Core中的`let`?

我有一个在内部循环中经常调用的函数.它看起来像这样:

import qualified Data.Vector.Storable as SV

newtype Timedelta = Timedelta Double

cklsLogDens :: SV.Vector Double -> Timedelta -> Double -> Double -> Double
cklsLogDens p (Timedelta dt) x0 x1 = if si <= 0 then -1e50 else c - 0.5*((x1-mu)/sd)^2 
  where
    al  = p `SV.unsafeIndex` 0
    be  = p `SV.unsafeIndex` 1
    si  = p `SV.unsafeIndex` 2
    xi  = p `SV.unsafeIndex` 3
    sdt = sqrt dt
    mu  = x0 + (al + be*x0)*dt
    sd  = si * (x0 ** xi) * …
Run Code Online (Sandbox Code Playgroud)

optimization haskell core

10
推荐指数
2
解决办法
329
查看次数

Haskell:使用O(1)追加和O(1)索引的Datastruture?

我在Haskell中寻找一种支持快速索引和快速追加的数据结构.这是针对由递归引起的memoization问题.

从矢量在c ++中工作的方式(这是可变的,但在这种情况下应该无关紧要)它似乎是不可变的向量与(摊销)O(1)追加和O(1)索引应该是可能的(好吧,它不是,看到这个问题的评论).这在Haskell中是不可能的,还是应该使用Data.Sequence,它有(AFAICT无论如何)O(1)追加和O(log(min(i,ni)))索引?

在一个相关的说明中,作为一个Haskell新手,我发现自己渴望一个实用,简洁的Haskell数据结构指南.理想情况下,这将对最实用的数据结构以及性能特征和指向Haskell库的指针进行相当全面的概述.似乎有很多信息,但我发现它有点分散.我问得太多了吗?

haskell vector data-structures

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

使用变量名打印AST

我正在尝试在Haskell中实现EDSL.我想用绑定的变量名来打印AST(如果我不能得到真实的名字,那么一些生成的名称会这样做).

这是我用一个简单的例子得到的:

import Control.Monad.State

data Free f a = Roll (f (Free f a))
              | Pure a

instance Functor f => Monad (Free f) where
  return         = Pure
  (Pure a) >>= f = f a
  (Roll f) >>= g = Roll $ fmap (>>= g) f

data Expr a = I a
            | Plus (Expr a) (Expr a)
            deriving (Show)

data StackProgram a next = Pop  (a -> next)
                         | Push a next

instance Functor (StackProgram a) where
  fmap f …
Run Code Online (Sandbox Code Playgroud)

dsl haskell

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

什么"来自MODULE import _"在python中做什么?

在Getting things gnome代码库中,我偶然发现了这个import语句

from GTG import _  
Run Code Online (Sandbox Code Playgroud)

并且不知道它意味着什么,从未在文档中看到这一点,并且快速的搜索/谷歌搜索没有改变任何东西.

python import

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

Lisp/Clojure:编写函数生成宏是个好主意吗?

这个问题要求创建一个Clojure宏来生成几个函数.我们找到了一种方法来做到这一点,但却坚持"这是一个好主意吗?"的问题.

我最初的反应并不是真的,原因有两个

  1. 然后,您的代码中没有定义函数,这可能会使您对代码的理解变得复杂!(想象一下,有人对你的某个功能有问题,并查看源代码,但却无法在任何地方找到它).
  2. 最好在函数或宏中分解代码的通用性.让你的计算机编写一堆非常相似的函数是一种糟糕的方法.

你怎么看?什么时候在Lisp中生成函数有意义?它应该"在飞行中"还是你想把它放在某个地方?

lisp macros metaprogramming clojure

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

JavaScript / Jest:如何仅在测试失败时显示测试用例的日志?

我正在使用 selenium 开发端到端测试套件,其中测试用例是使用 jest 测试运行程序用 JavaScript 编写的。

我的问题是,当某些东西无法正常工作时,硒通常会毫不客气地失败,而对其失败的原因几乎没有解释。不用说,像这样调试测试可能非常困难。

我正在寻找一种方法来登录每个测试用例,所以我知道测试失败的地方,但是如果测试实际失败,只在测试输出中显示这些日志(为了不污染测试的控制台输出,有很多不必要的日志)。

所以我想做一些类似的事情:

describe(() => {
    it('case 1', async () => {
        // this log should only be printed on the console if this test fails
        logger.info('message from case 1');
        // ...
    });

    it('case 2', () => {
        logger.info('message from case 2');
        // ...
    });
});
Run Code Online (Sandbox Code Playgroud)

因此,如果测试case 1失败并且case 2没有失败,我会message from case 1在控制台输出中看到(理想情况下就在该测试用例的错误之前)而不是 message from case 2.

这可能是开玩笑的吗?我可以为此自由使用任何日志库。

javascript logging winston jestjs

6
推荐指数
2
解决办法
4710
查看次数