我正在尝试使用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) 我正在向表中添加一些列,并且想要一个将它们组合在一起的生成列,我将使用它作为唯一索引。当我尝试添加列时,出现错误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) 我正在尝试并行执行计算,并将结果写入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)
我该怎么做?
这是我的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)
我不明白什么是错的.有没有其他方法进行字符串比较?
我正在尝试使用 localstack 与 SQS 进行开发。
我正在关注这篇博客文章,但无论我尝试什么,我总是收到错误:
使用未知操作调用 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
haskell ×2
amazon-sqs ×1
arrays ×1
bash ×1
braces ×1
java ×1
localstack ×1
monads ×1
postgresql ×1
state-monad ×1
yesod ×1