バックグラウンドデート-話をするのが面白い人を探しています

だから、私は長い間出会い系サイトを書きたいと思っていましたが、同時に私はそれが他の何百ものと同じになりたくありませんでした。 その結果、これは出会い系サイトではなく、面白​​い人を見つけることができる場所であるべきことが明らかになりました。 一方で、特定のカテゴリの人々に限定されることは望まなかったため、テーマサイトを作成するオプションは考慮されませんでした。 結果は、リンクから見ることができます。 個人データの入力は提案されていないという事実にすぐに注意を払うことができます。 登録後に記入する必要があるからではなく、サイトにプロファイルがないためです。



制限が大きすぎるため、プロファイルはありません。 通常、同じ標準化された回答オプションを使用して、パラメータの標準化されたセットを設定することが提案されています。 しかし、何か他のものを示すか、他の方法で答えたいと思うとすぐに、そのような機会が提供されなかったという事実に直面します(または、私たちが望むように機能しません)。



habracatの下で、プロファイルの代わりにこのサイトにあるものについてお話しします。また、もちろん、いくつかの技術的な詳細についても書きます(これがなければどこになりますか)。



そして、ここで、ところで、「広告」スタイルの説明:



Brainfuckでプログラムできる女の子を探していましたか? それとも、彼女が適応的でセマンティックな組版の支持者であることはあなたにとって重要ですか? それとも、小核とモノリシックの違いを簡単に伝えることができる誰かに会いたいのですが、同時に彼女はダンサーです。



今、あなたはそのような機会を持っています-もちろん、バックグラウンドデートにすでに登録されている場合。 :)



サイトのプロファイルの代わりに重要なフレーズがあります。 各キーフレーズは、短い一人称声明です。



以下に例を示します。





各ユーザーは、任意の数のキーフレーズを持つことができ、任意のキーフレーズを検索で使用できます。 また、ユーザーは関心のあるいくつかのキーフレーズをすぐに検索する機会があります-この場合、指定されたすべてのキーフレーズを追加した人だけが結果に表示されます(したがって、検索結果が空の場合、指定されたキーフレーズの一部をリクエスト)。



キーフレーズを入力すると、自動置換が機能します。したがって、ユーザーから誰かが似たようなものを既に追加している場合は、リスト内のキーフレーズの1つを選択することをお勧めします。



キーフレーズはどんなものでも構いませんので、それに応じてさまざまな人を見つけることができます。 たとえば、デカンターが使用される理由を明確に知っている人に突然興味がある場合は、そのようなものを見つけることができます。



したがって、十分な数の人がいると、各ユーザーは自分にとって最も興味があり、その背景が最も好きな人と知り合う機会があります。



ちなみに、このサイトはDjango(Python言語)で動作します。 Web SocketsRFC 6455 )は、パーソナルメッセージングデータの送信に使用されます。 タブが最小化されると(例外-チャット)、インターネットチャネルをロードしないようにサーバーへの接続が一時的に閉じられます。これは悪名高いiskinの Visibility.jsを使用して、 HTML5 Visibility APIを通じて実装されます



サーバー側では、Tornado非同期ノンブロッキングサーバーを使用してWebソケットのサポートが実装されます。 誰かが望むなら、ソースとそれを展開する方法に関する情報を共有する準備ができています-原則として、複雑なことはありません。 DjangoとTornadoの間でメッセージを転送する(および一部のデータを保存する)ために、Redisが使用されます。Redisは優れたpub / subサポートを備えています。 Djangoは標準のredis-pyクライアントを使用し、 Tornado はbrükva非同期クライアントを使用します。



クライアント側でファイル(写真)を検証するには、 File APIを使用します 。 しかし、写真の解像度はチェックされません-それは実行できますが、特にサーバー上ですべてがダブルチェックされるため 、これまでは複雑にすることはしませんでした。 ただし、ファイルのタイプとサイズはチェックされます。これも悪くありません。 しかし、私は1つの興味深い事実に驚いた-事実は、ファイルAPI仕様によれば、ファイルを表すオブジェクトのタイプ属性にはRFC 2046に従ってファイルのMIMEタイプが含まれている必要があるが、ブラウザは実際のファイルタイプを使用せず、既存の拡張機能。



つまり、file.mp3などのMP3ファイルを取得します。 fileコマンドでMIMEを見てみましょう:



$ file --mime-type file.mp3 file.mp3: audio/mpeg
      
      





次に、拡張機能を削除して、再試行します。



 $ file --mime-type file file: audio/mpeg
      
      





同じこと。 別の拡張機能を試してみましょう。



 $ file --mime-type file.jpg file.jpg: audio/mpeg
      
      





同様に。



しかし、Webブラウザーは異なる意見を持っています-最初のケースでは、ファイル[0] .typeには文字列audio / mpeg(予想どおり)が含まれ、2番目には空の文字列、3番目の場合には既にimage / jpegが含まれます。 繰り返しになりますが、これは重要ではありません。サーバー上でクロスチェックされるためです。 ところで、ファイルタイプを「実際に」チェックしたい場合は、FileReaderを使用して手動で行うことができます 。 それからまたやります



ここで使用することにしたもう1つの優れたテクノロジーはWeb Storageです。 当初、Web StorageはHTML5仕様の一部でしたが、後に別の仕様で説明されました。 これを使用して、サイトは登録フォームデータをローカルブラウザーストレージ(localStorage)に保存します-ユーザーが入力するとすぐに。 つまり、たとえば、ユーザーが既にいくつかのキーフレーズを示していて、登録しようとして、突然タブ(またはブラウザー、またはコンピューターが完全にオフになった)を誤って閉じた場合、ユーザーが再びサイトにログオンするときに、再度追加する必要はありませんこれらのキーフレーズ-ローカルストレージから自動的にダウンロードされ、フォームに表示されます。



このサイトはアダプティブレイアウトも使用しているため、携帯電話、タブレット、ネットブックから使用できます。主なことは、最新のブラウザーがあることです(ところで、Android 4.2のデフォルトのブラウザーは、残念ながら、まだすべてをサポートしていませんが、 Firefox、Opera Mobile、Chromeがあり、すべてがうまくいきます)。



誰かが他の技術的な詳細(サーバーの検証や写真のトリミングなど)に興味がある場合、またはDjangoでの電子メールによる承認とバージョン1.5の変更について話したい場合は、個人的なやり取りなどでそれらについて話すことができます。



そしてもちろん、サイトをより良く/簡単に/より便利に使用する方法についてのアイデアがあれば、コメントでそれらを聞いてとてもうれしいです。 ちなみに、追加するのが非常に面白いと思われるものについていくつかのアイデアがあり、誰かがそれを望んでいる場合、それらについて事前に伝えることができます。 繰り返しますが、誰かが開発に参加したいという要望がある場合(現時点では、このサイトで作業しているのは私だけです)-書きます。



良い一日と面白い知り合いがいます。 :)



All Articles