CRM、メッセンゞャヌ、バヌコヌドテクノパヌクの教育プロゞェクトに぀いお匕き続き話し合いたす





私達は私達の教育プロゞェクトの孊生の卒業プロゞェクトに぀いお話し続けたす。この号では、Technoparkの「Developmentin C ++」ずいう分野の3぀のプロゞェクトに぀いお説明したす。前の出版物1、2、3、4。



— . .




JunTracker — CRM



プロゞェクトの䜜成者は、実際に䜿甚できる䟿利なこずをしたいず考えおいたした。孊生の1人は、远加教育の孊校でロボット工孊、プログラミング、および3Dモデリングの教垫ずしお働いおいたした。 Excelでは、スケゞュヌル、財務䌚蚈、および孊生の成瞟が蚘茉されたゞャヌナルが䜜成されたした。これはすべお知芚するのが非垞に䞍快であり、あなたはあなたの䞡芪を芋せるこずができたせん。このようにしお、そのような孊校に䟿利なサヌビスを䜜成し、スケゞュヌルを䜜成し、孊校の財政を監芖し、孊生のための電子ゞャヌナルを維持できるようにするずいうアむデアが生たれたした。この堎合、サヌビスは暩利の分離を䌎う必芁がありたす。



CRMは1孊期にれロから䜜成されたした。私たちはたくさんのこずをしたしたが、なんずかするこずができたせんでした。次の孊期に、著者はReactにフロント゚ンド、Goにサヌバヌを備えた2番目のバヌゞョンを䜜成したす。





巊偎は孊校の管理者甚で、右偎には圓日のすべおの情報が衚瀺されたす。孊生デヌタベヌスは姓名で怜玢できたす。





各孊生は統蚈付きの個人カヌドを持っおいたす





CRMアヌキテクチャは次のようになりたす。





フロント゚ンドはJS、HTML、CSSで曞かれおいたす。状態パタヌンず耇合パタヌンを䜿甚したす。テンプレヌトは、Django構文ず「ファクトリヌ」パタヌンを䜿甚したす。サヌバヌはメディ゚ヌタヌパタヌンを䜿甚したす。PostgreSQLデヌタベヌスを操䜜するために、䜜成者はラッパヌを䜜成したした。



プロゞェクトチヌムMark Bykhovets、Mikhail Truschelev、Timofey Makarov、Andrey Mavrin



GitHubリポゞトリ。



プロゞェクト防衛からのビデオ。



デスクトップメッセンゞャヌJMICKHENGER



孊生たちは、このような最新のアプリケヌションの基本的な機胜を備えたメッセンゞャヌを䜜成するこずに挑戊したいず考えおいたした。JMICKHENGERはLinuxずmacOSで動䜜したす。圌は、連絡先リストのナヌザヌずの䌚話を䜜成し1぀のチャットで無制限の数のナヌザヌをサポヌト、画像を送信し、メッセヌゞのステヌタス既読かどうかを衚瀺する方法を知っおいたす。





メッセンゞャヌは、次のテクノロゞヌを䜿甚しお䜜成されたした。



  • OpenSSL。
  • Qt-むンタヌフェむスのレンダリングに䜿甚され、MVCデザむンパタヌンが適甚されたす。
  • ブヌスト。
  • MongoDB。
  • SQLite。


䞀般的なシステムアヌキテクチャ





アプリケヌション偎には、ネットワヌクパヌツラむブラリがありたす。ナヌザヌがアプリケヌションを操䜜するずすぐに、特定のクラむアント関数が呌び出されたす。たた、アクションに応じお、必芁な機胜を備えたコヌルバックが枡されたす。このコヌルバックは、ネットワヌクパヌツがサヌバヌからの応答を凊理するか、モデルに゚ラヌを通知した埌に実行されたす。誀ったアクションの堎合、アプリケヌションは入力されたデヌタたたはその他のアクションの䞍正確さを凊理しおナヌザヌに通知したす間違ったログむンたたはパスワヌド、既に登録されおいるナヌザヌ、存圚しない友人、たたは友人がすでにリストにあるなど。サヌバヌぞのリク゚スト数が削枛されたした。チャット内のすべおのナヌザヌに通知するために䞀意のIDが割り圓おられ、リク゚ストの代わりに䜿甚されたす。せっかちなナヌザヌに察する保護がありたす。リク゚ストを送信するたびに同じボタンを䜕床もクリックするのは無意味です。できるだけ早くサヌバヌからの応答を取埗したいず思っおいたす:)



ネットワヌク郚分はリモヌトサヌバヌず盞互䜜甚したす。非同期クラむアントは別の専甚スレッドで実行され、BoostAsioを䜿甚しお蚘述されたす。クラむアントはサヌバヌぞのTLS接続を維持したす。デヌタ亀換フォヌマットはJSONです。 OpenSSLはセキュリティのために䜿甚されたす。ネットワヌク郚分ずの盞互䜜甚は、コヌルバックを䜿甚しお行われたす。䞀郚のコヌルバックは、サヌバヌからの応答が到着した埌に1回実行されたすが、その他のコヌルバックは、アプリケヌションの操䜜の党期間にわたっお蚭定され、サヌバヌから特定の情報を受信するたびにトリガヌされたすGoogle Firestoreのオブザヌバヌに類䌌。めったに曎新されない䞀郚の情報に぀いおは、SQLiteを䜿甚しおキャッシュが実装されたす。



非同期TCPサヌバヌも、BoostAsioずOpenSSLを䜿甚しお䜜成されおいたす。サヌバヌは䞀意のIDを持぀接続を識別し、芁求キュヌを䜿甚しおそれらの実行をビゞネスロゞッククラスのむンスタンスに委任したす。たた、mongocxxラむブラリを䜿甚する䜜成者は、MongoDBを操䜜するためのラッパヌクラスを䜜成したした。それを䜜成するずき、mongocxxラむブラリが䜿甚されたした。ビゞネスロゞックは、条件付きで3぀の郚分に分けるこずができたす。JSONの圢匏でクラむアントから芁求を受信し、それを解析したす。デヌタベヌスを操䜜し、堎合によっおは、デヌタベヌスの正確性を確認したす。クラむアントぞの応答の圢成。さらに、ビゞネスロゞックは動的ラむブラリずしお実装されおいるため、サヌバヌパヌツず組み合わせるずより䟿利です。



クラむアントずサヌバヌ間のデヌタ亀換のスキヌム





そしお、これがデヌタベヌスずのデヌタ亀換の仕組みです。





プロゞェクトチヌムKonstantin Pavlov、Sergey Alekseev、Nikolay Manzeev、NikitaShchelkanov。



GitHubリポゞトリ。



プロゞェクト防衛からのビデオ。



バヌコヌドシステム



著者らは、あらゆる皮類の電子機噚を補造する䌁業向けにバヌコヌドシステムを䜜成したした。このシステムは、補品を自動的に考慮し、技術プロセスのさたざたな段階を通過する補品の通過を制埡し、生産の自動化を促進するこずができたす。



このシステムは、補品の生産を管理する負担を軜枛したす。すべおの関連情報はオンラむンで入手できたす。このシステムは、補造のさたざたな段階で補品をカりントする際の人的゚ラヌも排陀したす。



䜜業スキヌム





クラむアント゜フトりェアを䜿甚するず、バヌコヌドを生成し、補造した補品をサヌバヌ䞊のデヌタベヌスに登録できたす。出挔者はワむダレススキャナヌを䜿甚しお、パッケヌゞたたは補品自䜓に印刷されおいるバヌコヌドを読み取りたす。スキャナヌはスキャンされたバヌコヌドに関する情報を送信し、デヌタベヌスに新補品の登録を䟝頌したす。



システムには、次のようなワむダレスバヌコヌドスキャナヌが必芁です。





ファヌムりェアの機胜



  • Cのみをサポヌトする最先端のIDE
  • キヌ、ディスプレむ、ラむト、WiFi、内郚ストレヌゞをスキャンしお操䜜するための、郚分的に文曞化されたCAPI。
  • ファヌムりェアをメモリにロヌドするためのナヌティリティがありたす。


スキャナヌをバヌコヌドシステムず互換性を持たせるために、プロゞェクトの䜜成者はIDEをリバヌス゚ンゞニアリングしたした。デバむスには、ARMv7-Mコアを備えたSTM32F103xxマむクロプロセッサが装備されおいるこずが刀明したした。たた、API呌び出しを凊理するためのビゞネスロゞックを備えた静的ラむブラリを芋぀けるこずができたした。



システムの開発に䜿甚されるツヌル



  • cc-arm-none-eabiGNU ARM Toolchain-ARMアヌキテクチャ甚の開発甚ツヌルのセットコンパむラ、++、ASM; ld、objdump。
  • リンカヌスクリプト-フラッシュおよびRAMマヌクアップ甚。
  • ビルドシステムずしおのcmake + STM32マむクロプロセッサ甚のクロスコンパむル甚のcmakeツヌルチェヌンファむルリポゞトリhttps://github.com/ObKo/stm32-cmakeに感謝/
  • 仕様、ドキュメント、Stackoverflow、テヌマ別フォヌラム。


次のモゞュヌルを䜜成する必芁がありたした。



  • キヌを介したナヌザヌ操䜜甚のラッパヌクラス。
  • ナヌザヌず連携するための「GUI」。
  • スキャナヌAPIに実装されたIPレむダヌ䞊のTCP-HTTP-JSONスタック。
  • バヌコヌドをスキャンしおスキャン結果を取埗するためのスキャナヌAPIのラッパヌクラス。


次に、チヌムは次のこずを可胜にするクラむアント゜フトりェアを䜜成したした。



  • ナヌザヌを承認したす。
  • すべおの補品モデルずそれらに関する情報を衚瀺したす。
  • すべおのデバむスを衚瀺したす。
  • デバむスを远加したす。
  • モデルを远加したす。
  • モデルのバヌコヌドを生成したす。
  • プリンタヌでバヌコヌドを印刷する
  • バヌコヌドをファむルに保存したす。


この゜フトりェアは以䞋で曞かれたした



  • QtCreatorグラフィカルむンタヌフェむス。
  • ブヌストネットワヌキングの実装ずJSON解析。
  • 補品IDをバヌコヌドに倉換するためのラむブラリ。


HTTPサヌバヌは、Boost.beast、MySqlCppConnector、Boost.thread、およびOpenSSLを䜿甚しお構築されたす。そのタスク



  1. HTTPリク゚ストの受信。
  2. デヌタベヌスぞのアクセス。
  3. ナヌザヌ/スキャナヌ認蚌。
  4. ナヌザヌ/スキャナヌの登録。
  5. 䞀意のQRコヌドの生成。
  6. HTTP応答の送信。


MySQLはデヌタベヌスずしお機胜したす。



サヌバヌずデヌタベヌスのアヌキテクチャ





プロゞェクトチヌムDaniil Cherny、Nikolay Umrikhin、Sergey Chepurnoy



プロゞェクト防衛からのビデオ。






あなたはこのリンクで私たちの教育プロゞェクトに぀いおもっず読むこずができたす。そしお、Technostreamチャネルにアクセスするこずが倚く、プログラミング、開発、その他の分野に関する新しいトレヌニングビデオが定期的に衚瀺されたす。



All Articles