vendredi 25 décembre 2015

Kde 5 vs Windows 10

Nous allons comparer l'environnement de bureau Kde 5 et celui de Windows 10.  Les deux ont optés pour un bureau sobre et léger.

Menu

Le menu de Windows ajoute des tuiles. Sous Kde, le groupement d'application se fait toujours via les catégories. Il y a cependant d'autre alternative de disponible.




Calculatrice





Configuration





Explorateur de fichier




Bureau

Le bureau est configurable à souhait via des composants graphiques (widtgets). Les activités sont toujours de la partie sans compté les bureaux virtuels.





Navigateur internet

Certaine distribution utilise Rekonq au lieu de Konqueror, malgré qu'il ne fasse pas partie du Kde Application officiellement.




Ressource système




Les deux environnements ont épuré leur environnement graphique. Les bureaux virtuels sont enfin accessibles sous Windows en natif. Un magasin d'application similaire au package logiciel est disponible. Cependant la musique y est ajouté.

jeudi 8 octobre 2015

Spring Rest et le jeton CSRF

Nous allons voir comment utiliser des jetons CSRF dans une application REST avec spring.
Dans ce type d'application, il n'y a pas de formulaire pour entrer un nom d'utilisateur et un mot de passe.

Lors de votre connexion au serveur, il est possible d'obtenir le jeton CSRF au lieu de faire une requête au serveur.

    var req = new XMLHttpRequest();
    req.open('GET', document.location, false);
    req.send(null);
    var csrf = req.getResponseHeader("x-csrf-token")

    var cookie = JSON.stringify({method: 'GET', url: '/', csrf: csrf});
    $.cookie('myWebApp', cookie);

Ensuite pour la connexion

    var cookie = JSON.parse($.cookie('myWebApp'));
    var data = 'username=' + $('#username').val() + '&password=' + $('#password').val();
    $.ajax({
        data: data,
        headers: {'X-CSRF-TOKEN': cookie.csrf},
        timeout: 1000,
        type: 'POST',
        url: '/login',
    }).done(function (data, textStatus, jqXHR) {
        var csrf = jqXHR.getResponseHeader("x-csrf-token")
        var cookie = JSON.stringify({method: 'GET', url: '/', csrf: csrf});
        $.cookie('chezlise', cookie);
        window.location = "main.html";
    })

A chaque requête vous devez vérifier si le jeton a changé et l'affecter à votre cookie au besoin.

Mis à part les requêtes de type GET, il faudra insérer le jeton dans vos requête ajax.

Au niveau du serveur, il faut créer une classe héritant de WebSecurityConfigurerAdapter

 @Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
public class ServerApplicationSecurity extends WebSecurityConfigurerAdapter {

    @Autowired
    private RESTAuthenticationEntryPoint authenticationEntryPoint;

    @Autowired
    private RESTAuthenticationFailureHandler authenticationFailureHandler;

    @Autowired
    private RESTAuthenticationSuccessHandler authenticationSuccessHandler;

    @Autowired
    private UserServiceImpl userDetailsService;

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userDetailsService);
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().antMatchers("/rest/**").authenticated();
        //http.csrf().disable();
        http.exceptionHandling().authenticationEntryPoint(authenticationEntryPoint);
        http.formLogin().successHandler(authenticationSuccessHandler);
        http.formLogin().failureHandler(authenticationFailureHandler);
        http.logout().logoutUrl("/logout");
        http.logout().logoutSuccessUrl("/");
        
        // CSRF tokens handling
        http.addFilterAfter(new CsrfTokenResponseHeaderBindingFilter(), CsrfFilter.class);

    }
}

https://github.com/aditzel/spring-security-csrf-filter/blob/master/src/main/java/com/allanditzel/springframework/security/web/csrf/CsrfTokenResponseHeaderBindingFilter.java

Ensuite dans la classe de l'application

@EntityScan(basePackageClasses = {ServerApplication.class, Jsr310JpaConverters.class})
@SpringBootApplication
public class ServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ServerApplication.class, args);
    }

    @Bean
    public WebSecurityConfigurerAdapter webSecurityConfigurerAdapter() {
        return new ServerApplicationSecurity();
    }

}

jeudi 1 octobre 2015

Mapping d'une date d'anniversaire en JPA.

La version 2.1 de JPA et la version 5 de MySQL ont été utilisé.

Une date d'anniversaire s'affiche sous le format: dd/MM/yyyy. Ce format varie d'une région à une autre. Une telle date ne possède pas d'heure.

Si vous ne spécifiez par le bon type dans votre entité, vos risques de ne pas obtenir le format désiré à l'affichage.

L'annotation Temporal offre 3 valeurs: Date, Time et Timestamp. Le time est inutile pour un anniversaire.

Selon l'annotation, voici le type de donnée et le type en bd..
@Temporal(javax.persistence.TemporalType.DATE)
Data type date
DB data type date

@Temporal(javax.persistence.TemporalType.TIMESTAMP)
Data type timestamp
DB data type datetime

Si vous n'en spécifiez aucun, vous obtiendrez ceux de TemporalType.TIMESTAMP.


@Entity
public class personne{
  @Temporal(javax.persistence.TemporalType.TIMESTAMP)
  private Date anniversaire;
  ...
}

Au niveau de votre DTO, vous devez spécifiez le format.

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd/MM/yyyy")
private Date birthdate;

La valeur qui sera transféré sera

"anniversaire":"17/06/1980" au lieu

"anniversaire":"1980-06-17"

Si vous utiliser l'annotation DateTimeFormat de spring

@DateTimeFormat(pattern = "dd/MM/yyyy") dans votre DTO, vous allez obtenir une valeur numérique similaire à  14360400000.       

Commande Mysql utile

Importer un script sql

mysql -p
use databasename
source nom_script.sql


Export du schéma de base de donnée


mysqldump -u root -p --no-data dbname > schema.sql
mysqldump -u root -p -d databasename > database.sql


Créer un utilisateur

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

Octroie des privilèges sur tout
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';

Active les privilèges immédiatement
FLUSH PRIVILEGES;

mercredi 29 avril 2015

Comment lister les codes UUID de vos disques dur

Afin de connaitre le code UUID de vos disques dur, partition, lancez la commande

ls -ls /dev/disk/by-uuid

dans une console.

sur ma machine, j'obtiens

0 lrwxrwxrwx 1 root root 10 17 avril 21:07 0ED60A2CD60A149D -> ../../sdb1 0 lrwxrwxrwx 1 root root 10 17 avril 21:07 2460f37e-58c2-4df9-af83-7d02bfd7f67d -> ../../sda3 0 lrwxrwxrwx 1 root root 10 17 avril 21:07 2561-9FFF -> ../../sda1 0 lrwxrwxrwx 1 root root 10 17 avril 21:07 3a5fc0b7-18de-4e79-a012-86837760c74f -> ../../dm-2 0 lrwxrwxrwx 1 root root 10 17 avril 21:07 4e13ad72-3403-4f23-a663-338b66ce3039 -> ../../dm-1 0 lrwxrwxrwx 1 root root 10 17 avril 21:07 8fa0251f-fdd4-459e-8763-846a8287db89 -> ../../sdc5 0 lrwxrwxrwx 1 root root 10 17 avril 21:07 8fb12a3b-d838-438f-b7bc-7590c8e8e622 -> ../../sda2 0 lrwxrwxrwx 1 root root 10 17 avril 21:07 D20A-DC9B -> ../../sdb2 0 lrwxrwxrwx 1 root root 10 17 avril 21:07 DC0C10790C10513E -> ../../sdb4 0 lrwxrwxrwx 1 root root 10 17 avril 21:07 e6a16d0c-2ed4-4584-8a34-ce36a7a679b9 -> ../../sdb5 0 lrwxrwxrwx 1 root root 10 17 avril 21:07 f734f428-5909-48a1-9423-64bdf82a6175 -> ../../dm-3

mardi 17 mars 2015

Kde 4.14 vs Windows 8.1

Nous allons comparer l'environnement de bureau Kde 4.14 et celui de Windows 8.1. Peu de différence subsiste entre Windows 8 et Windows 8.1. Cependant, Microsoft à complètement remanié l'expérience utilisateur depuis Windows 7.


Tableau de bord (barre des tâches)



Menu








Boîte de dialogue







Centre de configuration





Explorateur de fichier





Gérer les tâches









Recherche de fichier





Similarité des programmes











Personnalisation de l'interface











Bureau












Kde a opté pour une amélioration progressive de son environnement graphique alors que Microsoft a opté pour une refonte complète de leur interface.


mercredi 17 septembre 2014

Utilisation d'un Sherwood Wisdom 2 sous Linux avec Subsurface

Il existe de nombreux ordinateurs de plongées sur le marché. Le logiciel qui est fourni est souvent limité et rarement mis à jour.

Subsurface est un logiciel de plongée disponible sous les trois principaux systèmes d'exploitation de bureau.

Ce logiciel sera utilisé avec un ordinateur de plongée Sherwood Wisdom 2 (modèle avec un bouton de couleur argent). Le support de cet ordinateur par subsurface a été un critère crucial pour son achat.

 Installation et configuration de subsurface

Installer une version de subsurface, préféré une version récente si vous pouvez.

Brancher l'ordinateur de plongée à votre ordinateur. L'ordinateur de plongée vous indiquera que vous avez 120 secondes pour effectuer un import.

Une fois branché tapez dans un terminale: lsusb
vous devriez obtenir une ligne similaire à celle-ci.
Bus 003 Device 003: ID 0403:f460 Future Technology Devices International, Ltd 

Vérifier dans le fichier /var/log/messages le point d'accès du périphérique. Le mien a retourné

linux-rnkx kernel: [  697.131203] usb 3-3: FTDI USB Serial Device converter now attached to ttyUSB0


Démarrez subsurface, cliquer Import et ensuite Import from dive computer.

Spécifié le port usb, la valeur pour le mien est
/dev/ttyUSB0

Spécifier la marque et le modèle de l'ordinateur ainsi que le point d'accès du périphérique.


Les données sont exportés dans un format xml.

L'import des données a pris plus de 30 minutes pour seulement 6 plongées.
Une future version devrait corriger ce temps inaproprié.

Fonctionnalités de subsurface

Le logiciel affiche de nombreuse données de la plongée le tout à l'aide de graphique très intuitif.
Il est possible d'ajouter des commentaires sur la plongée ainsi que l'équipement qui a été utilisé.
Il est aussi possible d'inscrire manuellement des plongées.
C'est un logiciel plus complet que le logiciel d'origine de Sherwood.

Migration d’une application Spring Boot 2.2 vers Spring Boot 4.0 : retour d’expérience concret

 En 2019, nous avons développé une application métier basée sur : Java 8 Spring Boot 2.2.7 Gradle 6.6.1 Thymeleaf Boots...