在下面的代码取自Elm Form Example,第122行,<<运算符是什么意思?
Field.field Field.defaultStyle (Signal.send updateChan << toUpdate) "" content
Run Code Online (Sandbox Code Playgroud)
在Elm语法参考中找不到它.
这是否意味着,当磁场变化,而不是发送其content至updateChan,发送toUpdate到updateChan?
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,它似乎不对.
正如标题所说,sys.argvpython 3中有一个等价物允许我将参数作为字节读取吗?
我想要这个的原因是,我有一个脚本接受一个字节(\ xe9\x88 ...)作为它的第一个arg,第一个arg应该是从utf8字符串转换的字节,sys.argv将尝试使用某些编码解码第一个arg,这可能不是utf8,因此程序可能会失败.如果我可以在不调用sys.argv的情况下访问args,则不会进行转换.
如何使以下代码在命令提示符/ 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并重新编译它是可以接受的,如果没有其他方法.
任何的想法?
谢谢.

如何在vim脚本中获得3的宽度(图像中标有绿色)?
如果没有signs列,并且没有其他"特殊列",我可以得到它
winwidth(0) - (max([len(line('$')), &numberwidth-1]) + 1)
我有一些像这样的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昂贵的功能.
谢谢.
编辑
我刚刚访问了懒惰记录器消息字符串评估,但不满意,主要是因为:
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) 我有一个没有-spec或-type在代码中的项目,目前透析器可以找到一些警告,其中大部分是在机器生成的代码中.
将类型规格添加到代码中会使透析器发现更多错误吗?
关于主题,是否有任何工具来检查规格是否被违反?
使用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) 问题:
我克隆了一个存储库,有一些配置文件可以自定义已编译应用程序的行为,我更改了其中一些(大约 10 个)以满足我的需要。现在,每次我提交一些东西时,我都必须逐行检查输出git status(或我日常使用的 GUI 中的“未暂存文件”),而我不想提交的 10 个文件总是在那里,这很快就会变得烦人。
git 是否有一些未知的(对我而言)功能或技巧可以让 git 在我需要时忽略这 10 个文件git status,但是当我git pull更改(由上游)这些文件的版本时,我仍然会遇到冲突(如果有的话)?
我无法将所有这些文件合并到一个大配置中,部分原因是它们是不同的东西,部分原因是该应用程序现在在生产环境中运行了一段时间。
Git 别名可能不起作用,因为如果不需要做任何花哨的事情,我通常使用 GUI(更好看的差异,方便地控制要提交的内容等),而不是git在终端中。
python ×3
elm ×2
erlang ×2
cmd ×1
dialyzer ×1
erlang-otp ×1
flask ×1
git ×1
haskell ×1
logging ×1
powershell ×1
python-3.x ×1
vim ×1
windows ×1