問題タブ [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 を実行している 2 つの異なるシステム (Ubuntu 14.04 の新規最小インストールを含む) でこのプロセス全体を実行しましたが、結果は同じでした。
generics - Hacklang: (function(...): KeyedIterable から Vector を返すことはできません)
Map または Vector のいずれかを返す可能性のあるメソッドがあり、両方の型が実装されているためKeyedIterable
(Vector<T>
具体的には実装されているため)、両方のケースを戻り値の型KeyedIterable<int, T>
でカバーできると考えました。KeyedIterable<arraykey, T>
ただし、arraykey
は よりも一般的なタイプですがint
、これは機能しません。たとえば、タイプチェッカーは次のコードで問題を報告します。
なぜ私はこれを行うことができないのですか?
hhvm - マップ上で反復 (マップ) をハックする
私は次のMap
ようなものを持っています:
それを文字列に変換したい:
この SO answerで説明されているように、配列でこれを行うことができます:
私はのドキュメントを読んでMap::items
試しました:
しかし、これは何も出力しません。
配列のようなワンライナーを探していますが、ループはありません。
nfs - NFS共有フォルダー経由でVirtualBoxのハックコードをタイプチェックする
最初にこの問題に言及し、次に関連していると思われるこの適切な名前の編集に言及し、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 共有フォルダーで実行できるようにするにはどうすればよいですか?
hhvm - Hack の名前付き関数は完全に第一級市民ですか?
HHVM 3.9 は、名前付き関数を使用した 3 項ステートメントのファンではありませんがfun()
、3.10 以上であればまったく問題ありません。ただし、3.9は具体的な関数から返された名前付き関数を受け入れ、他の関数 ( 3v4l )に渡された名前付き関数を受け入れているため、これは数少ないケースの 1 つであるように思われます。
3.9 と 3.10 の間で何が変わったのですか? HHVM ≥3.10 で、名前付き関数をこの方法で参照および使用できない場合はありますか?
typedef - Hacklang — null 許容の循環型定義を作成できないのはなぜですか?
私は再帰的なコンテナのような構造を実装しようとしています。バニラの巡回型定義が実現できない理由は理解できますが、次のことも許可されないのはなぜですか?
作成は簡単に思えます:
そして、1つを繰り返しても問題はありませんよね?
hacklang - hacklang で複数のジェネリック型を組み合わせる
ハックでアンダースコアからreduce関数を実装しようとしています。アンダースコアでは、reduce 関数は次の動作をします。
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 ボックスでローカルに実行している作業アプリケーションです。これは私の現在のcomposer.jsonです
2 つの問題があります。1 つ目は、PHP のバージョンが最新ではないこと、2 つ目は、HHVM デーモンを使用して composer install を実行できないことです。
その結果、コマンドとして「composer install」を明示的に使用すると「you are running this with PHP and not HHVM」というメッセージが表示され、すべての依存関係が失敗し、「hhvm: command not found」というメッセージが表示されます。 hhvm で実行します。
これは、私が使用しているデプロイ後のフックです。文字通り、composer をダウンロードしてインストールしようとしていることがわかります。
ここに私の質問があります: XHP を使用できるように、openshift で hhvm の下で composer を実行するにはどうすればよいですか? また、openshift で PHP バージョンをアップグレードするにはどうすればよいですか?
php - Hack 言語の Memoize 属性 - キャッシュのタイムアウト
Hack には、<<__Memoize>>
メソッドの結果を簡単にキャッシュする属性があります。
データベースまたは API リクエストの結果を限られた時間キャッシュするためにどのように使用できますか?
私のコードが非常に頻繁にデータベースからの情報を必要とするとしましょう:
パフォーマンスを向上させるために、結果を 1 分間キャッシュしたいと考えています。
データが変更された場合、私のプログラムは 1 分以内にそれを確認する必要があります。結果が 1 分間古くなっても問題ありません。
公式ドキュメントを確認しました。