小编nh2*_*nh2的帖子

如何使用多个参数调用Angular.js过滤器?

文档中我们可以调用像这样的日期过滤器:

{{ myDateInScope | date: 'yyyy-MM-dd' }}
Run Code Online (Sandbox Code Playgroud)

这里date是一个带有一个参数的过滤器.

从模板和JavaScript代码调用带有更多参数的过滤器的语法是什么?

angularjs

291
推荐指数
2
解决办法
20万
查看次数

如何使用仍然使用runhaskell/ghci运行的库+可执行文件来创建Haskell cabal项目?

如果你在一个小集团文件中声明库+可执行部分,而避免了图书馆的双重编译通过把图书馆变成一个hs-source-dirs目录下,你不能用通常运行项目ghcirunhaskell了,特别是如果可执行文件有辅助模块本身.

什么是推荐的项目布局

  • 只构建一次所需的东西
  • 允许使用 runhaskell
  • 有一个干净的结构,没有黑客?

haskell ghci cabal runhaskell

54
推荐指数
1
解决办法
7055
查看次数

在使用像Parsec这样的解析器组合库时,我应该使用词法分析器吗?

在像Haskell的Parsec这样的解析器组合库中编写解析器时,通常有2个选择:

  • 编写词法分析器将String输入拆分为标记,然后执行解析[Token]
  • 直接编写解析器组合器 String

第一种方法通常似乎有意义,因为许多解析输入可以理解为由空格分隔的标记.

在其他地方,我看到人们建议不要进行标记化(或扫描激发,有人称之为),简单性被引用作为主要原因.

lexing和不做之间的一般权衡是什么?

haskell parsec lexer

42
推荐指数
1
解决办法
3822
查看次数

Haskell:为什么要使用Proxy?

在Haskell中,Proxy是一种类型见证值,可以轻松传递某些类型

data Proxy a = Proxy
Run Code Online (Sandbox Code Playgroud)

一个示例用法在json-schema中:

class JSONSchema a where
  schema :: Proxy a -> Schema
Run Code Online (Sandbox Code Playgroud)

所以你可以做到schema (Proxy :: Proxy (Int,Char))获得Int-Char-Tuple的JSON表示(可能是一个数组).


为什么人们使用代理?在我看来,同样可以通过以下方式实现

class JSONSchema a where
  schema :: Schema a
Run Code Online (Sandbox Code Playgroud)

类似于Bounded类型类的工作原理.我首先想到在使用代理时获取某些给定值的模式可能更容易,但这似乎不是真的:

{-# LANGUAGE ScopedTypeVariables #-}

schemaOf :: JSONSchema a => a -> Schema a

schemaOf (v :: x) = schema (Proxy :: Proxy x)  -- With proxy

schemaOf (v :: x) = schema :: Schema x         -- With …
Run Code Online (Sandbox Code Playgroud)

haskell

39
推荐指数
2
解决办法
5623
查看次数

在 C 和 C++ 中比较不同大小的无符号整数时如何收到警告?

C 或 C++ 中错误的常见来源是这样的代码:

size_t n = // ...

for (unsigned int i = 0; i < n; i++) // ...
Run Code Online (Sandbox Code Playgroud)

当溢出时可以无限循环unsigned int

例如,在 Linux 上,unsigned int是 32 位,而size_t是 64 位,因此 if n = 5000000000,我们会得到一个无限循环。

我如何使用 GCC 或 Clang 获得有关此问题的警告?

GCC不这样做:-Wall -Wextra

#include <stdint.h>

void f(uint64_t n)
{
    for (uint32_t i = 0; i < n; ++i) {
    }
}
Run Code Online (Sandbox Code Playgroud)
gcc-13 -std=c17 \
       -Wall -Wextra -Wpedantic \
       -Warray-bounds -Wconversion \
       -fanalyzer \ …
Run Code Online (Sandbox Code Playgroud)

c c++ gcc clang compiler-warnings

37
推荐指数
4
解决办法
2610
查看次数

如何在变量中获取角度"| filter"表达式的结果数组?

在angular中,您可以编写类似的过滤器表达式

<input type="text" ng-model="query">

<table>
    <tr ng-repeat="phone in phones | filter: query">
       <td>{{phone.vendor}}</td>
       <td>{{phone.model}}</td>
    </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

它会更新表格,只显示与query您输入的文字相匹配的手机input.

如何[phone object]在变量(例如范围变量)中获取过滤器的相应结果数组,例如当前显示的s?

angularjs

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

如何在Haskell中与GNU gold链接器而不是ld链接

我的Haskell项目花费了大量时间,Linking dist/build/myapp/myapp ...并且在执行TemplateHaskell代码时也加载了共享库.

我怀疑这是因为ld速度慢.

如何通过切换到gold链接器来改善链接时间?

linker haskell gold-linker

33
推荐指数
1
解决办法
3076
查看次数

如何在Haskell中编写人文单元作为后缀,如"3秒"?

Ruby有一个很好的功能,允许将数字转换为其他东西,例如3.times迭代或3.to_s将其转换为字符串.

人们说Haskell很适合编写自然DSL.

是否可以将单位作为后缀来编写,例如timeout = 3 seconds

haskell

29
推荐指数
1
解决办法
1052
查看次数

如何可靠地散列JavaScript对象?

有没有一种可靠的方法来JSON.stringify一个JavaScript对象,保证所有浏览器,node.js等的ceated JSON字符串是相同的,因为Javascript对象是相同的?

我想哈希JS对象

{
  signed_data: object_to_sign,
  signature:   md5(JSON.stringify(object_to_sign) + secret_code)
}
Run Code Online (Sandbox Code Playgroud)

并将它们传递给Web应用程序(例如Python和node.js)和用户,以便用户可以对一个服务进行身份验证,并显示该服务的下一个服务"签名数据",以检查数据是否可信.

但是,我遇到了JSON.stringify在实现中并不是唯一的问题:

  • 在node.js/V8中,JSON.stringify返回没有不必要的空格的JSON字符串,例如"{"user_id":3}.
  • Python的simplejson.dumps留下了一些空格,例如'{"user_id":3}'
  • 可能其他stringify实现可能会对空格,属性的顺序或其他方面做出不同的处理.

有可靠的跨平台stringify方法吗?有没有"正规化的JSON"?

你会推荐其他方法来散列像这样的对象吗?

更新:

这是我用作解决方法的方法:

normalised_json_data = JSON.stringify(object_to_sign)
{
  signed_data: normalised_json_data,
  signature:   md5(normalised_json_data + secret_code)
}
Run Code Online (Sandbox Code Playgroud)

因此,在这种方法中,不是对象本身,而是对其JSON表示(特定于sigining平台)进行签名.这很好用,因为我现在签名的是一个明确的字符串,我可以在检查签名哈希后轻松地JSON.parse数据.

这里的缺点是,如果我将整个{signed_data,signature}对象作为JSON发送,我必须两次调用JSON.parse并且它看起来不太好,因为内部对象被转义:

{"signature": "1c3763890298f5711c8b2ea4eb4c8833", "signed_data": "{\"user_id\":5}"}
Run Code Online (Sandbox Code Playgroud)

javascript hash json node.js

28
推荐指数
5
解决办法
4万
查看次数

numpy:采取log(矩阵)时有效避免0

from numpy import *

m = array([[1,0],
           [2,3]])
Run Code Online (Sandbox Code Playgroud)

我想计算元素log2(m),但仅限于m不是0的地方.在那些地方,我希望得到0作为结果.

我现在正在反对:

RuntimeWarning: divide by zero encountered in log2
Run Code Online (Sandbox Code Playgroud)

尝试1:使用 where

res = where(m != 0, log2(m), 0)
Run Code Online (Sandbox Code Playgroud)

这会计算出正确的结果,但我仍然记录了RuntimeWarning: divide by zero encountered in log2.看起来(在语法上它很明显)numpy仍然log2(m)在完整矩阵上进行计算,然后才where选择要保留的值.

我想避免这个警告.


尝试2:使用面具

from numpy import ma

res = ma.filled(log2(ma.masked_equal(m, 0)), 0)
Run Code Online (Sandbox Code Playgroud)

肯定掩盖零会阻止log2它们被应用到它们身上,不是吗?不幸的是:我们仍然得到RuntimeWarning: divide by zero encountered in log2.

即使矩阵被掩盖,log2似乎仍然应用于每个元素.


如何在不获得除零警告的情况下有效地计算numpy数组的逐元素日志?

  • 当然我可以使用暂时禁用这些警告的记录seterr,但这看起来不是一个干净的解决方案.
  • 并确保双循环将帮助特别处理为0,但是失败numpy的效率.

有任何想法吗?

numpy

28
推荐指数
4
解决办法
2万
查看次数