FacebookたたはTelegram りクラむナの.NETコアコミュニティの歎史

こんにちは、Habr ある日、.NET Coreに匷い関心を持぀人がブログを始めるこずにしたした。 そしお、「どのリ゜ヌスを䜿甚すればよいですか」ずいう疑問が生じたした。 既存のFacebookずTelegramは、出版物の構造化にはたったく䞍適切でした。 その結果、同じ.Net Coreを䜿甚しお、ブラックゞャックず構造化を䜿甚しおサむトを䜜成するこずが決定されたした。







著者に発蚀暩を䞎えたす。



.NET Coreの発衚以来、私はこの技術を泚意深く監芖し始めたした。 最初のバヌゞョンがリリヌスされたずき、私のプロゞェクトのいく぀かはこのプラットフォヌムに移されたした。 結果は満足でした-すべおが安定しお機胜し、フレヌムワヌクのクラシックバヌゞョンよりもさらに高速でした。 しばらくしお、.NET Coreの開発に興味のあるプログラマのむンタヌネットコミュニティを組織するこずにしたした。 コミュニケヌションの最初のプラットフォヌムはFacebookでした。



しばらくしお、Telegramでチャンネルを䜜成するこずにしたした。そこで、.NET Coreの開発に関連するさたざたなニュヌスぞのリンクを公開し始めたした。 箄6か月埌、私はTelegramはニュヌスレタヌには非垞に䟿利ですが、出版物の怜玢ず構造化には絶察に適さないず結論付けたした。 時間が経぀に぀れお、チャンネルのニュヌスが十分に頻繁に公開される堎合、フィヌドでは少なくずも先週読んだ出版物をすばやく芋぀けるこずはほずんど䞍可胜です。



Facebookグルヌプもこのタスクであたりうたくいっおいたせんでした。 したがっお、情報を構造化し、出版物のナビゲヌションをより䟿利にするために、最終的に// devdigestず呌ばれる集玄サむトを䜜成するこずにしたした。



圓然、.NET Coreは開発プラットフォヌムずしお採甚されたした。 プロゞェクト自䜓はGitHubの公開リポゞトリでホストされおおり、誰でもその内郚構造ず゜ヌスコヌドを知るこずができたす。



この蚘事で// devdigestず話す方法に぀いお説明したす。



Webペヌゞ甚のりィゞェットを䜜成する



サむトの䞻なタスクは、すべおの出版物を䟿利な圢匏で保存するこずです。 サンプルでは、​​Facebook倖郚リンクの説明がどのように生成されるかを取り䞊げたした。リンクごずに、タむトル、写真、短い説明から小さなりィゞェットが圢成されたす。



リンクの説明を䜜成するために、小さなラむブラリを䜜成したしたその゜ヌスコヌドはGitHubで入手でき、ラむブラリ自䜓はnuget.orgで公開されおいたす 。 ラむブラリのロゞックは非垞にシンプルで、リンクを受け取った埌、 HtmlAgilityPackを䜿甚しおドキュメントのドキュメントモデル同じDOMツリヌ が圢成され、このモデルから抜出されたす。









Telegramずの統合



次のステップは、Telegramチャネルでのクロスシェアニュヌスの線成でした。 チャネルぞの盎接公開の可胜性はないため、以前はボットを䜜成する必芁がありたした。ボットの代わりにパブリケヌションが投皿されたす。 ボットの䜜成方法に぀いおは、 こちらで詳しく説明されおいたす 。 ボットを䜜成したら、管理者暩限でチャネルに远加し、トヌクンを取埗する必芁がありたす。







それだけです これで、ボットは投皿を公開できるようになり、APIを介しおボットを制埡できるようになりたした。



ボットず察話するには、 公匏SDKを䜿甚するこずをお勧めしたす 。 チャネルにメッセヌゞを送信するためのコヌドは次のようになりたす。







このサむトには、Telegramでの公開に加えお、Facebookで投皿を䜜成する機胜もありたすが、次回はそれに぀いお説明したす。



ホスティング



プロゞェクトを配眮する堎所には、商甚プロゞェクトに䜿甚するサヌバヌの1぀、たたはMicrosoft Azureクラりドの2぀のオプションがありたした。 クラりド配眮オプションは、いく぀かの理由で望たしいものでした。





認知サヌビス



時間が経぀に぀れお、りェブサむトの出版物のメむンフィヌドに英語のみを衚瀺するこずが決定されたした。それらのほずんどず、異なる蚀語でのコンテンツの亀互衚瀺がかなり奇劙に芋えたためです。 もちろん、このようなフィルタリングを実装するために、サむト管理者のむンタヌフェヌスで、出版蚀語を遞択しお別のコンボボックスを䜜成するこずができたした。 しかし、少なくずもそれは平凡で面癜くありたせん。 特に、珟圚利甚可胜な既補の機械孊習ベヌスのサヌビスの数を考慮しおください。 そのため、Microsoft Azure Cognitive Servicesの䞀郚であるText Analytics APIを䜿甚するこずにしたした。 Text Analytics APIを䜿甚するず、テキストからキヌワヌドを抜出したり、送信されたテキストの蚀語を決定したりできたす。 これはたさに私が必芁ずしたものです。



サヌビスの䟡栌は非垞に人道的です-ご芧のずおり、無料の料金プランでさえ、テキスト分析のための非垞に豊富な機䌚を提䟛したすキヌフレヌズの抜出ずテキストの蚀語の決定。 これはたさに私たちが必芁ずするものです



画像 4



nugetパッケヌゞずしおむンストヌルされおいるSDKずREST APIの䞡方を䜿甚しお、Text Analytics APIを操䜜できたす。 私自身は、RestSharpラむブラリヌを䜿甚しおREST APIで䜜業するオプションを遞択したした。



APIにリク゚ストを行う前に、キヌを取埗する必芁がありたす。 管理ポヌタルの適切なセクションで芋぀けるこずができたす。







キヌを受け取ったら、クラむアントを準備できたす。







API自䜓は非垞にシンプルで明癜です。 たずえば、テキストの蚀語を決定できるク゚リは次のようになりたす。







テキスト凊理速床は十分に速いため、ペヌゞが2段階で分析されたす最初に説明、タむトル、画像が抜出され、次に出版蚀語の分析が実行されたすが、すべおの手順は数秒で完了したす。



無料の蚌明曞、SSL、Let's Encrypt、nginx



サむトはSSL蚌明曞をサポヌトしない共有料金プランでホストされおいるため、HTTPSを䜿甚したいので、蚌明曞を蚭定するプロキシずしおDigital Oceanサヌバヌの1぀を䜿甚するこずにしたした。 Let's Encryptを䜿甚しお蚌明曞を取埗する手順に぀いおは、たずえばここで詳しく説明しおいるので、説明したせん。 プロキシ蚭定手順も非垞にすばやく芋぀けるこずができたすが、そこにすべおがどのように配眮されおいるかに特に興味がある人は 、GitHub で利甚可胜な構成ファむルをダりンロヌドできたす。



たずめ



では、珟時点では䜕がありたすか 珟圚、プロゞェクトの党䜓的なアヌキテクチャは次のようになっおいたす。







統合するように構成されおいる情報プラットフォヌムの芳点から、それぞれがサむト䞊の察応するストリヌムに関連付けられおいる3぀の異なるテレグラムチャネルを区別できたす。





devdigest //ネットコアスレッドにも関連付けられおいるFacebookペヌゞがただありたす



サむト管理者の芳点から芋るず、UIは可胜な限りシンプルに芋えたす。







管理パネルは、4぀の入力芁玠のみで構成されおいたす。





その結果、短期間、かなり控えめなリ゜ヌスを䜿甚しお、かなりシンプルなツヌルを手に入れたした。同時に、いく぀かのサむトを埋める䜜業を倧幅に最適化するこずができたした。



著者に぀いお



Andrey Gubsky-゜フトりェア開発およびアヌキテクチャのスペシャリスト。 .NET Core Ukraininan User Groupの創蚭者。 CTOプロゞェクトPeat TV、開発者、ITコンサルタント。 Visual Studioおよび開発テクノロゞMVP。



All Articles