it-animalsチームがデジタルブレイクスルーファイナルで優勝した方法

この記事は@Restlinのチームリーダーと共同執筆しました





ケースの選択とそのソリューションのビジョン

当初、選択は内務省の場合に当てはまりました。言語分析とテキスト内の物語の顔の変換のための自律型ソフトウェアソリューションの開発です。





ケースの定式化:





ロシア内務省の特定のサービスの活動の詳細を考慮して、文書を作成するとき、性別を考慮して、ナレーションの顔を一人称から三人称に変換する必要があります。テキスト。たとえば、元のテキストの「イワノフが私に行ったのを見た」というフレーズは、最終テキストの「彼はイワノフが彼のところに行ったのを見た」に変換する必要があります。開発されたソフトウェアソリューションは、ストーリーの顔を変換するプロセスを自動的に実行します。これにより、従業員は仕事の他の側面により多くの時間を費やすことができます。この訴訟は、ロシア内務省の情報技術通信情報保護局によって作成されました。 





彼は専門分野で私たちの近くにいて、この問題をどれほど美しく解決できるかについて明確な考えがありました。





証人の証言を一人称から三人称に自動変換できるWebサービスを作成する予定でした。





 ケースホルダーからのケースのプレゼンテーションを含むビデオを見る瞬間まで、すべてが可能な限りうまくいきました。彼らは出口で何を期待していますか。 





  1. ネットワークアクセスなしで機能するローカルソリューション。 





  2. マクロによる統合オフィススイート。





私たちのチームは2つの陣営に分けられました:半分はケース所有者の要件の厳格な遵守を主張しました、そうでなければケースを変更する必要があり、2番目は主要な解決策を主張しました(オフトピック:他の人からの同様の決定ショットと彼らは勝ちました)。





, : , .





:





« » , . , , , , . (, ). - , ( Creatio). .





? Open source : OpenSSL. - php tcpdf pdf . pirs.online , .





, .





,  . - , ASP.NET. 





( : ? , . 





?

: , .





: , . - . , , . - .





:





  • : ;





  • ( );





  • ;





  • ;





  • ;





  • ;





  • ;





  • .





3 , PostgreSQL: 





  1. user - ;





  2. message - . ;





  3. file - , .





php- Yii2 . .





OpenSSL, - .





, . - (libengine-gost-openssl 1.1) , -2012. .





: . - , , . ! 





PHP openssl , , , openssl engine .





openssl . , openssl.





:





exec("openssl req -nodes -newkey gost2012_512 -keyout $eSignPath/client.key -pkeyopt paramset:A -out $eSignPath/client.csr -subj \"/C=RU/ST=Udm/L=Izhevsk/O=IT/OU=animals/CN=user-{$user->id}\" -config $caPath/openssl.cnf ");







exec("openssl ca -engine gost -keyfile $caPath/ca.key -cert $caPath/ca.crt -in $eSignPath/client.csr -out $eSignPath/client.crt -batch -config $caPath/openssl.cnf 2>&1", $output);







$eSignPath



- , $caPath



- .





:





exec("openssl ca -config $caPath/openssl.cnf -keyfile $caPath/ca.key -cert $caPath/ca.crt -revoke $eSignPath/client.crt 2>&1", $output);







exec("openssl ca -gencrl -config $caPath/openssl.cnf -keyfile $caPath/ca.key -cert $caPath/ca.crt -out $caPath/crl.pem 2>&1", $output);







$eSignPath



- , $caPath



- .





:





exec("openssl smime -engine gost -sign -in $fp -out $fp.sig -nodetach -binary -signer $clientKeysPath/client.crt -inkey $clientKeysPath/client.key -outform SMIME 2>&1", $output);







$fp



- , $clientKeysPath



- .





:





$output = exec("openssl cms -engine gost -verify -in $sigPath -inform SMIME -CAfile $pathCA/ca.crt -out $fp -certsout $clientKeysPath/client.crt 2>&1");







$fp



- , $clientKeysPath



- , $sigPath



- .





openssl - .   , , . , : - .





: , tcpdf pdf pdf . , pdf .





: . , , , . , .





tcpdf openssl. . openssl (-,  ) api:





$fields = [







'r' => 'api/sign',







'filePath' => $tempdoc,







'userId' => $user->id,







];







$query = http_build_query($fields);







$ch = curl_init();







$host = \Yii::$app->params['apiHost'] ?? '';







curl_setopt($ch, CURLOPT_URL, $host . '/index.php?' . $query);







curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);







$signature = curl_exec($ch);







/*if (empty($this->signature_data['extracerts'])) {







openssl_pkcs7_sign($tempdoc, $tempsign, $this->signature_data['signcert'], array($this->signature_data['privkey'], $this->signature_data['password']), array(), PKCS7_BINARY | PKCS7_DETACHED);







} else {







openssl_pkcs7_sign($tempdoc, $tempsign, $this->signature_data['signcert'], array($this->signature_data['privkey'], $this->signature_data['password']), array(), PKCS7_BINARY | PKCS7_DETACHED, $this->signature_data['extracerts']);







}*/







!





Zoom , , . 





: ,   ( 5 ) . 





予想外に、結果は夕方まで待たなければなりませんでしたが、勝者は防衛のほぼ1時間後に北西ハブで発表されました。ロシア郵便の配達として時間がかかりました。





オフトップ:私たちは勝者です!チームあたり75万、カール!2日間で750、カール!そして、それは私たちがモスクワでのデジタルブレイクスルーのグランドファイナルに行くことを意味します!



私たちのソリューションリポジトリ








All Articles