问题标签 [hacklang]
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.
ubuntu - HHVM 已安装,但根据 error.log,环境中缺少类型检查器
我从文件中的以下内容开始:
它输出以下内容:
我将文件更改为:
我收到服务器错误 500 响应,然后检查 /var/log/hhvm/error.log 中的 hhvm 日志:
错误消息中提供的文档链接将我带到假定类型检查器已安装的页面。但是,它提供了安装类型检查器的链接。单击该链接告诉我:
啊,但我确实安装了 HHVM,这就是我得到上面显示的第一个输出的方式:
此外,文档说明了这一点:
这是我在运行$ ls -la /usr/bin/hh_client /usr/bin/hh_server 时看到的
从所有迹象来看,类型检查器看起来像是已安装!
这是我在 Ubuntu 14.04 上安装它的方法:
在 /etc/hhvm/server.ini 里面我有这个:
我已确保在我的所有配置中都有以下内容:
我已经重新启动了所有服务器。
我已经在运行 Ubuntu 14.04 的两个不同系统上执行了整个过程(包括 Ubuntu 14.04 的全新最小安装),结果相同。
generics - Hacklang:无法从(函数(...)返回向量:KeyedIterable)
我有一个可能返回 Map 或 Vector 的方法,并且由于这两种类型都实现了KeyedIterable
——Vector<T>
特别是实现了——我想我可以用一个返回类型KeyedIterable<int, T>
来覆盖这两种情况。KeyedIterable<arraykey, T>
但是,即使arraykey
是比 更通用的类型int
,这也不起作用。例如,类型检查器抱怨以下代码:
为什么我不能这样做?
hhvm - 在 Map 上进行 Hack 迭代(map)
我有一个Map
例如:
我想把它变成一个字符串:
我可以使用数组来执行此操作,如此 SO 答案中所述:
我已阅读Map::items
并尝试过的文档:
但这什么也没打印。
我正在寻找一个像数组一样的oneliner,没有循环。
nfs - 通过 NFS 共享文件夹在 VirtualBox 上进行类型检查 Hack 代码
首先提到这个问题,然后这个恰当命名的编辑似乎是谨慎的,这似乎是相关的,并且使 hh_server 拒绝在 NFS 文件系统上运行。我对文件系统不是很熟悉,以前从未接触过 OCaml,所以在尝试完成问题标题时,我尝试编辑我所知道的内容:/etc/hh.conf
并且/etc/hhvm/{php, server}.ini
,hhvm.[server.]enable_on_nfs = true
通过纯粹的猜测添加。没有骰子。
正如我从这个问题中理解的那样,更改源于hh_server
守护程序无法通过 NFS 驱动器上的 inotify 注册对文件的更改,这是完全可以理解的。然而,我的 VirtualBox 纯粹是一个让我熟悉 Hack(即只运行类型检查器)的测试服务器,而且我之前已经在 sshfs 挂载(osxfuse)驱动器上成功运行了 hh_client。是否还有另一个我不知道的问题使这是一个坏主意?如果没有,我如何启用hh_server --check
在我的 VBox NFS 共享文件夹上运行?
javascript - 如何成功混合 XHP 和 ReactJS 的组件实现
假设我们有以下情况:我们有一个带有帖子提要的博客。当页面加载时,应该已经<PostCard>
加载了 3 个,在服务器端创建;用户将向下滚动或按下加载更多按钮,一些新的明信片应动态添加到页面中。
我有 Hack 的 XHP 组件<PostCard>
,我们有 ReactJS 组件<PostCard>
。
那么,我应该:
- 在客户端,在 React 中实现整个事情并且只有 XHP 组件的
render()
方法constructReactInstance()
?(我曾经做过类似的事情,但我注意到页面加载有一些延迟,比如“滞后”)。 - 在服务器端和客户端实现组件两次?(这是一个彻头彻尾的痛苦......)
- 还有什么……?
我希望我说清楚了,有人可以帮助我:smile_cat:
hhvm - Hack 命名函数是否完全是一等公民?
HHVM 3.9 不喜欢带有命名函数的三元语句,即使通过fun()
, 但 ≥3.10 对它们完全没问题。然而,这似乎是少数情况之一,因为 3.9确实接受从具体函数返回的命名函数,以及接受传递给其他函数 ( 3v4l ) 的命名函数:
3.9 和 3.10 之间发生了什么变化?在 HHVM ≥3.10 中是否存在无法以这种方式引用和使用命名函数的情况?
typedef - Hacklang — 为什么我不能创建一个可以为空的循环 typedef?
我正在尝试实现一个类似容器的递归结构,我可以理解为什么普通循环 typedef 无法实现,但为什么以下内容也被禁止?
创建一个似乎很容易:
并且迭代一个也应该没有问题,对吧?
hacklang - 在 hacklang 中组合多种泛型类型
我正在尝试在hack中实现下划线的reduce功能。在下划线中,reduce 函数具有以下行为:
如果没有 memo 传递给 reduce 的初始调用,则不会在列表的第一个元素上调用 iteratee。相反,第一个元素在列表中的下一个元素上的 iteratee 调用中作为备忘录传递。
我尝试实现该功能:
这会导致错误:
我如何告诉类型检查器T == Tresult
何时is_null($memo)
openshift - 在 openshift 上使用 hhvm 和 composer
我正在使用 Nginx HHVM 3.13.1、MySQL 5.5 和 phpMyAdmin 4.0 墨盒在 Openshift 上构建一个测试应用程序。这是我在使用 Composer 并依赖于 Facebook 的 xhp-lib 的 vagrant box 本地运行的工作应用程序。这是我当前的 composer.json
有两个问题 - 首先,我的 PHP 版本不够最新,其次,我无法像这样使用 HHVM 守护程序运行 composer install
结果,如果我明确使用“composer install”作为命令,所有依赖项都会失败,并显示一条消息“你正在使用 PHP 而不是 HHVM 运行它”,如果我真的尝试使用“hhvm: command not found”用 hhvm 运行它。
这是我正在使用的部署后挂钩,正如您所看到的,它实际上只是尝试下载和安装作曲家:
所以这是我的问题:如何在 openshift 中的 hhvm 下运行 composer,以便我可以使用 XHP,以及如何在 openshift 中升级我的 PHP 版本?
php - Hack语言中的Memoize属性——缓存超时
Hack 具有<<__Memoize>>
轻松缓存方法结果的属性。
如何在有限的时间内使用它来缓存某些数据库或 API 请求的结果?
假设我的代码经常需要数据库中的一些信息:
为了提高性能,我想将结果缓存一分钟。
如果数据发生变化,我的程序应该会在一分钟内看到它。我对结果陈旧一分钟没意见。
检查了官方文档。