Jimmylet /
Tuto_Digital_Ocean_HEPL
Un tutoriel qui regroupe le déployement d'un VPS sur le service DigitalOcean.
44/100 healthLoading repository data…
marocraft / repository
Un tutoriel qui décrit comment déployer un projet Java dans Maven Central en utilisant Travis .
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Dans cet article nous allons découvrir étape par étape comment déployer un projet java dans Maven central via Travis.
Schema:
Préparer Sonatype Nexus OSS
Générer la paire des clés public et privée
Crypter les clés
Ajouter les informations nécessaires au pom.xml
Signer les clés (pub, privé)
Configurer le fichier Setting.xml
Configurer le fichier .travis.yml et publish.sh
Lancer le déploiement
Nous allons commencer par la création d'un compte sonatype
Après nous allons créer un Jira Issue,
pour ce faire il faut fournir les information suivante:
2.1. Un résumé sur le projet
2.2. le groupe Id:
la première partie représente un nom de domaine (ex:ma.mydomaine.myprojectname) si on le possède, on doit fournir une preuve qui le justifie, si non, on peut utiliser des sous noms de domaines par example com.github.mydomaine.myprojectname
2.3. Le Project URL: c'est l'url de votre projet, par exemple: https://github.com/sonatype/nexus-oss
2.4. Le SCM url: la source de système de contrôle de votre projet, par exemple: https://github.com/sonatype/nexus-oss.git,
puis cliquer sur créer
2.5. Ensuite, il faut attendre la Issue pour qu'elle soit résolue (NB: ca peut prendre des heures)
Tout d'abord, il faut installer l'outil GNU PG.
C'est un outil qui permet de crypter et signer les données.
Vérifier l'installation avec la commande:
C:\Users\username>gpg --version
Générer la paire des clés
C:\Users\username>gpg --full-gen-key
gpg (GnuPG) 2.1.15; Copyright (C) 2016 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
L’invite de commande va vous demander de saisir et choisir les informations suivantes:
Le type de clé : RSA and RSA
La taille de la clé: 2048 bits
La durée de validité de la clé: 0 = key does not expire
Key does not expire at all Is this correct? (y/N) y
Real name: housseine
Email address: example@gmail.com
Comment: (On peut le laisser vide)
Après vous pouvez modifier ces informations:
You selected this USER-ID:
"housseine <example@gmail.com>"
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
gpg: C:/Users/username/AppData/Roaming/gnupg/trustdb.gpg: trustdb created
gpg: key 27835B8BD2A2067F marked as ultimately trusted
gpg: directory 'C:/Users/username/AppData/Roaming/gnupg/openpgp-revocs.d' created
gpg: revocation certificate stored as 'C:/Users/username/AppData/Roaming/gnupg/openpgp-revocs.d\5694AA563793429557F1727835B8BD2A2067F.rev'
public and secret key created and signed.
pub rsa2048 2016-08-29 [SC]
5694AA563793429557F1727835B8BD2A2067F
uid Nadeem Mohammad <coolmind182006@gmail.com>
sub rsa2048 2016-08-29 [E]
Une fenetre popup va s'afficher vous demande de saisir une passphrase: vous devez saisir une passphrase puissante.
Afficher La liste des clés :
gpg --list-keys
Installer OPENSSL
Pour ce faire on doit avoir l’outil openssl installé
Sur mac exécuter la commande:
brew install openssl
Sur windows Télécharger et installer l'outil à partir de ce site
Crypter la paire des clés avec openssl
openssl aes-256-cbc -pass pass: ENCRYPTION_PASSWORD -in ~/.gnupg/private-key.gpg -out private-key.gpg.enc
openssl aes-256-cbc -pass pass: ENCRYPTION_PASSWORD -in ~/.gnupg/public-key.gpg -out public-key.gpg.enc
Maintenant nous allons créer dans la racine de notre projet un dossier deploy dans lequel on va mettre la paire des clés cryptées
NB: votre version de projet peut être snapshot ou release exemple:
<version>0.0.1-SNAPSHOT</version>
la différence c'est que contrairement au version Release la version Snapshot n'est pas stable. Dans le fichier pom.xml:
Ajoutez la section SCM:
<scm>
<url>https://github.com/marocraft/trackntrace</url>
<connection>scm:git:git://github.com/marocraft/trackntrace.git</connection>
<developerConnection>scm:git:git@github.com:marocraft/trackntrace.git</developerConnection>
<tag>tnt-core-0.0.1</tag>
</scm>
Créez un profile dans lequel mettez toutes les informations relative au déploiement:
<profiles>
<profile>
<id>ossrh</id>
<activation>
<property>
<name>ossrh</name>
</property>
</activation>
</profile>
</profiles>
Dans ce profile:
ajoutez le plugin de déploiement:
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
<executions>
<execution>
<id>default-deploy</id>
<phase>deploy</phase>
<goals>
<goal>deploy</goal>
</goals>
</execution>
</executions>
</plugin>
Ajoutez le distribution management:
<distributionManagement>
<snapshotRepository>
<id>ossrh</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
<repository>
<id>ossrh</id>
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
</distributionManagement>
Ajoutez le Maven release plugin:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>${maven-release-plugin.version}</version>
<configuration>
<autoVersionSubmodules>true</autoVersionSubmodules>
<useReleaseProfile>false</useReleaseProfile>
<releaseProfiles>ossrh</releaseProfiles>
<goals>deploy</goals>
</configuration>
</plugin>
Ajoutez le Nexus staging Maven plugin:
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.8</version>
<extensions>true</extensions>
<configuration>
<serverid>ossrh</serverid>
<nexusurl>https://oss.sonatype.org/</nexusurl>
<autoreleaseafterclose>true</autoreleaseafterclose>
</configuration>
</plugin>
Ajoutez le plugin de source et javadoc
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.0.1</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<javadocExecutable>${env.JAVA_HOME}/bin/javadoc</javadocExecutable>
</configuration>
<version>2.10.4</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
Selected from shared topics, language and repository description—not editorial ratings.
Jimmylet /
Un tutoriel qui regroupe le déployement d'un VPS sur le service DigitalOcean.
44/100 healthSalomonBiate /
une application qui aide les etudiant a aprendre ou dans leurs revision une app ou quand tu upload un pdf de cours l'ia te genere automatiquement un resumer et te genere des quizz que tu repondra pour gagner des xp des poins qui s"afficherons sur un jolie dashboard en plus de sa tu peut suivres les tutoriels youtubes a l'interrieure de l'app api yt
50/100 healthJosh-right-001 /
C'est un challenge qui consiste à créer un clone de YouTube en s'inspirant d'un modèle de tutoriel vidéo en utilisant HTML, CSS, JavaScript et l'API YouTube. Ce projet met en œuvre des requêtes API externes pour récupérer et afficher des données vidéo de YouTube.
Votre paire de clés doit apparaitre parmi la liste des clés
Publier la clé:
Vous devez publier vos clés dans un ou plusieurs serveur de clés:
gpg2 --keyserver hkp://pool.sks-keyservers.net --send-keys 5694AA563793429557F1727835B8BD2A2067F
Voici quelques serveur de clés:
Exporter les clés public et privée
gpg --export-secret-keys example@gmail.com > private-key.gpg
gpg --export example@gmail.com > public-key.gpg
Ajoutez la configuration pour signer l'artifact pendant le release
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
Voir le code sur github
Dans le dossier deploy créer un fichier .maven.xml et remplissez le avec les détails du serveur ossrh et les données de GPG:
<settings>
<servers>
<server>
<id>ossrh</id>
<username>${SONATYPE_USERNAME}</username>
<password>${SONATYPE_PASSWORD}</password>
</server>
</servers>
<mirrors>
</mirrors>
<profiles>
<profile>
<id>ossrh</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<gpg.executable>${GPG_EXECUTABLE}</gpg.executable>
<gpg.passphrase>${GPG_PASSPHRASE}</gpg.passphrase>
<gpg.keyname>${GPG_KEYNAME}</gpg.keyname>
<gpg.defaultKeyring>false</gpg.defaultKeyring>
<gpg.publicKeyring>./deploy/public-key.gpg</gpg.publicKeyring>
<gpg.secretKeyring>./deploy/private-key.gpg</gpg.secretKeyring>
</properties>
</profile>
</profiles>
<activeProfiles>
<activeProfile>ossrh</activeProfile>
</activeProfiles>
</settings>
Après, dans les settings de Travis en doit ajouter les valeurs des variables d'environnement:
voir ici
attoumbre /
Des Servlets à la notion de service Web Les objectifs de ce travail pratique sont les suivants : Comprendre les mécanismes des Servlet Réaliser une application Web en utilisant Combinant JPA et les Servlet Comprendre les principes d’une architecture Rest Comprendre les bénéfices d’un framework comme Jersey Recommendations. Ce TP utilise des technologies abordées en cours d’un point de vue théorique, mais la documentation technique peut être facilement trouvée sur internet. Être autodidacte est une compétence essentielle pour tout informaticien; n'hésitez pas à chercher des tutoriels si vous êtes bloqués. Sujet L’objectif de ce projet est de continuer le développement d’une application type prise de RDV (doctolib). Organisation. Quand votre application JPA fonctionne correctement. Laissez votre base de données démarrée. Si vous avez déjà travaillez avec les servlets, n’hésitez pas à aller directement à la question 6. Partie 1 Servlet Question 1. Tout d’abord, modifiez votre fichier pom.xml. Changez le type de packaging vers un packaging de type war pour les applications webs <packaging>war</packaging> Ajoutez une dépendances à l’API des servlets <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> <scope>provided</scope> </dependency> Vous noterez le scope qui est placé à provided ce qui veut dire que cette librairie sera fournie par le conteneur d’application et ne doit pas être embarqué au sein de l’application Web. Ajoutez enfin dans les plugins de build, celui de jetty qui permet de démarrer jetty depuis maven. <plugin> <!-- https://mvnrepository.com/artifact/org.eclipse.jetty/jetty-maven-plugin --> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>9.4.31.v20200723</version> <configuration> <webApp> <contextPath>/</contextPath> </webApp> <httpConnector> <port>8080</port> </httpConnector> </configuration> </plugin> Testez votre config. Clic droit sur votre projet. run as -> maven build …-> mettre compile jetty:run dans le goal. équivalent de lancer compile jetty:run si vous utiliisez jetty dans la console. Vous pouvez stoppez jetty en cliquant sur le bouton rouge stop de la console eclipse. Question 2. Insertion de ressources statiques Créer un répertoire src/main/webapp. Ajoutez y un fichier index.html contenant Hello world. Relancez jetty. http://localhost:8080/index.html Vous devriez voir votre page web. L’ensemble des ressources statiques (html files, javascript file, images) de votre projet doivent se trouver dans le répertoire src/main/webapp Question 3. Création de votre première Servlet Créer une classe qui étend HttpServlet. Surchargez les méthodes doGet et doPost méthodes qui seront appelées lors de la réception d’un GET et d’un POST sur l’url “/myurl”. package servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet(name="mytest", urlPatterns={"/myurl"}) public class MyServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { PrintWriter p = new PrintWriter(resp.getOutputStream()); p.print("Hello world"); p.flush(); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub super.doPost(req, resp); } } Question 4. Création de votre première Servlet qui consomme les données d’un formulaire. Créer un fichier myform.html et placez y le code suivant. <html> <body> <FORM Method="POST" Action="/UserInfo"> Name : <INPUT type=”text” size=”20” name=”name”><BR> Firstname : <INPUT type=”text” size=”20” name=”firstname”><BR> Age : <INPUT type=”text” size=”2” name=”age”><BR> <INPUT type=submit value=Send> </FORM> </body> </html> Puis créer une classe Java UserInfo package servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet(name="userinfo", urlPatterns={"/UserInfo"}) public class UserInfo extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<HTML>\n<BODY>\n" + "<H1>Recapitulatif des informations</H1>\n" + "<UL>\n" + " <LI>Nom: " + request.getParameter("name") + "\n" + " <LI>Prenom: " + request.getParameter("firstname") + "\n" + " <LI>Age: " + request.getParameter("age") + "\n" + "</UL>\n" + "</BODY></HTML>"); } } Testez votre application en vous rendant ici http://localhost:8080/myform.html . Parcourez ensuite les exemples suivants. http://www.commentcamarche.net/contents/servlets-330845945 Question 5. Retour sur l’application de prise de RDV A partir de cette base, construisez une page web qui retourne des informations issus de la base de données et un formulaire qui permet d’ajouter des éléments dans la base de données. Partie 2 JaxRS et OpenAPI Question 6. En avant pour les architectures Rest. Évidemment à partir de là, nous pourrions construire une architecture Rest manuellement. Cependant, gérez toutes les routes et les format de sérialisation de données à la main est une tâche fastidieuse. Pour cela des frameworks comme Jersey et les APIs JaxRS permettent de simplifier ce travail. Vue d'ensemble de JAX-RS JAX-RS est une API récente mais déjà bien fournie : Elle propose notamment des annotations spécifiques pour lier une URI et des verbes HTTP à des méthodes d'une classe Java. JAX-RS dispose également d'annotations capables d'injecter et de récupérer des données dans les entêtes d'une réponse ou depuis celles d'une requête. De même l'API JAX-RS fournit ce qu'il faut pour extraire et écrire ce que vous voulez dans le corps d'une requête/réponse HTTP. Enfin, en cas d'exception Java, JAX-RS est capable de produire une réponse avec le code HTTP le plus pertinent. Pour simplifier l’installation d’un environnement, je vous ai fournis un exemple fonctionnel avec JaxRS, et RestEasy. RESTEasy est un projet JBoss / Red Hat qui fournit divers framework pour vous aider à construire des services Web RESTful et des applications Java RESTful. Il s'agit d'une implémentation des RESTful Web Services de Jakarta (JaxRS), une spécification de la fondation Eclipse qui fournit une API Java pour les RESTful Web Services sur le protocole HTTP. De plus, RESTEasy implémente également l'API de la spécification MicroProfile REST Client. https://github.com/barais/JaxRSOpenAPI Forker ce projet et cloner le fork pour pouvoir travailler. Vous pourrez intégrer vos classes JPA et vos DAOs facilement. Observer le code et créer un premier service Web. Tester le service implanter l’aide de votre navigateur en vous rendant sur http://localhost:8080/pet/1 Créer quelques services REST simple et tester votre couche de service avec Postman. https://chrome.google.com/webstore/detail/postman/fhbjgbiflinjbdggehcddcbncdddomop Question 7. Créez la couche de service pour votre application. Écrire des exemples de WS REST correspondant au projet type prise de rdv Examples: http://www.mkyong.com/tutorials/jax-rs-tutorials/ Vous pouvez la tester grâce à des outils comme: https://chrome.google.com/webstore/detail/postman/fhbjgbiflinjbdggehcddcbncdddomop Il faut ajouter l’extension Postman rest client sur Mozilla ou Chrome. Question 8. Comprendre openAPI. Dans le readme.md du projet ici. https://github.com/barais/JaxRSOpenAPI Je montre comment ajouter la génération automatique du descripteur d’API conforme au standard openAPI. Je montre aussi comment intégrer swaggerUI afin de fournir une documentation lisible par un humain de votre API. Nous le faisons à la main, dans les comme SpringBoot, des modules particulier permettent d’automatiser ce travail. Bon TP Olivier et Adrien
29/100 healthLeoPaulD /
Cartable est un projet open source que vous pouvez récupérer pour vous en servir et créer une application personnalisée qui correspond à vos centres d'intérêt ou pour l'enrichir et faire évoluer cette plateforme.
18/100 healthziza595 /
Dans ce tutoriel, je partage les bases nécessaire pour maitriser le framework Python Flask qui permet de créer des sites web dynamiques et autres. Le but est de créer un simple blog multi utilisateurs pour leur permettre de poster des articles.
30/100 health