InterSystems 2015 Schoolでのハッカソン

インターシステムズはこれまでにハッカソンを開催したことがありません。 学校は毎年集められ、訓練され、チームに分けられ、さまざまな期間のタスクを実行しましたが、そうではありませんでした。 しかし、時間が不足しています。 同じことを二度と繰り返したくありませんでした。 新しいものが欲しかった。



ハッカソン、同じ。



すでに50人の非常にプロフェッショナルなCachéプログラマを集めている場合、チームに分けて何か新しいものを作成してみませんか? おそらく誰もが参加して夜のプログラムをしたいと思うわけではありませんが、ほんの2、3つのチームでさえも、価値のある何かを生み出す可能性があります。 たとえ最終的には数個の、しかし意味のあるプロジェクトしか得られなくても、実験は成功したと考えます。 (そして、将来を見据えて、私たちは価値のあるプロジェクトの「カップル」以上のものを受け取ったことに満足して言うことができます)



このようなイベントをハッカソンとして開催する際の問題の1つは、これまで開催したことがないということです。 そして個人的にさえ、誰も参加しませんでした。 したがって、私は現在Voximplantの技術的伝道者であり、以前はDigital Octoberで複数のハッカソンを手配していたGregory eyeofhell Petrovに外部からの援助を求めなければなりませんでした。 グレゴリーと会った後、私たちはハッカソンで何をどのように行うか、成功を考えること、失敗を考えること、行動する順番、招待する人、購入する人の知識を身につけました。 問題の1つは、私たちの学校のタイミングでした。ハッカソンは、グレゴリーが講演する予定のPyCon Russia 2015会議と強力に交差しました。



そして、私たちはすべて自分でやらなければなりませんでした。 大人のように。



発表されたプロジェクトのリスト



当初、プロジェクトのために提案されたアイデアの大きなリストがありましたが、ハッカソンの開始とトピックの配布の後、リストはかなり狭くなりました-学校の参加者のごく一部が最終日/夜にハッカソンに参加することに同意しました。

次回、ハッカソンへの参加を拒否する人のために夕食と朝食をとることはできません。ジョーク



コーディングを開始する前に、ゲームの状態を説明し、チームに分かれた後、レイアウトは次のとおりでした。











実際、7つのチームが開始しました。



  1. Atomプラグイン
  2. CPMウェブサイト
  3. 地理空間インデックス
  4. Caché<> JSプロジェクション
  5. Arduino Connect
  6. コール図
  7. B *-ツリーマップ


これは、放課前の悲観的な予測以上のものでした。 これは、学校の参加者の正しい募集を示しています。



たとえば、ISO SQLコンプライアンス評価ツールキットの開発に着手した一部のチーム代表は、長期的にはトピックに興味を持ちましたが、チーム4が勝つ可能性を慎重に評価し、それに参加して、Cachéオブジェクトの(通常の)投影を開始しましたブラウザ内のJavaScriptオブジェクト。 それは先見の明でした。



他の人はプッシュ通知の代わりにキノコを選ぶこと選びました。 もちろん、これははるかに便利です。



いずれにせよ、7チームすべてが最終的なピッチングとパフォーマンスに到達しましたが、7チームすべてが指定された目標を大幅に達成したわけではありません。



ハッカソンの占領地の賞金はそれほど大きくありませんでした(最初の場所では、各チームメンバーは 5000ルーブル、2位-3000ルーブル、3位-1000ルーブルのオゾン証明書を受け取りまし )。 ここでの主なことは、報酬の大きさではなく、プロジェクトを作成するときに受け取ったファンと勇気です。







1位



主催者として、 Nikita @ZitRos SavchenkoDeepSee Mobileの LightPivotTableCacheUMLExplorerWebTerminalGlobalsDB Adminなど)やAnton @gnibeda GnibedaDeepSee WebDeepSee Mobile )などのインターシステムズコミュニティの2つ星が1つのチームに集まることを少し心配しました。 さらに、彼らは経験豊富なフロントエンドワーカーとして、他の多くのチームを支援することができ、どのチームを知っていました。 純粋に「教育学的観点から」、チームを「リバランス」して、異なるプロジェクトでニキータとアントンを離婚したいという願望がありました。 私たちがそうしなかったのは良いことです...



ハッカソン理論は、事前に準備されたアイデアやプロジェクトがハッカソンで成功することを教えています。 この場合、それは完全に間違っていました。 勝者のプロジェクトの著者は、JavaScriptでCachéオブジェクトのプロジェクションを作成するというアイデアは、ハッカソンの可能性のあるトピックの議論の時に、男たちに生じたと主張しています(そしてこれを信じる理由はありません)。 このプロジェクトの自発性の事実は、最終ピッチでの正しいプレゼンテーションの要因が働いたように、勝者の最終的な議論に重みを加えました。



JavaScriptオブジェクトデータモデル-JavaScriptでのCachéオブジェクトの投影



著者: Nikita @ZitRos SavchenkoAnton @gnibeda GnibedaIrina Gra-ach Mikhailova
GitHubリポジトリ: https://github.com/ZitRos/cjs



プロジェクトは、サーバー側とクライアント側のJavaScriptの2つの部分で構成されています。 サーバー側は、クラスのメソッド/プロパティにアクセスできるRESTデータポイントの簡単なセットを提供します。 特別なJavaScriptシャーマニズムを使用するクライアントパーツは、クライアント側でこれらのメソッドとプロパティをエクスポートし、コードおよびデバッガーでそれらへのアクセスを提供します。







クライアント側のこのAPIの特徴は、最新のパラダイム(非同期呼び出しやカスケードなど)を使用して正しく実行されることです。



cjs.connector.connect("http://172.16.2.172:57776/", "Samples", ["School2015"], function (cache) { // creating a new object var p = new cache.School2015.Participant(); p.Name = "Anton"; p.Surname = "Gnibeda"; p.$save(function(obj) { console.log("Participant with name " + obj.name + " saved!"); }); // executing instance method cache.School2015.Group.openById(1, function (group) { group.PrintInfo(function (res) { console.log(res); }); }); // executing linq-like queries cache.School2015.Participant .query() .where("Carma < 100 OR Carma > 140") .where("$id > 10") .orderByDesc("Carma") .orderBy("Name") .exec(function(res) { console.table(res); }); });
      
      







2位



ハッカソンの準備では 、興味深い(私たちの観点から)タスクのリストを作成しました 。これは、InterSystems大学プログラムからの助成金の将来の割り当ての既存のリストと、githubのいくつかの既存のintersystems-ruプロジェクトの拡張要求(問題)のリストからの選択の組み合わせでした。



そのようなタスクの1つに、地理インデックス検索の追加がありました。



地理空間-Cachéの空間インデックス



著者: アンドレイ・ アレチツキー・レチツキー、 アレクサンダー・ アダプタン・コブロフ、 アレクサンダー@アポグレブニコフポグレブニコフ
GitHubリポジトリ: github.com/intersystems-ru/spatialindex




Cachéには、空間インデックス検索が長い間欠けていました。 マルチモデルプラットフォームパラダイムの柔軟性を考えると、このようなサポートを追加できなかった客観的な理由は1つもありませんでした。 問題は、欲求、専門知識、そしておそらく偶然の一致でした。 非常に多くの数学者とチームを結成することは、状況と専門知識の適切な組み合わせでした。



その結果、特定の座標ペアに基づいてクアッドツリーを構築するカスタムインデックスが実装され、数百万のポイントからのデータの配列を使用して、瞬時に交差点を見つけ、地図上の特定の領域を視覚化する単純なWebアプリケーションが示されました。



プログラムでは、空間インデックスによる検索は次のようになりました。



1.座標を指定する1組のプロパティでクラスのインデックスを設定します。



 Index x1f on (Latitude,Longitude) As SpatialIndex.Index;
      
      





2.正方形のエリアで検索:



 SELECT * FROM SpatialIndex.Test WHERE %ID %FIND search_index(x1F,'window','minx=56,miny=56,maxx=57,maxy=57')
      
      





3.または楕円で:



 SELECT * FROM SpatialIndex.Test WHERE %ID %FIND search_index(x1F,'radius','x=55,y=55,radiusX=2,radiusY=2') and name %StartsWith 'Z'
      
      





これが製品への長い道のりの始まりにすぎないことは明らかであり、ポリゴンを検​​索する必要があり、ISO 19125を実装する方法はまだ非常に長いです。 しかし、これは最初の重要な実用的なステップでした。



この特定のプロジェクトは、製品の利点の観点から、このハッカソンのすべての受賞者に最大の影響を与えると感じています:待っていた機能がついに登場し、すぐに使用を開始できます。



3位



3つの場所を共有する2つのプロジェクト:相互作用図のビジュアライザーとデータベース内のグローバルのビジュアライザー

UMLExplorerプロジェクト( Nikita @ZitRos Savchenkoによって作成された奇妙な偶然による)により、Cachéベースおよび/またはそのクラス/テーブルとの相互作用を促進するためのさまざまなツールを作成するよう他の人に促されました。



Callsmap-相互作用図のビジュアライザー



著者: オレグ・ ダブルフィント ドミトロヴィッチ、エフゲニア リトビンアレクサンダー・ ツヴェトコフ AVツヴェトコフ
GitHubリポジトリ: github.com/intersystems-ru/callsmap


Oleg Dmitrovichは、階層の視覚化を気に入っており、似たようなことをやりたいと思っていましたが、相互作用図(呼び出し)のレベルでした。 残念ながら、すべてのjQueryコンポーネントが、テスト例でOlegが行ったさまざまな呼び出しに対応できるわけではありません(数千のクラスと、対応する相互作用図のアークの数)。 したがって、別の適切なコンポーネントを探す必要がありました。その結果、非常に高速なViva Graphに立ち寄りました。



結果として、テスト領域でのクラスの相互作用のグラフの視覚化は次のようになりました。







静止画像は視覚化の美しさを反映しておらず、Viva Graphに実装されたアニメーション効果を伝えることができません。人生のクラスの広大な銀河は魅力的です



CacheBlocksExplorer-グローバルツリーとデータベースマップのビジュアライザー



著者: ドミトリー・ ダイマー・マスレンニコフ、オルガ カザンツエヴァ
GitHubリポジトリ: github.com/intersystems-ru/CacheBlocksExplorer


アイデア/ UMLExplorerエンジンに基づいて生まれた別の素晴らしいプロジェクトは、Dmitry Maslennikovによって作成されたグローバル/ベースマップのビジュアライザーです。 実際、Dmitryはハッカソンの開始前にb *ツリーツリービジュアライザーを作成しましたが、ハッカソンの前にプロジェクトについて議論したとき、一般的なコンセンサスは、古き良きNorton SpeedDisk / Microsoft SpeedDiskの場合のように、ベースマップの視覚化に欠けていたということでした。 ドミトリーが夜にしたこと。



(ところで、このプロジェクトは、一般投票の結果に続いて「オーディエンス賞」も受賞しました。)









現在、このプロジェクトを書くことの副産物として、教育とデータベース最適化の両方に役立つ2つの素晴らしいツールがあります:特定のグローバルな例を使用してb *ツリーツリー階層のすべてのレベルを表示し、データベースブロックの分布のマップを色で表示しますグローバルコーディング。 そして、これらすべてが1つのツールのフレームワーク内にあります。

私はあなたのことは知りませんが、私は間違いなくそれを頻繁に使います。



その他のハッカソンプロジェクト



最終的な投球の前に、ある州または別の州で到達したプロジェクトがさらに3つありました。 しかし、おそらく、私たちはそれらについてもう一度話します

リポジトリは次のとおりです。



CPM github.com/intersystems-ru/CPM
アトムコススタジオ github.com/UGroup/Atom-COS-Studio
Arduinoスニペット github.com/intersystems-ru/ArduinoSnippets


おわりに



一般的に、学校が完成してから数日後、すべての印象を消化した後、InterSystems学校でのハッカソンの実験は成功を収めたと言っても過言ではありません。 コミュニティは、さまざまな種類のツールを備えた4つの傑出したプロジェクトを受け取りました。 それらの多くはコミュニティにとって有用であり、それらのいくつかはインターシステムズ自身にとって有用かもしれません。



しかし、これはもともと取得したかったものです。



[フォトアルバムNo. 1] [フォトアルバムNo. 2] [フォトアルバムNo. 3]




All Articles