Clojure Cup-ClojureでのWebアプリケーション作成に関するハッカソンへの参加経験



今週の週末、 Clojure Cupが開催されました-48時間のClojureハッカソン。 これは、彼が私たちのチームでどのように進んだかについての比較的長い投稿であり、技術的な詳細などがあります。 さて、ポストの最後で、それなしで、私たちのプロジェクトについてかなり話します。 読むのが面倒な人は、すぐにCodeNotesにアクセスして、Clojure Cupページで投票することさえできます。



作業環境



ハッカソンへの参加には、喜びと勝利への参加という2つの異なる「モード」があります。 最初のケースでは、クールなものを2日間遅延的にコーディングします。 第二に、ハードコアと準備の早期開始で、すべてが少し異なります。 2番目のオプションを選択しました。

チームには4人がいました。私とsi14を含む2人はサンクトペテルブルクに、1人はチュメニ( zloy_alu )に、もう1人はミュンヘンにいます。 しかし、コミュニケーションの問題は発生しませんでした。タスクの分離はほぼ成功し、優れたTrelloサービスと神聖なFlowDockが役に立ちました 。 私の意見では、後者はチーム内の相互作用にとって理想的なサービスです。 自分で判断してください-チャット、ファイル共有、個別のディスカッションスレッド、さまざまなイベント(デプロイ、リポジトリへのプッシュ、trelloでの新しいタスク、Twitterでの言及)に関する通知があります。 すべて次のようになります。





明らかに勝つことを計画していたので、事前に準備を始めました。 特に:





技術的な詳細



そして今、ClojureのWeb開発者にとって何が役立つのかを詳しく説明します。



小さなClonyアプリケーションを作成した経験は非常に有用であることが判明しました。 これは、ClojureでフロントエンドWebソケットと通信するhttp-kit (Clojureのhttpサーバーおよびクライアント)およびCompojure (ルーター)を使用する非常に簡単なことです。 Stuart Sierraのワークフローを使用して、開発をより快適にします。アプリケーション(またはその一部)のすべてをnreplから完全に再起動しました。 ハッカソン中に、クローニーでのバックポートを待っているいくつかの改善を行いました。



初日


仮想マシンにデプロイすることを事前に知っていたため、 Ansibleの使用方法を学びました。 彼のおかげで、私たちは競争の開始から4時間後にオンラインになりました-完全に開発された生産構成とテストアプリケーションがありました。 これは、参加者のホスティングを提供するDigitalOceanの問題がなければ、以前に起きていたはずです(参加者は詐欺の疑いでアカウントを禁止しました)。 また、ローカル仮想マシン( Vagrant -super!)も完全に同一の構成で使用していましたが、最終的には全員がそれらにスコアを付け、すぐに運用環境に展開しました。 これは、MariaDBの設定(これらのANSI_QUOTESを気にせず!Postgresをすぐに使用しなければなりませんでした)から始まり、ログをディスクに書き込むのを忘れたという事実で終わる、サーバー上でその場ですぐに変更する必要があるためにも起こりました。 さらに、 NewRelicとかなり完全に統合しました。 彼が私たちを決定的に助けてくれたとは言えませんが、サーバーの応答時間、クライアントによるDOMレンダリング時間、ネットワークの待ち時間、サーバーの空きメモリ量、GC JVM統計など、非常に多くのパラメーターを簡単に見ることができたことで、神経が落ち着きました。 統合用のライブラリは非常に小さいことが判明したため、オープンソースで間違いなく投稿します。



初日は、 clangを取得するために多くの時間を費やしました-Angular.jsとClojureScriptの統合。 わずかなトラブルが多かったため、最終的にはClojureScriptを完全に放棄し、JavaScriptのみに切り替えました。 ClojureScriptは言語よりもはるかに優れていますが、ハッカソンでは、その微妙さの誤解と戦う時間がありませんでした。



すべてを可能な限り正しく実行しようとして、プロジェクトにSQL移行用のライブラリを追加することにしました。 非常に人気のあるLobos移行ライブラリがまったく機能しないことを見つけるのは興味深いことでした。 その結果、新しいものを検索して処理するのに約1時間かかりました。 Ragtimeで停止しました。



その結果、最初の日の終わりには、美しいホームページとリポジトリの半作業リストがありました(プロジェクトの簡単な説明はやや低めです)。 22時から00時の間に、チームは眠りについた(この時点までに、午前4時に寝ていた人はいなかった)。また、日曜日の午前8時に再び集まった。



二日目


日曜日には事態は改善しましたが、かなりの数の問題がありました。





一般的に、2日目は生産的でした。 私たちは第一印象に集中しようとしたので、私たちはささいなことに注意を払いました:独自のドメインへのリダイレクト、美しい「使い方」、メインのクリアテキスト、素敵なデザイン、「ごめん、リポジトリにTODOがありません。バグレポートフォームは次のとおりです。そうではありません。」 もちろん、 Bootstrapを使用して開発をスピードアップしましたが、すべてを可能な限り美しく、「デフォルトではない」ようにしようとしました。 これが審査員から最高の点数を得るのにどれだけ役立つかは、金曜日にわかります。



最も興味深い-それは何ですか?



私たちのプロジェクトについて何も言わないのは奇妙です。



人類はまだ完璧なバグトラッカーを考え出していないようです。 しかし...なぜバグトラッカーが必要なのですか? 私たちのプロジェクトの本質は、あなたの人生から別のバグトラッカーを削除することです。 そして、彼がこのように見えるように、さらに試みました。

def somefun

#TODO:@ si14、リリース前にこれを修正してください

真を返す


そして、残りを行います-ユーザーにタスクを作成したという通知をユーザーに送信し、インターフェイスに表示します。また、コミットを監視し、新しいTODO、FIXMEおよびNOTEのコードをスキャンします。 さらに、GitHubリポジトリの美しいイメージを生成して、コードに含まれるTODOの数とその情報へのリンクを示すことができます。 CodeNotesプロジェクトにまだ必要な機能がすべて備わってません(さらに、隠すのに十分な厄介なバグがいくつかあります)が、投票が終了すると、すぐに改善を続け、小規模プロジェクトに最適なバグトラッカーにします。



ところで、あなたは私たちに投票し 、アイデア、ハッカソン、Clojure Webプログラミング全般についてあなたが思うことについてコメントにコメントすることができます。



All Articles