E-Dobavkiは、孊生が䜜成したJavaおよびSpring Bootの食品サプリメント怜玢サヌビスです。

はじめに


過去2幎近く、私はキ゚フのIT孊校の1぀でプログラミングを教えおきたした。 私は楜しみのためにこれをやった。 プログラミングに関するブログを曞いおいたが、その埌攟棄された。 しかし、関心のある人々に有甚なこずを䌝えたいずいう欲求は消えおいたせん。


私の䞻な蚀語はJavaです。 モバむルゲヌム、無線通信甚゜フトりェア、およびさたざたなWebサヌビスに぀いお曞いた。 そしお、私は特にJavaを教えおいたす。


ここで、最埌のグルヌプのトレヌニングの話をしたいず思いたす。 孊習から実甚的なWebサヌビスの䜜成に至るたでの経緯。 栄逊補助食品を芋぀けるための䟿利なWebサヌビス。 無料、広告、登録、SMSなし。


サヌビス自䜓はここにありたす-E-Dobavki.com 。



このプロゞェクトは教育的なものであり、広告は含たれおいたせん。 この出版物から理解できるように、そのようなプロゞェクトぞのリンクを提䟛できたす。


プロゞェクト自䜓を説明する前に、グルヌプトレヌニングのプロセスに぀いお少し説明しおください。これがないず、写真は䞍完党になりたす。


勉匷の9ヶ月


私が教えおいる孊校では、Javaコヌスは2぀のパヌトに分かれおいたす。 合蚈で、コヌスは玄9か月かかり、すべおの䞭断幎末幎始、䞭間プロゞェクトの䜜成時間がありたす。


最初の郚分では、生埒にYPの基本抂念を玹介したす。 倉数、メ゜ッド、OOPの基本、これらすべお。


コヌスの2番目の郚分では、孊生はJavaでの蚘述方法を倚少なりずも理解しおおり、「倧人」の技術スタックが䞎えられるず芏定しおいたす。 すべおSQLで始たり、JDBC、Hibernateで始たりたす。 次に、HTTP、サヌブレット。 さらに春、gitずmavenに぀いお少し。 そしお、孊生は最終プロゞェクトを曞きたす。


すべおのトレヌニングはモゞュヌルに分かれおいたす。 週に2回クラスを実斜したした。 1レッスンの期間は2時間です。


私の孊習アプロヌチ


5぀のグルヌプをリリヌスしたした。 2幎間は倧倉に思えたすが、私はほずんど垞に2぀のグルヌプを䞊行しお率いおいたした。


さたざたなアプロヌチを詊したした。


最初のオプションは、1぀のペアが理論を備えたプレれンテヌションで際立っおいるこずです。 2番目のペアは玔粋な緎習です。 このアプロヌチは䜕ずか機胜したしたが、私にずっおは効率はあたり良くありたせんでした。


私が今たで取り組んでいる2番目の遞択肢は、理論党䜓をペアに捧げるこずではありたせん。 代わりに、理論の短いセクションを5〜10分間混合し、すぐに実甚的な䟋を䜿甚しお修正したす。 このアプロヌチはより効果的です。


十分な時間があれば、孊生を私の堎所に呌び、ラップトップに座っお、圌ら自身が実際的な䟋を䜜りたす。 クヌルに動䜜したすが、残念ながら時間がかかりたす。


すべおが終わりに達するわけではない


私にずっおの発芋は、グルヌプ党䜓がコヌスの終わりに達しおいないずいう事実でした。


私の芳察によれば、最終ドラフトを曞く孊生は半数にすぎたせん。 ほずんどはコヌスの最初の郚分で陀去されたす。 そしお、2番目の郚分に達した人は、通垞萜ちたせん。


圌らはさたざたな理由で去りたす。


1぀目は耇雑さです。 圌らが䜕ず蚀っおも、Javaは最も簡単な蚀語ではありたせん。 最も単玔なプログラムでさえ曞くには、クラス、メ゜ッドの抂念を理解する必芁がありたす。 たた、なぜpublic static void mainString [] argを蚘述する必芁があるのか​​を理解するには、さらにいく぀かの抂念を理解する必芁がありたす。


これを、私を含む倚くの人から始めたTurbo Pascalず比范しおください。


begin writeln(" "); end. 

私の知る限り、この問題を解決するために、孊校は远加のテストを導入したす。 今では誰もがJavaを孊ぶこずができるわけではありたせん。 これは構想段階ですが、ステップは明らかに正しいものです。


2番目の理由は、次の図のようなものです。



倚くの人は、プログラミングは倚くのテキストを印刷し、そのために倚くのお金を埗るずきだず考えたす。 コピヌラむタヌずしお、より倚くのお金だけ。


珟実は少し異なりたす。 倚くのルヌチンコヌド、明癜でないバグ、継続的な孊習プロセス。 これは興味深いですが、誰にずっおもそうではありたせん。


そのような統蚈。 最初は気分を害したした。䜕か間違ったこずをしおいるのではないかず思いたした。 今、私はほずんどのコヌスで同じ統蚈に぀いお理解しおいたす。 今はこれに぀いお心配しおいたせんが、興味のある人たちに教えおいたす。


サヌビスアむデア


孊生がフルコヌスを修了したら、最終プロゞェクトを䜜成したす。 さたざたなアむデアがありたした。 提䟛されたToDoリスト、プロゞェクト管理プロゞェクト、その他。


シンプルで䟿利なものにしたかった。 私の基準は簡単でした-私ず私の友人はそれを䜿甚できたす。 これらの芁件の䞋で、食品添加物を芋぀けるためのWebサヌビスが提䟛されたした。


アむデアはシンプルです。 店で補品を賌入するず、E-shnuyuサプリメントが衚瀺されたす。 コヌドによれば、それがどれほど危険かは明らかではありたせん倚くの囜で犁止されおいる危険な添加物がありたす。


サむトを開き、サプリメントの名前代替名の1぀である番号を入力しお、サプリメントの抂芁を取埗したす。



同様のプロゞェクトがありたす。 情報を垞に正しく衚瀺するずは限りたせんが、添加物をGoogleに取り蟌むこずもできたす。


しかし、プロゞェクトは教育的なものであるため、䞊蚘の困難は私たちを止めたせんでした:)


実装


誰もがGithubのプロゞェクトの゜ヌスコヌドであるJavaで曞きたした。


私を含めお7人でした。 誰もがプルリク゚ストを行い、私たたはグルヌプの別の人がこのプルリク゚ストを受け入れたした。


プロゞェクトの実装には玄1か月かかりたした。アむデアの発蚀から珟圚の状態たでです。


添加物の解析


デヌタベヌス゚ンティティ、リポゞトリなどの呚りのバむンディングの基本的な䜜成ずは別に、孊生の1人が最初に行ったのは、既存の情報サむトからの添加物の解析です。


これは、残りのポむントをテストするために必芁でした。 デヌタベヌスにデヌタを入力するために远加のコヌドは必芁ありたせん。 いく぀かの添加物をすばやくスパヌリングするこずにより、UI、゜ヌト、フィルタリングをさらにテストするこずができたした。


Spring Bootでは、耇数のプロファむルを䜜成できたす。 プロファむルは蚭定ファむルです。


開発環境では、ロヌカルH2 DBMSずデフォルトのHTTPポヌト8080を持぀プロファむルを䜿甚したした。 したがっお、アプリケヌションが起動されるたびに、デヌタベヌスがクリアされたした。 この堎合のパヌサヌは、私たちを救ったものです。


怜玢ずフィルタヌ


重芁なポむントは、怜玢ずフィルタリングです。 店の人は、サプリメントコヌドたたは名前の䞀郚をすばやく突き、結果を取埗する必芁がありたす。


したがっお、Additive゚ンティティにはいく぀かのフィヌルドがありたす。 これは、远加コヌド、代替名、説明です。 怜玢は、すべおのフィヌルドに察しお「いいね」を䞀床に続けたす。 [123]たたは[amaranth]を入力するず、同じ結果が埗られたす。


これらはすべお仕様に基づいお行いたした。 これはSpringの䞀郚です。これにより、基本的な怜玢条件たずえば、䞀郚のフィヌルドなどを蚘述し、これらの条件ORたたはANDを組み合わせるこずができたす。


倚数の仕様を蚘述するこずにより、「説明に[èµ€]ずいう単語が含たれるすべおの危険な染料添加剀」などの耇雑なク゚リを芁求できたす。


Springデヌタベヌスを操䜜するずいう点では、非垞に䟿利なようです。 これは、耇雑なク゚リを凊理する堎合に特に圓おはたりたす。 これによりオヌバヌヘッドが発生し、手動で蚘述および最適化されたSQLク゚リが高速になるこずを理解しおいたす。


しかし、すべおを事前に最適化する必芁はないずいう芋方もしおいたす。 最初のバヌゞョンが起動しお動䜜し、個々の郚品を亀換できるようにする必芁がありたす。 そしお、負荷がかかった堎合-曞き換える必芁がある個別の郚分です。


セキュリティ


すべおがシンプルです。 ADMINロヌルを持぀ナヌザヌがいたす。ナヌザヌは添加物を線集、削陀、新しい添加物を远加できたす。


たた、他のナヌザヌ登録枈みたたは未登録がいたす。 サプリメントのリストを衚瀺し、適切なサプリメントを怜玢するこずしかできたせん。


暩利を分離するために、Spring Securityが䜿甚されたした。 ナヌザヌデヌタはデヌタベヌスに保存されたす。


ナヌザヌは登録できたす。 今では䜕も提䟛したせん。 孊生がサヌビスの開発を続け、パヌ゜ナラむズされた機胜を導入する堎合、登録は䟿利です。


適応性ずブヌトストラップ


次のポむントは適応性です。 私たちのサヌビスの堎合少なくずも私たちが芋たように、ほずんどのナヌザヌは携垯電話を䜿いたす。 たた、モバむルからは、サプリメントをすばやく衚瀺する必芁がありたす。


CSSに悩たされないように、Bootstrapを䜿甚したした。 安くお、陜気で、たずもです。


完璧なむンタヌフェヌスずは蚀えたせん。 メむンペヌゞはさらに小さく、添加剀の詳现な説明のペヌゞは狭く、携垯電話では幅を広げる必芁がありたす。


私は最䜎限、仕事に干枉しようずしたずしか蚀えたせん。 これはただ孊生プロゞェクトです。 そしおもちろん、圌らはそのような瞬間を埌で修正するこずができるでしょう。


ミニッツSEO最適化


2幎以䞊の間、りェブサむトやSEOに関連するすべおのこずで忙しかったため、少なくずも基本的なSEOの最適化がなければプロゞェクトを立ち䞊げるこずができたせんでした。


実際、各サプリメントのテンプレヌト生成のタむトルず説明を䜜成したした。 URLはほずんどCNCですが、短くするこずもできたす。


出垭カりンタヌも远加したした。 怜玢゚ンゞンからのアラヌトを远跡するサむトをYandex WebmasterおよびGoogle Search Consoleに远加したした。


これでは十分ではありたせん。 たた、完党なむンデックス䜜成のためにrobots.txtずsitemap.xmlを远加する必芁がありたす。 しかし、これも孊生プロゞェクトです。 私は圌らに䜕をする必芁があるかを䌝え、圌らが望むなら圌らはそうするでしょう。


SSL蚌明曞を添付する必芁がありたす。 無料のLet's Encryptも同様です。 Spring Bootでこれを行いたした。 難しいこずではなく、PSの信頌が高たっおいたす。


プロゞェクトの次のステップ


さらに実際には、遞択は人次第です。 プロゞェクトの最初のアむデアには、添加物ぞのリンクを含む補品デヌタベヌスも含たれおいたした。


「スニッカヌ」ず入力しお、含たれおいる栄逊補助食品の皮類を確認したす。


プロゞェクトの開始時でさえ、私たちには補品がないこずを知っおいたした:)したがっお、私たちは添加物から始めたした。


これで、補品を固定し、远加を導入できたす。 パン。 倧芏暡なデヌタベヌスの堎合、ナヌザヌが芋぀かりたす。


展開


このプロゞェクトは、Aruba CloudのVPSにデプロむされたした。 これは、私たちが芋぀けるこずができる最も安いVPSです。 私は自分のプロゞェクトでこのプロバむダヌを1幎以䞊䜿甚しおいたすが、嬉しく思いたす。


VPSの仕様1 GB RAM、1 CPU呚波数はわかりたせん、20 GB SSD。 私たちのプロゞェクトでは、これで十分です。


プロゞェクトは通垞のmvn cleanパッケヌゞに移行したす。 fat jarは、すべおの䟝存関係を持぀実行可胜ファむルであるこずがわかりたす。


これを少し自動化するために、bashスクリプトをいく぀か曞きたした。


最初のスクリプトは叀いjarファむルを削陀し、新しいjarファむルを収集したす。


2番目のスクリプトは、組み立おられたjarを開始し、必芁なプロファむルの名前を枡したす。 このプロファむルには、デヌタベヌス接続情報が含たれおいたす。


DB-同じVPS䞊のMySQL。


プロゞェクトの完党な再起動は次のずおりです。



この手順には3分かかりたす。 私には、このような小さなプロゞェクトには合理的な遞択のようです。


難しさ


プロゞェクトを䜜成する際の䞻な困難は、本質的に組織化でした。


プログラミングできるように芋えるが実際にはそうではない人々のグルヌプがありたす。 圌らは䜕かを知っおいたすが、それを実際に適甚するこずはできたせん。 そしお、圌らは1ヶ月でプロゞェクトを行う必芁がありたす。


このグルヌプの条件付きチヌムリヌダヌを匷調したした。 圌は、タスクのリストでGoogleドキュメントをリヌドし、タスクを配垃し、採甚を制埡したした。 圌はプルリク゚ストも受け入れたした。


たた、私は孊生にプロゞェクトで行われた䜜業に぀いお毎晩短いレポヌトを曞くように頌みたした。 䜕もしたせんでした-わかりたしたので、「䜕もしなかった」ず曞いおください。 これは、少し緊匵させる玠晎らしい緎習です。 残念ながら、党員がこのルヌルに埓ったわけではありたせん。


このすべおの運動の目暙は単玔でした。 チヌムを結成したすが、少しの間ですが、䞀緒に働きたす。


私は圌らに圌らの仕事の重芁性を感じおもらいたいず思いたした。 圌らは真空で球状のコヌドを曞かないこずを理解しおください。 そしお、人々が䜿甚するプロゞェクトを䞀緒に䜕をしたすか。


最初の1週間か2週間は積み䞊げでした。 ゆっくりず䜜成された゚ンティティ、小さなコミット。 少しず぀、私はそれらをかき立お、仕事はさらに楜しくなりたした。 チャットは掻発になり、生埒は远加を提案したした。


目暙は達成されたず思いたす。 プロゞェクトは完了し、チヌムで少し経隓を積むこずができたした。 友達に芋せるこずができる目に芋える具䜓的な結果があり、さらに発展させるこずができたす。


結論


孊習は面癜いです。


各ペアの埌、私は感情的に動揺したした。 各ペアをナニヌクにし、最倧限の知識を䌝えようずしおいたす。


私がトレヌニングしおいるグルヌプが決勝に到達するのは玠晎らしいこずです。 特にクヌルなのは、「私は仕事を埗た、すべおのルヌル、ありがずう」ず曞いおいるずきです。 最初は最倧のお金ではないにしおも、それを埌茩にしたしょう。 しかし、最も重芁なこずは、圌らは圌らの欲求に向かっお䞀歩を螏み出し、圌らは成功したした。


蚘事は非垞に膚倧であるこずが刀明したしたが、もちろん、すべおのポむントを明らかにするこずはできたせんでした。 したがっお、コメントに質問を曞いおください。



Source: https://habr.com/ru/post/J448422/


All Articles