そして、すべては問題ありませんが、BOINCは1つの前提条件を満たしている必要があります。ユーザーはクライアント部分をダウンロード、構成、起動する必要があります。 しかし、何らかの理由でこれが不可能な場合はどうでしょうか? そして、ブラウザでリンクをクリックし、すぐにコンピュータを大規模なコンピューティングネットワークのリンクに変えるだけでいいのです!
これらの考えで、私はKayleeを書くことを始めました。
どこから始まったのか
ブラウザーとコンピューティングを使用して独自のBOINCを作成するというアイデアは、約5年前に生まれました。2007年に、大学寮の素晴らしいルームメイトであるVova Casanovのおかげで、Ubuntuに出会い、C#からPythonに移行しました。 パイロットプロジェクトとして、「Distributed JavaScript Computing」プロジェクトが計画されました。 しかし、知識も経験も忍耐力も十分ではありませんでした。
4年以上経ちました。 独自のフレームワークを作成するという欲求は失われませんでしたが、さらに多くの機会がありました! Web WorkersはHTML5標準に登場し、ブラウザのメインJSストリームと並行してJavaScriptコードを実行できるようになりました。 その前身であるV8、SpiderMonkeyと比較して、カラカンは印象的な速度を達成しました。 CoffeeScriptを使用すると、クリーンで読みやすいコードを作成できます。 そして最後に、私はPythonに非常に夢中になり、それに付随するすべての属性(ドキュメント、PyPIパッケージなど)を備えた完全なフレームワークを作成したいと考えました。
タスクは何でしたか
ユーザーの視点から
ユーザーの観点から見ると、すべてが非常に単純に見えるはずです。 「このリンクをクリックして、コンピューターの電源を入れたままにして、科学者が<恐ろしい病気の名前が来る>の治療法を探してください。」
より厚かましいオプション:ユーザーはお気に入りのサイトにアクセスします。ここでは目に見えないiframeで、何も尋ねず、申し出も儀式もせずに、ビットコインマイニングが開始されます。
より時間のかかるオプション:ユーザーは計算に個人的に参加する必要があります。たとえば、言葉で説明する必要がある写真が表示されます。
プログラマーの観点から
プログラマーの観点から見ると、すべてが少しバラ色に見えます:分散アプリケーションのサーバー側を(Kaylee- Projectの観点から)Pythonで記述する必要があります。これは、これらの問題を解決するJavaScriptおよびCoffeeScriptアプリケーションのタスクおよびクライアント部分になります。
前者の場合、すべてが抽象クラスの継承と拡張によって決定され、後者の場合-2つの関数の実装によって決定されます。 サーバーとクライアント間のすべての通信はJSONで行われます。 はい、node.jsの支持者は私を許しますが、JavaScriptでのプログラミングやCoffeeScriptでさえ、Pythonでのプログラミングから得られる喜びを少しも得られません。
そして何が起こったのですか?
そして、それはケイリー(シリーズ「ホタル」のヒロインに敬意を表して)になりました。
Kayleeは、サーバーとコンピューターネットワークのノード(ユーザーブラウザー)間の通信を整理し、中間結果と最終結果を保存することで、プログラマーがアプリケーション自体に集中できるようにします。
Kayleeは、ほとんどすべてのPython Webフレームワークをフロントエンドとして使用できます(すぐに使用できるDjangoとFlaskがサポートされています)。
テストベンチとして、モンテカルロ法を使用してPi値を計算し、ソルトされたmd5ハッシュを「分割」するタスクを使用しました。 私には、フレームワークが両方のタスクを迅速に処理したようです!
仲間たち!
このプロジェクトは開発の初期段階にあり、Khabrovchanが私がこのプロジェクトについて最初に話すことを決めました。 あなたが興味を持ち、質問、提案、コメント、批判、そしてもちろん参加したいという要望があれば、これは大歓迎です!