logo mona

Rapport IFT3150

Miliya Ai

À propos

C'est un projet de développement d'une application mobile par l'organisme MONA , viser à découvrir, photographier et conllectionner de l'art public

J'ai rejoint l'équipe de développement du serveur MONA dans le cadre du cours projet IFT3150 hiver 2023

Rapport Hebdomaire

Semaine 1 (Jan 11- Jan 18)

Ma première rencontre avec l'équipe MONA a commencé avec Lena, elle m'a raconté l'histoire et le développement de ce projet. Après cela, j'en ai appris davantage grâce à des vidéos sur YouTube et en téléchargeant l'application sur mon mobile. Dans une série d'actions de fouille, ouvrir la carte de l'application, localiser, trouver une œuvre d'art, prendre une photo, enregistrer et récupérer des médailles. C'est vraiment une app très très cool.

Ce qui est également cool, c'est que notre équipe est également très bien organisée. La communication de groupe via Element peut améliorer l'efficacité du travail. Le cadre de code complet et clair sur Github me permet de démarrer très rapidement le travail de développement.

Tout d'abord, ma tâche principale est de réajuster la structure du site des rapports. Par exemple, certains collègues mettent leurs rapports sur github. Ce que je dois faire, c'est les unifier sur la domaine picasso.iro.umontreal.ca . Je dois aussi améliorer l'organisation et la fonctionnalité d'interface de l'admin dans la future et à mesure.

Semaine 2 (Jan 18- Jan 25)

Pour cette semaine, j'ai commencé à toucher les codes. Tout d'abord, j'ai créé cette page HTML pour enregistrer mes propres rapports hebdomaires. Et j'ai fais la réunion comme d'habitude, mais cette semaine, j'ai rencontré avec Lena, Simon et Kim. Un grand merci à eux pour me donner une présentation assez détaillés.

Voici une petite résumé et l'image ci-dessous(à compléter)

resume

Avec l'aide de Lena et Simon, ma prochaine étape consistait à avoir un accès via protocole SSH au serveur de production MONA.(Voir le tutorial )

Ce lundi 22 Jan, j'ai rencontré avec Simon par Jitsi, merci à Simon encore une fois. Il a été très patient et méticuleux en m'aidant tout au long du processus d'installation.(à faire: ranger un tutorial pour ça)

Ensuite, je migrerai certains rapports discordants des années précédentes, ainsi que minimiserai et éviter d'utiliser des dépendances

Semaine 3 (Jan 25- Feb 1)

J'ai installer un environnement de développement local à l'aide de Simon Janssen

Cliquez ici pour découvrir les détails pour Installation

Pour IDE, j'ai choisi PhpStorm, car les projets Laravel sont largement soutenus par les fonctionnalités PhpStorm telles quelles.

Semaine 4 (Feb 1- Feb 8)

Cette semaine, on a réalisé un board Miro pour mieux illustrer la structure de notre côté serveur

En même temps, on veut transférer les données ouverts au local csv, ce qui besoins double stocker et documenter seulement sur la coté du serveur. Donc on a pris du temps pour gérer les documentation également.

Voici j'ai exploré admin, et documenté les bogues, fonctionnalités.

  1. Tri
      Une fois que vous cliquez sur trier, le contenu de la liste correspondante disparaîtra.
  2. Détail
      On n'arrive pas voir les détails des artises
      On n'arrive pas voir les détails des oeuvres
  3. edit
      on n'arrive pas editer les information pour utilisateur
    user
  4. Filtrer
      Dans l'onglet d'artists, les filtres marchent pas
  5. modification
      BD mona faut garder une sorte de historique/versionement,on ne peut pas modier ou delete les users

Semaine 5 (Feb 9- Feb 16)

Cette semaine, j'ai rencontré beaucoup de questions sur le contrôle de version de Git. Tout d’abord, j’ai perdu la connexion à github.com/MaisonMONA. J’ai essayé de me reconnecter plusieurs fois, mais je n’arrive toujours pas, finalement, j'ai réussi en générant avec github personal access token.

gitconnect

Ensuite, j'ai reglé un problème avec le git reset à l'aide de Simon Janssen et un article de blogue J'ai appris beaucoup de choses sur le contrôle de version de Git.

    Les bogues faut fixier pour l'instant:
  1. Comment sont documenté les edits (tests vs corrections réelles)
      implémenter une fonction auxiliaire update pour documenter les modifications, allez PlaceController pour voir les détails
  2. User
    • Lorsque nous cliquons sur le bouton "Voir l'utilisateur en détail", nous verrons un boutons "edit" et "delete", mais en fait, nous n'avons pas le droit de modifier les informations de l'utilisateur, cela doit donc être corrigé. Faudrait corriger dans UserController
    • On n'a pas de droit de supprimer user non plus ?
    • Lorsque nous cliquons sur le bouton "Afficher les détails", nous verrons une liste de photos prises par l'utilisateur. Cependant, si ces listes de photos sont placées dans le url ../users , cela réduira considérablement la lisibilité et l'efficacité d'utilisation de l'interface. Je suggère donc de le placer dans ../users/{..} , qui est l'interface après avoir cliqué sur le bouton "Voir l'utilisateur en détail".
                                  Méthode de modification: enleve Route dans web.php
                                  Route::get('users/{user}', [UserController::class, 'show'] )->name('user.show');
                              
  3. artworks
    • bouton «Voir en détail l'oeuvre» parfois marche, parfois ne marche pas ArtworkGrid
  4. places
    • Les formats ne sont pas unifiés, parfois on a description, parfois on n'a pas. Par example, Bibliothèque Saul-Bellow et Bibliothèque de Notre-Dame-de-Grâce
    • delet et edit marche pas PlaceController , les méthodes ne sont pas implémenter
    • tag
                                  
                                      Route::get('addTagPhoto', [TagPhotoController::class, 'show']);
                                      Route::get('addTagDiscovery', [TagDiscoveryController::class, 'show']);
      
                                      Route::put('form-store-preexisting-tag', [TagPhotoController::class, 'storePreexistingTag']);
                                      Route::put('form-store-new-tag', [TagPhotoController::class, 'storeNewTag']);
      
                                      Route::put('form-store-preexisting-tag-discovery', [TagDiscoveryController::class, 'storePreexistingTag']);
                                      Route::put('form-store-new-tag-discovery', [TagDiscoveryController::class, 'storeNewTag']);
                                  
                              
      Je crois comprendre que bag s'applique à identifier photo et discovery autre que les catégories. TagPhotoController , TagDiscoveryController De plus, je pense que si nous avons vraiment besoin de données telles que des balises, alors nous ajouterons une colonne supplémentaire (en plus du titre, de la note, du territoire, etc.) au tableau pour l'afficher.
  5. artists
    • pour l'artists, il n'y rien de données dedans, on laisse comme ça ou on insère des donnée? ArtistGrid
  6. heritages
    • create Heritage marche pas, parce qu'il n'y a pas fonction pour l'implémenter dans web.php Route::get('heritages/create', [HeritageController::class, 'create']);
    • edit et delete ne fonctionne pas non plus, le problème avec les tags revient
  7. Concernant l'ajustement, j'ai jeté un œil à AdjustmentController et j'ai découvert qu'il ne s'agissait que d'un modèle de contrôleur dans Laravel. Donc je suppose les développeurs backend de l'époque voulaient laisser un template vide pour développer d'autres modèles, tels que index() pour obtenir toutes les données du modèle « ajustement » dans la base de données sont converties en JSON puis transmises à la vue de admin.adjustments.index pour afficher les données dans la liste, mais évidemment, nous n'avons pas de modèle « ajustement » dans bd.
  8. Delection, pour le bouton Restore, marche pas efficetivement, car rien implémenter dessus dans DeletionGrid Restore
  9. Dossier rapport, tous les choses statiques ne marche pas,ça peut être relié au permissions du système de fichier

Perdu la connection logger

            ./vendor/bin/sail artisan migrate
            
                laravel.test-1  | 2024-02-15 03:22:04,954 INFO spawned: 'php' with pid 15
                selenium-1      | 03:22:05.093 INFO [LoggingOptions.configureLogEncoding] - Using the system default encoding
                selenium-1      | 03:22:05.114 INFO [OpenTelemetryTracer.createTracer] - Using OpenTelemetry for tracing
                selenium-1      | 03:22:05.816 INFO [NodeOptions.getSessionFactories] - Detected 8 available processors
                selenium-1      | 03:22:05.901 INFO [NodeOptions.report] - Adding chrome for {"browserName": "chrome","browserVersion": "120.0","goog:chromeOptions": {"binary": "\u002fusr\u002fbin\u002fgoogle-chrome"},"platformName": "linux","se:noVncPort": 7900,"se:vncEnabled": true} 1 times
                selenium-1      | 03:22:05.933 INFO [Node.] - Binding additional locator mechanisms: relative
                laravel.test-1  | 2024-02-15 03:22:05,957 INFO success: php entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
                selenium-1      | 03:22:05.972 INFO [GridModel.setAvailability] - Switching Node 338f38f7-1df6-4736-8f13-4bc842c79722 (uri: http://172.20.0.2:4444) from DOWN to UP
                selenium-1      | 03:22:05.973 INFO [LocalDistributor.add] - Added node 338f38f7-1df6-4736-8f13-4bc842c79722 at http://172.20.0.2:4444. Health check every 120s
                laravel.test-1  | PHP Deprecated:  Using ${var} in strings is deprecated, use {$var} instead in /var/www/html/app/Console/Commands/RestoreDatabase.php on line 50
                laravel.test-1  | PHP Deprecated:  Using ${var} in strings is deprecated, use {$var} instead in /var/www/html/app/Console/Commands/RestoreDatabase.php on line 50
                laravel.test-1  | PHP Deprecated:  Using ${var} in strings is deprecated, use {$var} instead in /var/www/html/app/Console/Commands/RestoreDatabase.php on line 50
                laravel.test-1  | PHP Deprecated:  Using ${var} in strings is deprecated, use {$var} instead in /var/www/html/app/Console/Commands/RestoreDatabase.php on line 53
                laravel.test-1  | PHP Deprecated:  Using ${var} in strings is deprecated, use {$var} instead in /var/www/html/app/Console/Commands/RestoreDatabase.php on line 53
                laravel.test-1  | PHP Deprecated:  Using ${var} in strings is deprecated, use {$var} instead in /var/www/html/app/Console/Commands/RestoreDatabase.php on line 74
                laravel.test-1  | PHP Deprecated:  Using ${var} in strings is deprecated, use {$var} instead in /var/www/html/app/Console/Commands/RestoreDatabase.php on line 74
                laravel.test-1  | PHP Deprecated:  Using ${var} in strings is deprecated, use {$var} instead in /var/www/html/app/Console/Commands/RestoreDatabase.php on line 75
                laravel.test-1  | PHP Deprecated:  Using ${var} in strings is deprecated, use {$var} instead in /var/www/html/app/Console/Commands/RestoreDatabase.php on line 75
                laravel.test-1  | PHP Deprecated:  Using ${var} in strings is deprecated, use {$var} instead in /var/www/html/app/Console/Commands/MySqlDump.php on line 45
                laravel.test-1  | PHP Deprecated:  Using ${var} in strings is deprecated, use {$var} instead in /var/www/html/app/Console/Commands/MySqlDump.php on line 45
                laravel.test-1  | PHP Deprecated:  Using ${var} in strings is deprecated, use {$var} instead in /var/www/html/app/Console/Commands/MySqlDump.php on line 45
                selenium-1      | 03:22:06.154 INFO [Standalone.execute] - Started Selenium Standalone 4.16.1 (revision 9b4c83354e): http://172.20.0.2:4444
                laravel.test-1  | Starting Laravel development server: http://0.0.0.0:80
                laravel.test-1  | [Thu Feb 15 03:22:06 2024] PHP 8.3.2-1+ubuntu22.04.1+deb.sury.org+1 Development Server (http://0.0.0.0:80) started
                laravel.test-1  | [Thu Feb 15 03:22:10 2024] 192.168.65.1:17008 Accepted
                laravel.test-1  | [Thu Feb 15 03:22:11 2024] 192.168.65.1:17008 Closing
                laravel.test-1  | [Thu Feb 15 03:22:11 2024] 192.168.65.1:17009 Accepted
                laravel.test-1  | [Thu Feb 15 03:22:11 2024] 192.168.65.1:17010 Accepted
                laravel.test-1  | [Thu Feb 15 03:22:11 2024] 192.168.65.1:17009 Closing
                laravel.test-1  | [Thu Feb 15 03:22:11 2024] 192.168.65.1:17011 Accepted
                laravel.test-1  | [Thu Feb 15 03:22:11 2024] 192.168.65.1:17010 Closing
                laravel.test-1  | [Thu Feb 15 03:22:11 2024] 192.168.65.1:17011 [200]: GET /js/app.js
                laravel.test-1  | [Thu Feb 15 03:22:11 2024] 192.168.65.1:17012 Accepted
                laravel.test-1  | [Thu Feb 15 03:22:11 2024] 192.168.65.1:17012 [200]: GET /css/app.css
                laravel.test-1  | [Thu Feb 15 03:22:11 2024] 192.168.65.1:17012 Closing
                laravel.test-1  | [Thu Feb 15 03:22:11 2024] 192.168.65.1:17011 Closing
                laravel.test-1  | [Thu Feb 15 03:22:12 2024] 192.168.65.1:17013 Accepted
                laravel.test-1  | [Thu Feb 15 03:22:12 2024] 192.168.65.1:17013 [200]: GET /favicon.ico
                laravel.test-1  | [Thu Feb 15 03:22:12 2024] 192.168.65.1:17013 Closing
                laravel.test-1  | [Thu Feb 15 03:22:24 2024] 192.168.65.1:17014 Accepted
                laravel.test-1  | [Thu Feb 15 03:22:25 2024] 192.168.65.1:17014 Closing
                laravel.test-1  | [Thu Feb 15 03:22:25 2024] 192.168.65.1:17015 Accepted
                laravel.test-1  | [Thu Feb 15 03:22:25 2024] 192.168.65.1:17015 Closing
                laravel.test-1  | [Thu Feb 15 03:22:25 2024] 192.168.65.1:17016 Accepted
                laravel.test-1  | [Thu Feb 15 03:22:25 2024] 192.168.65.1:17016 [200]: GET /js/app.js
                laravel.test-1  | [Thu Feb 15 03:22:25 2024] 192.168.65.1:17017 Accepted
                laravel.test-1  | [Thu Feb 15 03:22:25 2024] 192.168.65.1:17017 [200]: GET /css/app.css
                laravel.test-1  | [Thu Feb 15 03:22:25 2024] 192.168.65.1:17017 Closing
                laravel.test-1  | [Thu Feb 15 03:22:25 2024] 192.168.65.1:17016 Closing
                laravel.test-1  | [Thu Feb 15 03:22:25 2024] 192.168.65.1:17018 Accepted
                laravel.test-1  | [Thu Feb 15 03:22:25 2024] 192.168.65.1:17018 [200]: GET /favicon.ico
                laravel.test-1  | [Thu Feb 15 03:22:25 2024] 192.168.65.1:17018 Closing
                meilisearch-1   | [2024-02-15T03:22:33Z INFO  actix_web::middleware::logger] 127.0.0.1 "GET /health HTTP/1.1" 200 22 "-" "Wget" 0.000791
                meilisearch-1   | [2024-02-15T03:23:03Z INFO  actix_web::middleware::logger] 127.0.0.1 "GET /health HTTP/1.1" 200 22 "-" "Wget" 0.000217
                meilisearch-1   | [2024-02-15T03:23:33Z INFO  actix_web::middleware::logger] 127.0.0.1 "GET /health HTTP/1.1" 200 22 "-" "Wget" 0.000256
                laravel.test-1  | [Thu Feb 15 03:23:35 2024] 192.168.65.1:17049 Accepted
                laravel.test-1  | [Thu Feb 15 03:23:35 2024] 192.168.65.1:17049 Closing
                laravel.test-1  | [Thu Feb 15 03:23:35 2024] 192.168.65.1:17050 Accepted
                laravel.test-1  | [Thu Feb 15 03:23:35 2024] 192.168.65.1:17050 [200]: GET /js/app.js
                laravel.test-1  | [Thu Feb 15 03:23:35 2024] 192.168.65.1:17051 Accepted
                laravel.test-1  | [Thu Feb 15 03:23:35 2024] 192.168.65.1:17051 [200]: GET /css/app.css
                laravel.test-1  | [Thu Feb 15 03:23:35 2024] 192.168.65.1:17051 Closing
                laravel.test-1  | [Thu Feb 15 03:23:35 2024] 192.168.65.1:17050 Closing
                laravel.test-1  | [Thu Feb 15 03:23:36 2024] 192.168.65.1:17052 Accepted
                laravel.test-1  | [Thu Feb 15 03:23:36 2024] 192.168.65.1:17052 [200]: GET /favicon.ico
                laravel.test-1  | [Thu Feb 15 03:23:36 2024] 192.168.65.1:17052 Closing
                laravel.test-1  | [Thu Feb 15 03:23:46 2024] 192.168.65.1:17053 Accepted
                laravel.test-1  | [Thu Feb 15 03:23:46 2024] 192.168.65.1:17053 Closing
                laravel.test-1  | [Thu Feb 15 03:23:46 2024] 192.168.65.1:17054 Accepted
                laravel.test-1  | [Thu Feb 15 03:23:46 2024] 192.168.65.1:17054 Closing
                laravel.test-1  | [Thu Feb 15 03:23:46 2024] 192.168.65.1:17055 Accepted
                laravel.test-1  | [Thu Feb 15 03:23:46 2024] 192.168.65.1:17055 [200]: GET /js/app.js
                laravel.test-1  | [Thu Feb 15 03:23:46 2024] 192.168.65.1:17056 Accepted
                laravel.test-1  | [Thu Feb 15 03:23:46 2024] 192.168.65.1:17056 [200]: GET /css/app.css
                laravel.test-1  | [Thu Feb 15 03:23:46 2024] 192.168.65.1:17056 Closing
                laravel.test-1  | [Thu Feb 15 03:23:46 2024] 192.168.65.1:17055 Closing
                laravel.test-1  | [Thu Feb 15 03:23:46 2024] 192.168.65.1:17057 Accepted
                laravel.test-1  | [Thu Feb 15 03:23:46 2024] 192.168.65.1:17057 [200]: GET /favicon.ico
                laravel.test-1  | [Thu Feb 15 03:23:46 2024] 192.168.65.1:17057 Closing
                meilisearch-1   | [2024-02-15T03:24:03Z INFO  actix_web::middleware::logger] 127.0.0.1 "GET /health HTTP/1.1" 200 22 "-" "Wget" 0.000524
            
        

Semaine 6 (Feb 17- Feb 24)

Je n'ai pas fait une grande chose cette semaine, car j'ai deux examens à reviser. Cette semaine, j'ai donc réécrit la sémantique ambiguë du rapport de la semaine dernière, j'ai continué à essayer de corriger le bug et j'ai essayé de pouvoir utiliser des fichiers statiques et log in l'interface admin dans localhost en utilisant ./vendor/bin/sail up --build ,

Tutorial

SSH(à l'aide de Simon Janssen, copyright réservé par le courriel de Simon aussi)

Générer une paire de clés ssh privé/publique avec la commande (ici ed25519 est id_mona)

            
                ssh-keygen -t ed25519
            
        

example:

            
                miliya.ai@miliyaaidemac ~ % ssh-keygen -t ed25519
                Generating public/private ed25519 key pair.
            
        

Ensuite, il va demander de stocker dans quel dossier et en mettant

            
                ~/.ssh/id_mona
            
        

example:

            
                Enter file in which to save the key (/Users/miliya.ai/.ssh/id_ed25519):
                Enter passphrase (empty for no passphrase):
                Enter same passphrase again:
                Your identification has been saved in /Users/miliya.ai/.ssh/id_ed25519
                Your public key has been saved in /Users/miliya.ai/.ssh/id_ed25519.pub
            
            Pas très important après...

Finalement, Envoyer le clé publique,le contenu du fichier (~/.ssh/id_mona.pub) et demander à Raouf (bencherr bencherr@iro.umontreal.ca) avec l'appui de Lena

            
            Host arcade
                Hostname arcade.iro.umontreal.ca
                User {ton-username-du-DIRO} (https://support.iro.umontreal.ca/mdp/)
            Host picasso
                HostName picasso
                ProxyJump arcade
                User mona
                IdentityFile ~/.ssh/id_mona
        
            ex:
            
                Host arcade
                    HostName arcade.iro.umontreal.ca
                    User aimiliya
                Host picasso
                    Hostname picasso
                    ProxyJump arcade
                    User mona
                    IdentityFile ~/.ssh/ed25519
        

Installation

Tout d’abord, afin de mieux utiliser Laravel, le framework de développement web PHP, nous utiliserons Laravel Sail , une interface légère en ligne de commande qui interagit avec l’environnement de développement Docker.

Bien sûr, vérifier si on a bien installé Docker en utilisant

            docker-compose --version 
            Ça l'aire bon si ça affiche comme:
            Docker Compose version v2.17.3
        

Téléchargez et exécutez maintenant la commande du script via curl et exécutez le script avec l'interpréteur Bash.

            curl -s " https://laravel.build/mona-server?with=mariadb,redis,meilisearch,selenium" | bash
        Clonner le dépôt github
            git clone git@github.com:MaisonMONA/mona-server.git
        Tourner au ton compt github maintnant, dans le voletSSH and GPG keys, ajouter ton SSH keys
        

Installez le package laravel/sail dans le projet Laravel Sail et marquez-le comme package de dépendances pour l'environnement de développement.

            ./vendor/bin/sail composer require laravel/sail --dev 
        

Utilisez Composer pour installer le package laravel/sanctum dans le projet Laravel Sail afin d'utiliser l'authentification Sanctum dans le projet

            ./vendor/bin/sail composer require laravel/sanctum
        

Ça devrait bon maintenant, Let's gogogogo

1. ./vendor/bin/sail up : Cette commande est utilisée pour démarrer l'environnement Sail. Il démarrera tous les services définis dans le projet (tels que les serveurs Web, les bases de données, etc.) et les laissera s'exécuter dans des conteneurs Docker. Habituellement, l'exécution de cette commande affichera la sortie du journal du service dans la fenêtre actuelle du terminal, ce qui facilitera la visualisation de l'état d'exécution du service.

2. ./vendor/bin/sail up -d : Cette commande est similaire à la commande précédente, mais utilise l'option `-d`, qui signifie « détaché » (mode détaché). Cela entraînera le démarrage de l'environnement Sail en arrière-plan et la sortie du journal du service ne sera pas affichée dans la fenêtre du terminal actuel. Cela maintient la fenêtre du terminal disponible et non occupée par la sortie du journal du service.

3. ./vendor/bin/sail down : Cette commande est utilisée pour arrêter l'environnement Sail. L'exécution de cette commande arrêtera tous les services définis dans le projet et supprimera les conteneurs Docker associés. Cela peut être utilisé pour libérer des ressources lorsque le service n'est plus nécessaire pour s'exécuter, ou pour nettoyer lorsque l'environnement doit être redémarré.