小编Not*_* ID的帖子

```运算符在榆树中意味着什么?

在下面的代码取自Elm Form Example,第122行,<<运算符是什么意思?

Field.field Field.defaultStyle (Signal.send updateChan << toUpdate) "" content
Run Code Online (Sandbox Code Playgroud)

Elm语法参考中找不到它.

这是否意味着,当磁场变化,而不是发送其contentupdateChan,发送toUpdateupdateChan

elm

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

向Flask的app.logger提供额外信息

Flask 0.10 的默认调试日志格式

debug_log_format =
'-------------------------------------------------------------------------\n%
%(levelname)s in %(module)s [%(pathname)s:%(lineno)d]:\n%(message)s
\n-------------------------------------------------------------------------'
Run Code Online (Sandbox Code Playgroud)

如何将其更改为:

'-------------------------------------------------------------------------\n%
work_id %(levelname)s in %(module)s [%(pathname)s:%(lineno)d]:\n%(message)s
\n-------------------------------------------------------------------------'
Run Code Online (Sandbox Code Playgroud)

其中work_id是每个请求的随机生成的UUID.

如果记录器是由我自己创建的,我可以使用a logging.LoggerAdapter并提供额外信息作为dict {'work_id': some_uuid},然后我可以使用在日志记录中访问它record.work_id.

但是这app.logger是由create_logger()Flasklogging.py创建,我是否必须修改Flask源来实现我想要的?

我也想过app.logger用我自己的记录器覆盖,就像app.logger = my_logger,它似乎不对.

python flask

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

在Python 3中将sys.argv作为字节访问

正如标题所说,sys.argvpython 3中有一个等价物允许我将参数作为字节读取吗?

我想要这个的原因是,我有一个脚本接受一个字节(\ xe9\x88 ...)作为它的第一个arg,第一个arg应该是从utf8字符串转换的字节,sys.argv将尝试使用某些编码解码第一个arg,这可能不是utf8,因此程序可能会失败.如果我可以在不调用sys.argv的情况下访问args,则不会进行转换.

python python-3.x

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

Windows上的GHCi:如何从控制台读取Unicode输入?

如何使以下代码在命令提示符/ LameShell中使用Unicode(CJK)?

main = getLine >>= putStrLn
Run Code Online (Sandbox Code Playgroud)

(Windows 8.1,Haskell Platform 2014)

不,chcp 65001不行,也不行chcp 10000.

不,我不想将英语(美国)的系统本地(控制面板/时钟,语言,地区/语言/更改日期,时间或数字格式/管理)更改为其他人.

是的,我已将字体设置为Lucida Console.

我尝试过ConEmu/Cmder/Console2,他们都说"异常:: hGetLine:文件结束".我也试过Emacs,(我使用Vim),它没有崩溃,但无论我输入什么,我总是得到空格.

补丁GHC并重新编译它是可以接受的,如果没有其他方法.

任何的想法?

谢谢.

windows powershell haskell cmd

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

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

在vim脚本中获取"可用"窗口宽度

获取vim中文本字段的宽度

如何在vim脚本中获得3的宽度(图像中标有绿色)?

如果没有signs列,并且没有其他"特殊列",我可以得到它

winwidth(0) - (max([len(line('$')), &numberwidth-1]) + 1)

vim

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

Python:如何进行延迟调试日志记录

我有一些像这样的python:

def foo():
    logger = logging.getLogger()
    # do something here
    logger.debug('blah blah {}'.format(expensive_func()))

foo()
Run Code Online (Sandbox Code Playgroud)

where expensive_func()是一个返回字符串的函数,执行起来很昂贵.

在开发时,日志级别设置为DEBUG,并且expensive_func()执行,消息被记录,一切都很好.

问题是,当我将日志级别设置为严格大于DEBUG(例如WARNING)时,在生产环境中,显然返回值expensive_func()不会被记录,但昂贵的函数本身仍将被执行.

我的问题是:当日志记录级别为WARNING时,如何防止python出现昂贵的函数?

我不想删除该调试行或添加像if level > DEBUG: return昂贵的功能.

谢谢.

编辑

我刚刚访问了懒惰记录器消息字符串评估,但不满意,主要是因为:

  1. 这是一些丑陋的东西;
  2. 即使我用一些Lazy类包装昂贵的函数,当我有两个昂贵的函数时,我会怎么做?(如下所示).
class Lazy:
    def __init__(self, func, *a, **ka):
        self.func= func
        self.a = a
        self.ka= ka
    def __str__(self):
        return str(self.func(*self.a, **self.ka))

# Though this is ugly, it works
logger.debug('Message: %s', Lazy(expensive_func))

# What if I wanted to do this?
# logger.debug('Message: {}'.format(expf_1(expf_2(some_arg))))
# Maybe …
Run Code Online (Sandbox Code Playgroud)

python logging lazy-evaluation

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

Erlang:将类型规范添加到代码中会使透析器更有效吗?

我有一个没有-spec-type在代码中的项目,目前透析器可以找到一些警告,其中大部分是在机器生成的代码中.

将类型规格添加到代码中会使透析器发现更多错误吗?

关于主题,是否有任何工具来检查规格是否被违反?

erlang dialyzer

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

Erlang:两阶段init安全吗?

使用gen_server时,有时候我需要做一个"两阶段初始化"或"分离初始化",如下所示:

a)在gen_server回调模块中init/1,只完成了部分初始化

b)之后,a self() ! init_stage2被称为

c)init/1退货{ok, PartiallyInitializedState}

d)在将来的某个时刻,handle_info/2要求处理init_stage2b)中发送的消息,从而完成启动过程.

主要关心的是,如果一个根服务器call/ cast/ info点是c之间进行)和d),有可能是与被处理请求PartiallyInitializedState

根据10.8是否保证了消息接收的顺序?,(引用,下面),这是可能的,(如果我理解正确),但我不能产生失败(c之间的请求)和d)处理部分启动状态)

是的,但只在一个过程中.

如果有一个实时进程并且你发送消息A然后发送消息B,则保证如果消息B到达,则消息A到达它之前.

另一方面,假设进程P,Q和R.P将消息A发送到Q,然后将消息B发送到R.不能保证A在B之前到达.(如果需要,则分布式Erlang会非常困难) !)

下面是我用来尝试在c)和d)之间处理调用的一些代码,但当然失败了,否则,我不会在这里问这个问题.(test:start(20000)如果你感兴趣的话,用来跑)

%% file need_two_stage_init.erl
-module(need_two_stage_init).

-behaviour(gen_server).

-export([start_link/0]).

-export([init/1, terminate/2, code_change/3,
         handle_call/3, handle_cast/2, handle_info/2]).


start_link() ->
    gen_server:start_link(?MODULE, {}, []).


init({}) ->
    self() ! go_to_stage2,
    %% init into stage1
    {ok, stage1}.

handle_call(_Request, _From, Stage) ->
    {reply, Stage, Stage}.

%% upon receiving this directive, …
Run Code Online (Sandbox Code Playgroud)

erlang erlang-otp

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

git:我不想提交的许多本地更改

问题:

我克隆了一个存储库,有一些配置文件可以自定义已编译应用程序的行为,我更改了其中一些(大约 10 个)以满足我的需要。现在,每次我提交一些东西时,我都必须逐行检查输出git status(或我日常使用的 GUI 中的“未暂存文件”),而我不想提交的 10 个文件总是在那里,这很快就会变得烦人。

git 是否有一些未知的(对我而言)功能或技巧可以让 git 在我需要时忽略这 10 个文件git status,但是当我git pull更改(由上游)这些文件的版本时,我仍然会遇到冲突(如果有的话)?

我无法将所有这些文件合并到一个大配置中,部分原因是它们是不同的东西,部分原因是该应用程序现在在生产环境中运行了一段时间。

Git 别名可能不起作用,因为如果不需要做任何花哨的事情,我通常使用 GUI(更好看的差异,方便地控制要提交的内容等),而不是git在终端中。

git

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