问题标签 [cro]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
openssl - 为什么在 MacOS Catalina 上使用 Cro 时 Raku 会因“中止陷阱:6”而崩溃?
我正在使用 macOS Catalina 并尝试执行一个简单的命令raku -e "use Cro::HTTP::Route"
。我将[1] 19228 abort raku
在 Zsh shell 或Abort trap: 6
Bash shell 中收到一条消息。使用 OpenSSL 模块(如raku -e "use OpenSSL::Stack"
.
sqlite - 确保电子邮件存储为字符串 [Raku]
不知道如何关闭它,但我也不能再删除它...问题已解决
我有一个表单,用户输入电子邮件,CRO 尝试在帐户数据库中查询电子邮件以查找匹配项。问题是 Sqlite3 将 @ 符号视为运算符并给出错误。如果我将其声明为字符串,它会起作用,但我如何在 Routes.pm6 中做到这一点?这是我正在处理的代码块。
我尝试了各种方法,例如在请求正文中添加 Str 或在随机位置添加 .Str 。我也尝试过添加引号。这是html文件:
我想说的是:如何确保用户输入的内容是字符串,然后在 sqlite3 中作为字符串进行查询?
raku - Cro:如何在 .cro.yml 中为每个服务定义端口?
使用cro stub http test test创建存根服务后,我在 .cro.yml 中定义了 TEST_PORT 环境变量:
尽管如此,Cro 仍然使用默认的 20000 端口。Alex Schroeder导出环境变量以在不同的端口启动 Cro。命令“ export TEST_PORT="3001" && cro run ”仍然使用默认端口。
在 Cro 中定义服务端口的正确形式是什么?
r - 使用 expss R 加权数据并显示空白单元格“0”问题
我有下面的代码。它没有错误,但是当我使用“tab_weight”对表进行加权时,它只会影响内联行。总行数不变。总行数需要更改我该怎么做?
第二件事是如果单元格中有它显示为空白。是否可以更改为零“0”?例如,“Erzurum”行没有大小写,应该显示为 0 0 0 0 0 ...
输出是
特拉布宗 445 152 293 339 106 339 106
microservices - 如何在 Cro 中插入一些路由检查中间件?
假设我需要在提供一些结果之前检查一些 URI。我可以做这样的事情:
基本上,在这种情况下,现有产品和非现有产品的签名不同。但是,所有路由都将使用相同的 URI。能够在任何路由匹配之前检查它会很有趣,这样当它到达路由块时,我们就知道它没问题。这样它也可以在不同的路线上重复使用。
我已经检查了before
andbefore-match
,显然你可以做到,但你需要分析请求对象才能做到这一点,没有简单的方法可以做到这一点。
或者,是否有任何方式定义“后备路由”,以便如果找不到 URI,则返回未找到?
raku - 在 CommaIDE 中,将 cro 服务作为常规脚本运行和作为 cro 服务运行有什么区别?
我已经从 CommaIDE(社区版本 2020.05)运行了一些 cro 微服务,没有出现任何故障,然后发现我也可以将它们作为 cro 服务本身使用。但是,似乎没有任何明显的区别;配置屏幕是相同的,运行它们似乎具有相同的效果,能够从 IDE 中停止它们等等。这里有什么我想念的吗?
virtualhost - 使用 HTTP/2 时如何在 Cro 中获取 Host 或 :authority 标头
将 Cro 与 HTTP1.1 一起使用时,我可以通过Cro::Urirequest.uri.host
中的 host 方法以及浏览器通过Cro::HTTP::Request中的方法发送的 Host 或 :authority 标头访问请求的 Host 。request.header
但是,当我使用 HTTP/2 时,这些都不起作用。Uri 对象仅包含架构和路径。
我正在为子域使用带有通配符的官方证书,并通过将这些子域添加到我的主机文件中来在本地运行它。Chrome DevTools 说它已经在 HTTP/2 下发送了 :authority 请求标头,而 Firefox 开发者工具说它已经在 HTTP/2 下发送了 Host 请求标头。但是,如果我将标头写入如下日志,我会看到几个标头,但看不到 Host 或 :authority 标头。
我知道 HTTP/2 使用服务器名称指示,并且主机名是作为 TLS 协商的一部分发送的。另一方面,这也是 Cro 模块 (Cro::TLS) 的一部分,并且标头仍然由浏览器发送。
那么如何获取HTTP/2下的主机呢?
concurrency - 并发,应用程序设计的一般指南
我在rakulang sub reddit上问了这个问题,并被建议在这里发帖:
我的很多工作都回到了 Perl 5,所以我可以“完成它”,仅仅是因为我对 Perl 5 更加熟悉了。
但是,我需要构建一些东西来订阅多个 MQTT 主题(在概念上类似于 websocket 订阅)并处理数据,并将这些数据保留为内部状态。一个并发项目。所以我认为这是一个让自己沉浸在 Raku 中的绝佳机会 :)
到目前为止,我知道我需要在设置时创建一个供应/给定/,但我不完全确定我将如何处理通过每个主题接收到的每个数据流的状态。我的 reddit 帖子的回复建议了 Cro,我认为这非常符合要求。但是还有一些我不清楚的实现细节。
例如,消息有效负载到达 topic foo
,我想将该有效负载中的数据添加到现有数组(我的内部状态)。
但是这种订阅主题将发生在“未确定”数量的主题上,并且会在运行时进行调整。所以不可能有一个硬编码的数组来存储和管理这些数据@foo
例如,在非并发世界中,我可以使用与我的主题名称匹配的键创建一个哈希(关联数组)%data<foo>
,并将该数组存储在那里。
然而,在并发世界中,我需要一个互斥锁问题的答案。如果散列的每个成员都让不同的线程同时修改它的数据,那么我认为整个散列都需要一个锁。
这至少有可能导致死锁或性能不佳(我预计每秒有数百条消息,跨多个主题订阅)。
也许我可以根据主题名称“动态地”创建一个变量(或者更好的是对象),因此每个数据数组都有一个单独的内存地址。但是,我不确定如何做到这一点,或者在这种情况下这是否是“最佳”方法。
总而言之,问题 1:为此目的动态创建对象或变量是一种合理的模式吗?问题 2:是否有一种我根本不知道更合适的设计方法?
因此,任何具体的建议将不胜感激。我觉得这是一个“我不知道我不知道什么”类型的问题!
谢谢!
raku - Raku Cro 服务订阅数据“在后台”一般指导
我正在尝试组合一个 Cro 服务,该服务具有 react/whenever 阻止“在后台”消费数据因此与许多使用 Cro 的 websocket 使用示例不同,这与可以通过浏览器访问的路由无关。
我的用例是使用通过 MQTT 主题接收到的消息并对其进行一些处理。在开发的后期阶段,我可能会从这些数据中创建一个供应,但现在,当接收到数据时,它将存储在一个变量中,并根据某些条件,通过 http post 发送到另一个服务。
我的想法是像这样provider()
在Cro::HTTP::Server
设置中包含一个:
在 DataProvider.pm6 中:
这会引发一堆错误:
老实说,我完全猜想这就是我在 Cro 服务的后台订阅数据的方法,但我找不到任何关于什么可能被认为是推荐方法的信息。
最初我在主service.pm6
文件中有我的 react/whenever 块,但这似乎不正确。并且需要被包裹在一个start{}
块中,因为正如我刚刚了解到的那样,react 正在阻塞:) 并且 cro 无法真正启动。
但是遵循如何实现路由的模式似乎是合乎逻辑的,但我错过了一些东西。该错误涉及设置新方法,但我不相信这是根本原因。Routes.pm6
没有构造函数。
谁能指出我正确的方向?
raku - 如何在 Raku Cro 应用程序中实现全局异常处理
我正在使用一个相当大的 Cro 应用程序,它有几十个路由、模型和其他逻辑。目前在每个路由块中都有一个CATCH
要处理的异常。这对维护并不友好,更不用说添加它们的工作了。所以,我想知道这是否是一种更好的方法。主路由块中的一个CATCH
处理程序不起作用。异常仅在抛出它们的路由块中被捕获。可能是线程问题。有没有一个地方我可以实现一个异常处理程序,它可以获取所有异常并可以在不导致应用程序死机的情况下处理它们?