小编Kev*_*vin的帖子

为持久性实体创建ToJSON实例

我正在尝试使用selectRepYesod 1.2中的新功能,但是我无法让json响应工作.

instance ToJSON (Entity Feed) where
    toJSON (Entity uid (Feed url lastUpdated)) = object 
        [ "id" .= uid
        , "url" .= url
        , "lastUpdated" .= lastUpdated
        ]

getFeedByIdR :: FeedId -> Handler TypedContent
getFeedByIdR feedId = do
    feed <- runDB $ get404 feedId
    selectRep $ do
        provideRep $ return $ toJSON (Entity feedId feed)
Run Code Online (Sandbox Code Playgroud)

我从上面的代码得到的错误是

Handler/Feed.hs:23:31:
    Overlapping instances for ToJSON (Entity Feed)
      arising from a use of `toJSON'
    Matching instances:
      instance ToJSON e => ToJSON (Entity e) …
Run Code Online (Sandbox Code Playgroud)

haskell yesod

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

Postgres 生成的列不是不可变的

我正在向表中添加一些列,并且想要一个将它们组合在一起的生成列,我将使用它作为唯一索引。当我尝试添加列时,出现错误ERROR: generation expression is not immutable

我遵循了这个问题的解决方案,并且专门使用CASE||进行字符串连接,这应该是immutable.

ALTER TABLE tag
  ADD COLUMN prefix VARCHAR(4) NOT NULL,
  ADD COLUMN middle BIGINT NOT NULL,
  ADD COLUMN postfix VARCHAR(4), -- nullable
  -- VARCHAR size is 4 prefix + 19 middle + 4 postfix + 2 delimiter
  ADD COLUMN tag_id VARCHAR(29) NOT NULL GENERATED ALWAYS AS
    (CASE WHEN postfix IS NULL THEN prefix || '-' || middle
          ELSE prefix || '-' || middle || '-' …
Run Code Online (Sandbox Code Playgroud)

postgresql generated-columns postgresql-14

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

使用STArray的Haskell并行计算

我正在尝试并行执行计算,并将结果写入STArray.我认为这段代码显示了我正在尝试做的事情.但是,我收到了编译错误.

import Control.Monad
import Control.Monad.ST
import Control.Parallel
import Data.Array.ST

main = do
    arr <- newArray ((0,0), (5,5)) 0 :: ST s (STArray s (Int, Int) Int)
    runSTArray $ do
        par (writeArray arr (1,1) 17) (writeArray arr (2,2) 23)
        return arr
    print arr
Run Code Online (Sandbox Code Playgroud)

我该怎么做?

arrays parallel-processing monads haskell state-monad

2
推荐指数
1
解决办法
786
查看次数

Bash没有正确比较字符串

这是我的bash文件

#!/bin/sh
ENV=DEV
echo "env: $ENV"
if [[ "$ENV" == DEV* ]]; then
    RUNTIME_CLASSPATH=$(cat ../build/dev.classpath)
    echo "cp: $RUNTIME_CLASSPATH"
fi
echo "done"
Run Code Online (Sandbox Code Playgroud)

这是终端输出:

~proj/bin$ ./test.sh 
env: DEV
./test.sh: 7: [[: not found
done
Run Code Online (Sandbox Code Playgroud)

我不明白什么是错的.有没有其他方法进行字符串比较?

bash braces

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

如何将 localstack 与 aws java sdk 结合使用?

我正在尝试使用 localstack 与 SQS 进行开发。

  • AWS客户端v2.20.60
  • localstack v2.0.2。

我正在关注这篇博客文章,但无论我尝试什么,我总是收到错误:

使用未知操作调用 sqs 时出现异常:操作检测失败。查询协议服务 ServiceModel(sqs) 请求中缺少操作。

这就是我创建 SqsClient 的方式:

    SqsClientBuilder builder = SqsClient.builder();
    builder.credentialsProvider(StaticCredentialsProvider.create(AwsBasicCredentials.create("test", "test")));
    builder.endpointOverride(new URI("http://localhost:4566"));
    builder.region(Region.of("us-west-2"));
    return builder.build();
Run Code Online (Sandbox Code Playgroud)

然后是任何 Sqs 操作,例如创建队列:

    sqsClient.createQueue(CreateQueueRequest.builder()
        .queueName("test2")
        .build());
Run Code Online (Sandbox Code Playgroud)

日志:

software.amazon.awssdk.request           : Retrying Request: DefaultSdkHttpFullRequest(httpMethod=POST, protocol=http, host=localhost, port=4566, encodedPath=/, headers=[amz-sdk-invocation-id, Content-Length, Content-Type, User-Agent, X-Amz-Target], queryParameters=[])
org.apache.http.wire                     : http-outgoing-3 >> "POST / HTTP/1.1[\r][\n]"
org.apache.http.wire                     : http-outgoing-3 >> "Host: localhost:4566[\r][\n]"
org.apache.http.wire                     : http-outgoing-3 >> "amz-sdk-invocation-id: 3f223a7a-773b-d41f-388a-b222efb26e25[\r][\n]"
org.apache.http.wire                     : http-outgoing-3 >> "amz-sdk-request: attempt=4; max=4[\r][\n]"
org.apache.http.wire                     : …
Run Code Online (Sandbox Code Playgroud)

java amazon-sqs amazon-web-services aws-java-sdk-2.x localstack

0
推荐指数
1
解决办法
2829
查看次数