学生からのフィクションまたはクロスプラットフォームのソーシャルジオロケーションを組み立てる方法

みなさんこんにちは!

今日は、大学での素晴らしい経験についてお話したいと思います。

私はほぼ5年間教えてきましたが、今年は実験に行きました。 私たち(教師)は、テーマに関する用語論文の評価の要素として「公的非難」を導入することにしました。 つまり 学生はコースのテーマについてHabrに投稿し、フィードバックと公開ディスカッションに従います。 これは否定的な評価ではありませんが(「貴重な人材」を奨励する必要があります)、プラスになることはありません(公的非難がクライマックスに達する場合)。 一般的に、ここでの審査員はHabrの専門家とユーザーです。 そして、そのような経験は学生にとって有用であるように思えます-彼らは彼らの仕事の問題をより深く理解するでしょう。

だから、最初の候補者:3年生。 分野「コンピューターグラフィックス」のコースワーク(はい、このテーマについて興味深い開発を行うこともできます)。 プログラマではなくエンジニアをトレーニングすることをすぐに予約します。 私たちの部署からはすでに15人が異なる職種でYandexで働いています。 そして大成功。 プロジェクトのソースとリンクはすべて下部にあります。



ここで、実際には、記事自体(ほとんど修正なし):



このサービスのアイデアは、タームペーパーのアイデアについて疑問が生じたときに突然思いつきました。 Android OS用の純粋なモバイルアプリケーションを作成した経験がありましたが、携帯電話メーカーとそのOSの動物園を見た後、新しいことを試してみることにしました。 プロジェクトの主な本質は、ユーザーが3-4回のクリックで訪問したいものを選択し、選択基準(価格、空室状況)および移動方法を選択することです。



サービスについて



このサービスの主な対象者は、怠zyな人々、若者、アクティブなライフスタイルをリードし、ソーシャルネットワークにアカウントを持っているか、インターネットにアクセスできる電話を持っている人々です。



当初からの主な目標は、機能するモバイルバージョンとPCバージョンを作成することでした。その後、ソーシャルネットワーク用のiframeを試してみるというアイデアが生まれました。



電話とそのモバイルバージョン用のアプリケーションをいくつか検討した結果、サービスの一般的な概念を開発しました。





主な機能に加えて、残りはすでに機能のようなものです:





そして、私たちはそれを始めました!



開発について



サービススキーム

画像



トピックを選択して承認した後、計画を立て、開発ツールを見つけることから始めました。



まず、地図が必要でした。これはGEOサービスです! マップの2つのプラットフォーム、YandexMapsとGoogleMapsを検討しました。2つ目のプラットフォームは、ブルジョアの起源、悪いロシアのマップ、および開発者に対するわかりにくいポリシーのためにすぐに落ちました。 私たちはその選択に失望しませんでした。



私たちの計画の始まりは、ウェブ開発のスキルを高め、機能の実行にスムーズに移行することでした。それ以前は、誰もウェブ開発に積極的に関与していませんでした。 11月に最初のモバイルバージョンとPCバージョン、カーブ、松葉杖を展開できることに気付いたので、1つにはレイアウト、js、php、もう1つにはphp、YandexApi、mongodbを割り当てました。 将来、これらの義務は特に尊重されなくなりました。



subの役割には、mongodbまたはmysqlの2つのオプションがありました。 スピードとスケーラビリティが必要でした。 Mongodbは、特に私たちの1人がそれを使った経験があるので、より便利で使いやすいことがわかりました。 ちなみに、mongodbとmysqlの比較については別の記事で取り上げますが、これについては後ほど公開します。



当初、質問がありました:どのモバイルブラウザでモバイルバージョンを作成するのか? 旧式の携帯電話の普及と可用性により、オペラモバイルでは選択肢が減りました。 しかし、後にYandexマップのjs APIの一部をサポートしないことが判明しました。



ご存じのように、モバイルデバイス用のOperaには、opera miniとopera mobileの2つのバージョンがあります。 それらの違いについては、 サイトのセクションを読むことができます。



座標決定の不器用さについて



座標はjsによって決定され、標準でライブラリをロードせずにそれを行う方法を知っていますが、時々面白い瞬間が起こりました:入院患者からルーターを介して、またはラップトップを備えたカフェに座って、サービスはユーザーがモスクワの中心部、特にアレクサンダーにいると判断しました庭。 3gを介して携帯電話から入力すると、家の中に1.5個の非常に大きな散乱があります。 また、ブラウザの設定により、サービスがユーザーを見つけられない場合がありました。 これらの妨害を修正するために、座標の決定に失敗した場合に手動で住所を入力する機能を導入しました。



オペラに関する問題について。



PCバージョンをホスティングにダウンロードした後、携帯電話用のバージョンの開発が始まりました。 モバイル版を作成し、ホスティングにアップロードし、オペラで起動した後、オペラがjs部分をサポートしていないことに驚きました。Androidsamsung GT-S5830とsymbianでこれを発見しました。 モバイルバージョンの最初のテストでは、ルートはマップ上に表示されませんでしたが、同じモバイルクロムであれば、すべてを描画します。



パーサーについて



パーサーは、映画館や博物館に関する情報でデータベースを満たしました。 主なタスクは、CRONでスピンし、データベースを更新するパーサーを実装することです(1日1回)。 パーサーは、レギュラー、標準のphp関数、およびDOMを操作するためのライブラリで構成され、テキストアドレスを地理座標に変換するために使用されます。 両方のパーサーの実装をここで見ることができます。



apivkとmailapiについて



ソーシャルネットワーク用のiframeを開発した経験はありませんでしたが、試してみたところ、vkには非常に奇妙なAPI、つまり2つのバージョンといくつかの例があり、それらが怠wereすぎるか、まだお勧めできないと判断しましたが、これは悲しいことです。 対照的に、mail.ru apiには多くの例と優れたドキュメントがあります。



アルゴリズムについて



サービスを開発する際に、主にデータベースへのクエリに基づくユーザーイベントだけでなく、美術館や映画館のために、地図上の最も近いオブジェクトを発行するためにいくつかのアルゴリズムを使用しました。

たとえば、最も近い5つの映画館を見つけるには、クエリmongod db.cinemas.find({“ geo”:{$ near:[x、y]}}。Limit(5)、dbコマンドを使用してデータベースに最初にインデックスを設定します。 cinemas.ensureIndex({“ geo”:“ 2d”、タイプ:1})。



イベント



イベントは共同時間のために設計されているため、半径2 kmで次のイベントを発行します。 イベントが終了すると、データベースから自動的に削除されます。



サービスのイベントはfoursquareイベントと比較できません。なぜなら、人々は単にfoursquareをチートし、上記のように、共同時間を期待して「チート」し、ユーザーのニックネームだけでなく、より詳細な情報も収集するからですそしてその場所、すなわち:ユーザーの連絡先、イベント名、イベントの日付、あなたはまた、高度なイベントのサイトのURLを指定することができます。



開発の問題



約2か月間、ローカルで作業してテストしましたが、すぐにホスティングが必要になりました。長い間、稼働中のmongodbで適切なホストを見つけることができませんでした。その結果、それへのリンクは低くなりました。



モバイルブラウザはこのテクノロジを完全にはサポートしていない可能性があるため、自己記述のxmlrequestを放棄する必要がありました。

開発時に使用したもの



git

phpshtorm

日食

モンゴッド

YandexAPI



参照資料



ホスティング: https : //locum.ru/

Opera MiniとOpera Miniの違いhttp://ru.opera.com/mobile/specs/

フレームワークhttp://twitter.github.com/bootstrap/index.html

ソースhttps://bitbucket.org/ziganzigan/habrcode

メールjs API

VK API



プロジェクト自体のページ



All Articles