小编Ibo*_*lit的帖子

Python 类型:类型字典或 defaultdict 扩展类

我有一段旧的 python 代码,用于解析格式严格的文本文件(存储用于本地化的字符串)。由于结构是分层的,并且某些元素可能存在也可能不存在,因此程序使用嵌套的defaultdicts 来表示它。就像是:

terms = defaultdict(lambda: defaultdict(str)) # dict<key, dict<lang, translation>>
Run Code Online (Sandbox Code Playgroud)

因为这些字典没有类型化(因为它们的成员可以是任何类型)并且因为它们是嵌套的,并且因为我需要向该层次结构添加另一个级别,所以我决定向该程序添加类型化:

from typing import Tuple, Dict, Set, List, NewType

Key = NewType('Key', str)
Lang = NewType('Lang', str)
Translation = NewType('Translation', str)
PLIndex = NewType('PLIndex', int)
Run Code Online (Sandbox Code Playgroud)

但是,我终生无法弄清楚如何重写terms =上面的行以defaultdict输入那些嵌套的s。

我最终做的只是基本上包装dict到我的类型中,这看起来不太好:

class Forms:
    def __init__(self):
        self.dct: Dict[PLIndex, Translation] = {}

    def __getitem__(self, item: PLIndex) -> Translation:
        return self.dct[item]

    def __setitem__(self, key: PLIndex, value: Translation) -> None:
        self.dct[key] = value


class Translations:
    def __init__(self): …
Run Code Online (Sandbox Code Playgroud)

python types type-hinting

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

Java - 发布到Twitter

我写了一个简单的Web应用程序,我希望能够发布推文.

已经看到了一些用于Twitter的java库,但是对于看起来很简单的东西来说,它们看起来都太过分了.我有可能错过一些东西吗?

是否有任何简单的方法可以通过java中的Web应用程序在Twitter上发布推文,只需几行代码?

java twitter

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

jQuery,使用〜作为id的一部分 - 如何?

在我的应用程序中,我有一个表单,使用某个约定命名元素,即它们是路径,其中的部分使用~符号分隔.

现在我需要通过id在jQuery中访问其中一个,但是我失败了.显然,jQuery将其视为#prev ~ sibling事物.

有没有办法可以逃避~jQuery函数中的符号?

以下是我的代码的示例:

<select id="a~b~c">
  <option value='1'>one</opiton>
</select>

<script>
  $("#a~b~c").change(function(){
    alert('a');
  });
</script>
Run Code Online (Sandbox Code Playgroud)

jquery jquery-selectors

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

Jenkins、Git Hub Pull Request Builder 落后 1 次提交

我正在使用 GHPRB 插件来查看拉取请求是否不会破坏主存储库的主控。通常,在初始拉取请求之后,开发人员会将更多提交推送到请求分支,这会按预期触发插件。然而,事实证明,插件检查并本地合并到 master 进行构建和测试的提交不是拉取请求分支的 HEAD,而是 1 个提交。

我使用分布式 Jenkins 设置,即我有一个主服务器和多个从服务器。对于每台机器,都会创建一个单独的工作区,并且主服务器上的版本与拉取请求分支的 HEAD 是最新的,但它在从服务器上滞后。

我使用以下配置:

SCM:
Repo url: ..... Credential: ..... Name: origin Refspec: +refs/heads/:refs/remotes/origin/ +refs/pull/:refs/remotes/origin/pr/ Branch: ${sha1}
Triggers: GitHub Pull Request Builder
Run Code Online (Sandbox Code Playgroud)

难道我做错了什么?

git github jenkins ghprb

5
推荐指数
0
解决办法
227
查看次数

CMake,OS X bundle,递归地将目录复制到Resources

我正在尝试将我们的Qt应用程序转换为CMake,其中一个目标是OS X应用程序.它需要将某个文件夹放在其our.app/Contents/Resources文件夹中.我尝试使用文件属性添加它,但我只设法复制文件夹本身没有它的内容.如何递归复制?

这是我做的:

set (
  RES_SOURCES
  ${SOURCE_ROOT}/data-folder
)
add_executable(${PROJECT_NAME} MACOSX_BUNDLE ${SRC} ${RES_SOURCES})
SET_SOURCE_FILES_PROPERTIES(${RES_SOURCES} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
,但感觉不对.

macos qt cmake

5
推荐指数
2
解决办法
781
查看次数

Django TestCase:在 self.subTest(...) 中重新创建数据库

我需要用不同的参数测试一个函数,最合适的方法似乎是使用with self.subTest(...)上下文管理器。

但是,该函数向数据库写入了一些内容,并最终处于不一致的状态。我可以删除我写的东西,但如果我能完全重新创建整个数据库会更干净。有没有办法做到这一点?

python testing django

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

Django-rest-framework:从 .dispatch 返回响应

我正在django-rest-framework基于应用程序进行(或多或少)自定义身份验证,我只需要调用另一个微服务来询问令牌是否有效以及与之关联的用户名/用户 ID。(我没有供用户使用的本地表)。

没有找到开箱即用的解决方案,我覆盖了该dispatch方法(我使用的是APIView基于视图),在那里我向远程服务发出请求,如果响应不是 200,我想返回一个403 错误。

这是我的代码:

def dispatch(self, request, *args, **kwargs):
    try:
        user_info = user_from_token_in_request(request)
        return super().dispatch(*args, **kwargs)
    except:
        return Response(
            "No Auth Token provided or bad Auth Token"
            status.HTTP_403_FORBIDDEN,
        )
Run Code Online (Sandbox Code Playgroud)

但是,当我传递无效令牌时,我收到此错误:AssertionError: .accepted_renderer not set on Response,因为在dispatch处理方法时未初始化响应上下文。

有没有一种更合适的方法呢?

django rest django-rest-framework

5
推荐指数
2
解决办法
2388
查看次数

Django Rest Framework:允许 Patch,但不允许 Put

我想允许PATCHing 我的模型实例,但不PUTting 它们,并且我只想允许更新某些字段。我正在使用 Django-rest-framework,并且我正在使用ViewSets. 如果我继承UpdateModelMixin,我不可避免地会同时得到PATCHPUT

我知道我可以编写自己的partial_update实现,但是,如果有的话,我更喜欢使用更惯用的方式。简而言之,我的问题是:

有没有办法允许PATCH方法,但不允许PUT

有没有一种方法可以限制方法中允许更新的字段范围,PATCH而无需编写专用的“输入”序列化器?

django django-rest-framework

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

同时使用 while let 和两个变量

我正在学习 Rust,并且一直在解决 leetcode 问题。其中之一包括合并两个链表,其节点是可选的。我想编写一个 while 循环,该循环将一直持续到至少 1 个节点变为None,并且我尝试使用该while let循环来实现这一点。

然而,语法似乎while let只支持一种可选,例如:

while let Some(n) = node {
   // do stuff
}
Run Code Online (Sandbox Code Playgroud)

但我写不出来

while let Some(n1) = node1 && Some(n2) = node2 {
}
Run Code Online (Sandbox Code Playgroud)

我是否误解了语法?我知道我可以用while true循环重写它,但是有没有更优雅的方法呢?

另外,可以使用 进行多次检查if let吗?喜欢if let None=node1 && None=node2 {return}

rust option-type

5
推荐指数
2
解决办法
1048
查看次数

Freemarker Hashtable <Integer,String>,按键迭代

我有一些使用Integers作为键的哈希表,我希望能够在我的Freemarker模板中迭代它们,但是,似乎没有任何效果.

我尝试了Freemarker迭代hashmap键的例子:


<#list user.props() as prop>
   ${prop} = ${user.get(prop)}
</#list>
Run Code Online (Sandbox Code Playgroud)

它可能适用于Strings作为键,但它不适用于Integers.我甚至无法通过具体值从哈希表中检索值.我拥有的是:

Hashtalbe ht = new Hashtable();
ht.put(1, "hello");
datamodel.put("devices", ht);
Run Code Online (Sandbox Code Playgroud)

(datamodel是传递给模板的hashmap).

在模板中,我执行以下操作:


<#if devices??>
 <#list devices?keys as prop>
  <p>${prop}</p>
  <p>${devices.get(1)}</p>

OR
<p>${devices.get(key)}</p>
OR
<p>${devices[key]}</p>
OR
<p>${devices[1]}</p> </#list> <#else> <p> no devices</p> </#if>
Run Code Online (Sandbox Code Playgroud)

但这些都不起作用.你能帮我吗?

PS.我将哈希表转换为将其传递给模板,但这似乎是一种解决方法.

最好的问候,蒂莫菲

freemarker hashtable

4
推荐指数
1
解决办法
4655
查看次数