Equator di Technopark: pertahanan proyek semester kedua





Di udara, cerita baru tentang proyek kelulusan siswa proyek pendidikan kita. Kali ini kami akan memperkenalkan Anda pada empat makalah yang dipresentasikan pada pembelaan bersama semester kedua program utama Technopark dalam disiplin ilmu "Pengembangan front-end", "Pengembangan layanan web on Go" dan "Desain antarmuka". Publikasi sebelumnya: satu , dua , tiga .



Ini adalah pertama kalinya siswa yang mempertahankan proyek dihadapkan pada teknologi ini. Pengerjaan proyek ini memakan waktu satu semester, tujuan dari tulisan tersebut adalah untuk menunjukkan proses pendidikan dan hasil karya siswa.


Musik Virus



Ini adalah layanan musik Internet untuk mengalirkan musik tanpa mengunduh ke perangkat Anda. Halaman utama berisi pilihan trek hari ini, serta daftar singkat artis.





Jika Anda mengklik seorang artis, daftar treknya akan terbuka. Anda dapat berlangganan artis favorit Anda agar tidak ketinggalan rilis baru mereka, dan Anda dapat menyukai lagu dan album favorit Anda. Untuk kenyamanan menavigasi database musik, ada pencarian secara bersamaan berdasarkan artis, trek, dan album. Daftar putar dapat dibuat. Di profil, Anda dapat melihat trek favorit Anda, menyukai album dan langganan artis, serta mengelola daftar putar Anda. Untuk membuat layanan terlihat lebih menyenangkan, orang-orang menambahkan kemampuan untuk menyesuaikan warna antarmuka. Dan antarmukanya sendiri disesuaikan untuk perangkat seluler dengan ukuran layar berbeda - semangat zaman.







Selama mengerjakan proyek, orang-orang tersebut harus menemukan kompromi ketika mereka tidak menyetujui beberapa keputusan. Dalam mencari opsi yang sesuai, kami mengubah dua mesin templat dan dua prosesor pasca. Kami juga memutuskan untuk menerapkan MVC di frontend sebelum kami menemukan esensi dari pendekatan ini, karena itu nanti kami harus banyak mengulang. Backend menggunakan arsitektur "bersih".



Layanan ini ditulis dalam Go dan JavaScript (dengan Web Workers untuk mengeksekusi JavaScript secara asinkron), menggunakan Rest API dan serializer EasyJSON. PostgreSQL dan Redis digunakan untuk menyimpan data, dan pustaka Gorm digunakan untuk bekerja dengannya. Microservices saling berkomunikasi melalui gRPC. Server webnya adalah Nginx. Ketikan digunakan. CI / CD dibangun di atas Github Actions dan MCS. Juga diterapkan SharingAPI (untuk berbagi tautan) dan kolektor Webpack.



Untuk mengembangkan layanan, Anda memerlukan yang paling penting: perpustakaan musik yang layak. Penulis juga berencana untuk mengumpulkan statistik tentang mendengarkan untuk membuat sistem rekomendasi berdasarkan preferensi pengguna.



Tim proyek: Margarita Boyko, Dmitry Rybakov, Natalia Klimova, Nikita Panev.



Video dengan perlindungan proyek .



Kino On



Orang-orang itu membuat situs web untuk mencari informasi tentang film dan acara TV . Mereka menambahkan kemampuan untuk membuat daftar putar dan memberikan ulasan. Situs ini memiliki pilihan film dan serial tematik, ada pencarian teks lengkap di database, dengan kemampuan untuk memilih genre, tahun rilis, aktor.







Salah satu fungsi utamanya adalah menyusun daftar gambar yang mirip untuk film yang ditentukan pengguna. Orang-orang ingin membuat produk yang lengkap, jadi mereka menerapkan kompilasi koleksi tanpa pembelajaran mesin yang modis. Sebaliknya, untuk film tertentu, karya tersebut dipilih yang paling sering dimasukkan oleh pengguna situs dalam satu daftar putar dengan daftar putar tertentu. Artinya, semakin sering dua film berakhir di playlist yang sama, semakin besar kemungkinan kemiripannya. Meskipun, "serupa" mungkin istilah yang salah. Sebaliknya, mereka adalah "film yang juga akan Anda nikmati dengan kemungkinan tertentu". Itu sama dengan acara TV.





Selain itu, siswa yang menggunakan Web Share API membuat fungsi pengiriman tautan ke film yang diminati. Dibuat untuk kecantikan, dengan kemampuan melampirkan gambar dan deskripsi.



Backend seluruhnya ditulis dalam Go menggunakan prinsip arsitektur "bersih". Itu sangat membantu untuk menyusun proyek. Tindakan Github melacak setiap dorongan ke cabang master. Pengujian dijalankan secara otomatis, dan jika semuanya beres, maka proyek tersebut akan dimasukkan ke dalam container Docker dan dikirim ke Dockerhub. Kemudian mereka ditarik dari server dan diluncurkan. Backend adalah server API yang berjalan melalui HTTP dan HTTPS. Di pintu masuk pertama ke situs, klien menerima file dengan kode klien. Kami telah mengotomatiskan peluncuran server web nginx menggunakan Ansible.



Menggunakan plugin Google Chrome Web Scrapper, mereka mengumpulkan informasi tentang film dan acara TV. Data dalam bentuk file csv diolah dengan script Python, diubah menjadi query SQL yang valid, dan database telah diinstal. Nginx SSI bertanggung jawab untuk melampirkan gambar dan deskripsi ke tautan ke film dan acara TV. HTTP 3.0 digunakan sebagai protokol, untuk ini kami harus membangun kembali Nginx dengan modul dan pustaka baru, menulis banyak header.



Tim proyek: Andrey Zubkov, Konstantin Pronin, Alisa Seledkina, Oleg Elizarov.



Video dengan perlindungan proyek .



Drello



Ini adalah pengelola tugas multifungsi . Prinsip yang diterapkan di Drello mungkin sudah tidak asing lagi bagi Anda: pengguna mengumpulkan dan mengedit tugasnya di halaman papan terpisah. Di layar utama, pengguna melihat papannya, serta papan tempat dia diundang. Beberapa templat disediakan untuk pembuatan papan tipikal dengan cepat.





Tugas disajikan dalam bentuk kolom, yang masing-masing mencerminkan tahapan tugas yang terpisah.





Layar tugas berisi deskripsi, tag kategori, daftar periksa, komentar penjelasan, dan file lampiran.





Tugas berpindah antar kolom hanya dengan menyeret dan melepas.





Ada pemberitahuan secara real time, dengan opsi mematikan atau diam. Anda dapat mengirim tautan undangan untuk terhubung ke papan pengguna lain.





Seluruh backend ditulis dalam Go dan memiliki arsitektur layanan mikro. Layanan mikro berkomunikasi satu sama lain dalam format protobuf melalui gRPC. Aplikasi ditutupi dengan pemantauan dalam bentuk bundel Prometheus dan Grafana. Perpustakaan zap digunakan untuk logging. Penyimpanan data utama adalah PostgreSQL, penyimpanan file dan avatar adalah Amazon. Sesi disimpan di Memcache. Untuk berkomunikasi dengan frontend, router Echo, protokol HTTPS 2.0, dan serializer data EasyJSON digunakan. Kerangka kerja Gorm digunakan untuk bekerja dengan database. Aplikasi ini juga dilindungi dari serangan CSRF, XSS, SQL injection. Bagian depan ditulis dalam JavaScript murni, menggunakan pola MVC dan mesin templat Fest. Kami menggunakan webpack sebagai kolektor, memindahkannya menggunakan Babel, mendistribusikan konten statis melalui Nginx dan permintaan proxy ke backend.



Paling depan:https://github.com/frontend-park-mail-ru/2020_1_SIBIRSKAYA_KORONA



Backend: https://github.com/go-park-mail-ru/2020_1_SIBIRSKAYA_KORONA



Tim proyek: Roman Gavrilenko, Alexander Lebedev, Timofey Razumov, Anton Chetverov ...



Video dengan perlindungan proyek .



eLoyalitas



Dan proyek terakhir dalam koleksi kami adalah perancang kartu loyalitas untuk Apple Wallet. Para pria suka pergi ke kedai kopi, tetapi mereka tidak suka membawa-bawa kartu karton dengan perangko, untuk itu mereka memberikan kopi gratis. Mereka memutuskan untuk membuat kartu yang indah di Wallet sehingga setiap pemilik kedai kopi kecil dapat memahami pembuatnya, dengan kemampuan untuk membuat desain dan logika sistem loyalitas untuk sebuah kafe. Selain itu, kartu elektronik dapat mengingatkan klien ketika dia sedang berjalan di dekat kafe, memberi tahu dia tentang promosi dan mengumpulkan kontak pengunjung.











Proyek ini dibangun di atas arsitektur layanan mikro menggunakan protokol GRPC. Kata sandi di-hash. Container Docker digunakan, dan pemantauan serta peringatan didasarkan pada Prometheus dan Grafana. Orang-orang tersebut juga harus mempelajari API Apple Wallet secara mandiri - sebuah teknologi yang memungkinkan mereka mengeluarkan dan memelihara kartu elektronik untuk Apple Wallet: mengubah desain mereka, mengirim pemberitahuan, dan sebagainya.



Tim proyek: Dmitry Gulyachenkov, Alexander Averkiev, Sergey Petrenko, Dmitry Boldin.



Video dengan perlindungan proyek .






Di salah satu posting berikut, kita akan berbicara tentang proyek kelulusan dalam pengembangan C ++. Anda dapat membaca lebih lanjut tentang proyek pendidikan kami di tautan ini . Dan lebih sering masuk ke saluran Technostream , di sana secara teratur muncul video pelatihan baru tentang pemrograman, pengembangan, dan disiplin ilmu lainnya.



All Articles