Yosko.net

Keep Calm and Rock On.

25 résultats pour les tags coding x

The Composition Over Inheritance Principle - Liens en vrac de sebsauvage

08/05/2020 10:33 (source - permalien)

Je rebondis tardivement : l'article parlant de POO et de Design Pattern, je ne peux m'empêcher un petit commentaire. :)

En fait, la POO (Programmation Orientée Objet), c'est avant tout des grands concepts (même si on a vite tendance à réduire ça juste aux notions de classes et d'héritage parce qu'on a tous appris ça sur le tas).

Du coup, ça se résume souvent aux concepts suivants :
- Les 5 principes de la POO (SOLID : https://fr.wikipedia.org/wiki/SOLID_(informatique)), qui représente les règles à respecter
- Les outils de la POO qui permettent la mise en euvre de ces principes (abstraction, encapsulation, héritage, interfaces, polymorphisme), qui sont souvent mal compris (ou en tout cas pas approfondis). Quelques explications ici : https://hdd34.developpez.com/cours/artpoo/#L1.3

L'étape supérieure de l'approche objet, ce sont les patrons de conception (Design Pattern), et là, y'a le célèbre Gang of Four. C'est un groupe de 4 auteurs qui a théorisé ça et sorti une liste de patrons de conception qui fait toujours référence aujourd'hui : https://fr.wikibooks.org/wiki/Patrons_de_conception/Patrons_du_%C2%AB_Gang_of_Four_%C2%BB

On les met souvent en oeuvre sans le savoir, et sans forcément maitriser tous les tenants et aboutissants.

Honnêtement, je pense que tout développeur gagnerait à connaitre et comprendre les principes SOLID et les Design Pattern du Gang of Four.

ubuntu2004 [Wiki de sebsauvage.net]

08/05/2020 10:22 (source - permalien)

Merci Seb pour ces infos. je découvre 2-3 choses.

Une remarque : pour moi, youtube-dl était déjà dans les dépôts, je crois.

J'en profite pour vous partager mon script d'installation à lancer après une install "fresh" de Ubuntu. Certaines parties sont à faire à la main (surtout celles commentées vers la fin). Ca permet de faciliter l'idée de faire une fresh install plutôt qu'un upgrade lorsqu'une nouvelle version d'Ubuntu sort.

Voici le script :

```
#!/bin/bash

# Mises à jour de base
sudo apt update
sudo apt upgrade -y
sudo apt dist-upgrade -y

# Logiciels à supprimer
sudo apt purge -y aisleriot
sudo apt purge -y apport
sudo apt purge -y deja-dup
sudo apt purge -y mahjongg
sudo apt purge -y rhythmbox
sudo apt purge -y sudoku
sudo apt purge -y totem totem-plugins
sudo apt purge -y ubuntu-web-launchers
sudo apt purge -y whoopsie


# Nettoyage
sudo apt autoremove -y

# Logiciels principaux
sudo apt install -y cheese
sudo apt install -y chromium-browser
sudo apt install -y darktable
sudo apt install -y ffmpeg
sudo apt install -y gimp gimp-data-extras gimp-plugin-registry gimp-texturize
sudo apt install -y pdftk
sudo apt install -y mplayer
sudo apt install -y printer-driver-*
sudo apt install -y p7zip-full
sudo apt install -y p7zip-rar
sudo apt install -y python3-pip
sudo apt install -y vim
sudo apt install -y vlc
sudo apt install -y xournal
sudo apt install -y youtube-dl

# web
sudo apt install -y apache2
sudo apt install -y php

# latex
sudo apt install -y texlive
sudo apt install -y texlive-lang-french
sudo apt install -y texlive-latex-extra
sudo apt install -y latexila

# outils de config
sudo apt install -y gnome-tweak-tool

# tlp : gestion "drastique" de l'énergie sur laptop
sudo apt install -y tlp
sudo tlp start
sudo systemctl enable tlp
sudo systemctl enable tlp-sleep

# Nextcloud
sudo add-apt-repository ppa:nextcloud-devs/client
sudo apt install -y nextcloud-client

# pour la connexion à l'imprimante USB sur la Freebox
sudo apt install -y python3-smbc
sudo apt install -y smbclient

# sous-titres
sudo apt install -y python3-pip
sudo -H pip3 install subliminal
wget https://raw.githubusercontent.com/Diaoul/nautilus-subliminal/master/install.sh -O - | sudo bash
rm install.sh

# joplin : prise de notes
wget -O - https://raw.githubusercontent.com/laurent22/joplin/master/Joplin_install_and_update.sh | bas
rm Joplin_install_and_update.sh

# Spotify
sudo sh -c 'echo "deb http://repository.spotify.com stable non-free" >> /etc/apt/sources.list.d/spotify.list'
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 4773BD5E130D1D45
sudo apt-get update
sudo apt install -y spotify-client

# installation de playonlinux (pour D3 et autres)
wget -q "http://deb.playonlinux.com/public.gpg"; -O- | sudo apt-key add -
sudo wget http://deb.playonlinux.com/playonlinux_cosmic.list -O /etc/apt/sources.list.d/playonlinux.list
sudo apt update
sudo apt install -y playonlinux
sudo apt install -y wine

# Configuration du bureau Gnome
gsettings set org.gnome.desktop.screensaver lock-enabled false
gsettings set org.gnome.settings-daemon.plugins.power lid-close-ac-action 'nothing'
gsettings set org.gnome.settings-daemon.plugins.power lid-close-battery-action 'nothing'
gsettings set org.gnome.settings-daemon.plugins.color night-light-enabled true
gsettings set org.gnome.settings-daemon.plugins.color night-light-temperature 3200
gsettings set org.gnome.settings-daemon.plugins.color night-light-schedule-from 4.0
gsettings set org.gnome.settings-daemon.plugins.color night-light-schedule-to 3.99
gsettings set org.gnome.shell.extensions.dash-to-dock show-mounts false
gsettings set org.gnome.settings-daemon.plugins.media-keys home "['<Primary><Alt>e']"
gsettings set org.gnome.settings-daemon.plugins.media-keys calculator "['<Primary><Alt>c']"
gsettings set org.gnome.settings-daemon.plugins.media-keys play "['<Alt>Return']"
gsettings set org.gnome.settings-daemon.plugins.media-keys previous "['<Alt>Left']"
gsettings set org.gnome.settings-daemon.plugins.media-keys next "['<Alt>Right']"

# Auto-montage du HDD
#sudo vim /etc/fstab
# y ajouter :
# internal HDD SDB
#/dev/sdb1       /home/yosko/data        ext4    defaults        0       1

# Nextcloud : corriger problème de timeout
# https://github.com/nextcloud/desktop/issues/1406
# dans : /etc/sysctl.conf
#net.ipv6.conf.all.disable_ipv6 = 1
#net.ipv6.conf.default.disable_ipv6 = 1
#net.ipv6.conf.lo.disable_ipv6 = 1
# puis : sysctl -p
# puis se reconnecter à la session

# Nautilus : virer les favoris par défaut qui ne nous intéressent pas
# à commenter dans les fichiers suivants :
#vim ~/.config/user-dirs.dirs
#sudo vim /etc/xdg/user-dirs.defaults
# Redémarrer Nautilus sans se déconnecter :
#nautilus -q && nautilus &
```

Twitter / indexzero : Dear @github, Please help ...

25/07/2014 09:21 (source - permalien)

Je préfère les espaces, mais très sincèrement dans mon cas c'est juste une question de goût.

Malgré tout, j'ai déjà entendu des arguments du genre : le TAB peut représenter un nombre différent d'espace selon l'environnement/réglage de l'IDE. L'essentiel est donc de ne pas mélanger les deux.

Le problème se pose surtout quand du code est passé de main en main et d'équipe en équipe depuis des années...

Update de mes projets

20/03/2014 07:02 (source - permalien)

Ca faisait un petit moment que je n'avais pas publié de mise à jour de mes projets PHP, donc voici :

- Jotter passe en v0.4 avec un editor Markdown en plus du Wysiwyg (pas encore ultra utile) et plein de corrections et évolutions mineures (https://github.com/yosko/jotter/releases/tag/v0.4)
- YosLogin (librairie de gestion d'authentification) passe en v4 avec une réécriture basée sur des callbacks pour intégration plus aisée dans un projet (https://github.com/yosko/yoslogin)
- Watamelo (framework MVC) passe en v0.6 et continue à s'enrichir et se stabiliser (https://github.com/yosko/watamelo)

Comme toujours n'hésitez pas à me faire part de vos remarques :)

Edit 2014-03-21 : ah zut, faut que je mette à jour la démo de Jotter (http://tools.yosko.net/demos/jotter/) Je fais ça dans l'aprèm.

PHP: mb_convert_encoding - Manual

13/01/2014 01:49 (source - permalien)

Vous connaissiez sans doute htmlentities() et htmlspecialchars(), les fonctions permettant de convertir les caractères spéciaux en entités HTML :
- htmlentities() les converti tous
- htmlspecialchars() converti uniquement les caractères < > & " '

Et bien sachez qu'il existe aussi mb_convert_encoding() qui, correctement paramétrée, fait exactement l'inverse : convertir tous les caractères spéciaux en leurs entités, à l'exception de < > & " '

$html = mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8');

Quel intérêt me direz-vous ? En effet, si on encode bien ses fichiers au départ, et si il n'y a pas de risque de sécurité si on garde les tags, pourquoi convertir le reste ?
Un internaute le conseille par exemple (http://stackoverflow.com/a/8218649/863323) lors de l'utilisation de la méthode DOMDocument::loadHTML() avec du HTML en UTF-8 alors que la méthode est prévue pour du ISO-8859-1.

yosko/php-github-updater

02/01/2014 05:30 (source - permalien)

Hop hop hop !

Pour fêter la nouvelle année, je vous propose une petite classe utilitaire pour faciliter l'implémentation d'une mise à jour automatique de vos applications PHP hébergées sur Github.

Bon ok, pour l'instant c'est encore un peu en bêta, mais je suis sûr que ça va vite roxxer du poney, surtout si vous me faites vos retours :P

Edit : mon but était d'intégrer ça rapidement dans Jotter, mais je me suis dis que d'autres pourraient être intéressés :)

Publication de mon code open-source

18/12/2013 11:50 (source - permalien)

Je suis en train de publier sur Github / Gist pas mal de mes vieux bouts de code et mes principaux snippets. C'est plus pratique et clair que de les fournir dans des vieux ZIP accessibles sur des pages tombées dans l'oubli.

Pour l'instant, mes nouveaux dépôts :
- Anime Girl Generator (C#) : https://github.com/yosko/anime-girl-generator
- Yalig, gallerie d'images (PHP) : https://github.com/yosko/yalig

Et mes Gists :
- convertisseur DOM (XML/HTML) <-> Tableau PHP : https://gist.github.com/yosko/6991691
- script de batch download en PHP : https://gist.github.com/yosko/7989061
- fonction PHP pour générer une pagination : https://gist.github.com/yosko/8020218
- fonctions de conversion de couleurs en PHP : https://gist.github.com/yosko/8020258
- citation aléatoire du jeu "Empereur : L'Empire du Milieu" : https://gist.github.com/yosko/8020342
- script de migration de Blogotext vers Pluxml : https://gist.github.com/yosko/8020376

Je n'ai pas encore fait ça pour Avator (http://www.yosko.net/static3/avator) parce que j'ai un gros doute sur les sources. Voilà ce que c'est que de laisser trainer son code...

J'en profite pour ajouter que :
- Je vais bientôt faire des corrections sur DDb
- Je vais sans doute bientôt améliorer Yalig
- Je suis toujours bien penché sur Jotter (même si je galère un peu avec le Javascript ^^' ).

Vanilla JS

11/12/2013 01:56 (source - permalien)

Il n'est jamais trop tard pour découvrir ce qu'est vraiment Vanilla JS : un "framework" Javascript. J'adore tout particulièrement leur téléchargement "custom" :D

Du coup je vais pouvoir remplacer dans mes recherches "without jquery" par "in Vanilla JS".

Edit : vous dites quand vous en avez marre que je parle de Javascript ^^'

Understanding JavaScript OOP

10/12/2013 04:43 (source - permalien)

Backup créé par mes soins d'un article très intéressant sur la programmation orientée objet en Javascript (Je n'avais pas eu le temps d'en finir la lecture).

L'original (disparu il y a peu) était à cette adresse : http://killdream.github.io/2011/10/09/understanding-javascript-oop.html
Je l'ai reconstruit à partir de : http://theoldreader.com/profile/enverarslan

Ca sera toujours mieux que la copie partielle et en partie traduite qu'on trouve sur GitHub : https://github.com/SampaJS/Entendendo-Javascript-Orientado-a-Objetos

De jQuery à Vanilla JS

06/12/2013 09:40 (source - permalien)

Deux ou trois petits snippets pour se passer de jQuery pour des actions simples.
Je note tout particulièrement element.classList, qui fourni des fonctionnalités bien plus pratiques que le classique element.className (dont les .add, .remove, .toggle et .contains) !

J'étais justement plongé dans ce sujet pour jotter (si je veux rendre le wysiwyg désactivable, les autres fonctionnalités doivent pouvoir se passer de librairie).

Edit : c'est une traduction. Rendons à César ce qui est à César : https://gist.github.com/liamcurry/2597326

Utilité et code — Blog — David Larlet

03/12/2013 09:55 (source - permalien)

Ayant passé 6 ans à maintenir le code réalisé par d'autres sur des outils temporaires il y a entre 6 et 26 ans mais qui sont malgré tout toujours utilisés (non je ne déconne pas), je ne peux que confirmer.

On fait du code "imparfait", qui ne colle qu'en partie à certains patrons (patterns) du moment, bref, du code "jetable". Mais on ne le jette pas. Notre code d'aujourd'hui est d'ailleurs sans doute le cauchemar d'un développeur de demain.

Est-ce évitable ? Non. Est-ce grave ? Ca n'a pas à l'être. Il faut savoir l'accepter, et trouver des solutions pour ne pas que ça soit un problème en soit. David Larlet parle de se concentrer sur les données et les liens, et dit que c'est cela qu'il faut apprendre à rendre réutilisable.

Je suis entièremment d'accord. Malgré tout, j'estime que si nous ne sommes pas capable de faire du bon code, il reste de notre responsabilité de le rendre lisible. Car il y aura forcément une personne (vous-même ?) qui retombera un jour sur un de vos bouts de code et qui devra s'en inspirer, se baser dessus.

via http://sebsauvage.net/links/?aOJ8-Q

Learning JavaScript Design Patterns

02/12/2013 04:57 (source - permalien)

Apprendre à structurer son code grâce à des design pattern spécifiques à Javascript. Utile, pour éviter le plat de spaghettis habituel. Je vais m'en inspiurer pour Jotter, tiens.

On y retrouve des trucs qui semblent être des références en la matière : "prototype pattern", "module pattern", et même quelques références aux patterns MVx (MVC, MVP et autres).

Et un tuto plus détaillé, dédié à certains de ces patterns :
http://blog.pluralsight.com/structuring-javascript-code-part-i
http://blog.pluralsight.com/the-prototype-pattern-structuring-javascript-code-part-ii
http://blog.pluralsight.com/revealing-module-pattern-structuring-javascript-code-part-iii
http://blog.pluralsight.com/revealing-prototype-pattern-structuring-javascript-code-part-iv

Edit : et une autre référence concise sur le Module Pattern :
http://www.adequatelygood.com/JavaScript-Module-Pattern-In-Depth.html

Adapting The Joel Test To Web Development | BrandonSavage.net

26/11/2013 01:12 (source - permalien)

Vous connaissez le test de Joel ? (du nom de son créateur, Joel Spolsky, ancien de Microsoft et créateur de Stackoverlfow.com).

Il s'agit d'un test simple visant à évaluer la qualité d'une équipe de développement en informatique. Indirectement, c'est en fait une liste de bonne pratique pour développeurs aussi :)

Brandon Savage (un cousin éloigné de Seb Sauvage ? Attention, cette blague vous a été apportée par le comité de la blague naze... merci Yosko)  nous propose une version "adaptée" pour le développement web.

Même si cette adaptation date de 2009 (et le test de Joel de 2000), je la trouve très pertinente et toujours autant d'actualité.

yosko/easydump

23/09/2013 04:40 (source - permalien)

Je viens de mettre EasyDump à jour. Il permet désormais de :
1- afficher le nom des variables (facultatif)
2- afficher le nom du fichier et le numéro de la ligne où EasyDump a été appelé
3- afficher le code complet de l'appel à EasyDump (facultatif, utile en cas de dumps nombreux)

Par contre, il n'est désormais compatible qu'avec PHP 5.1.0 ou supérieur (mais vous ne devriez de toute façon plus utiliser de versions plus anciennes...) car j'utilise la classe SplFileObject pour lire un fichier ligne à ligne à l'envers.

Pour l'affichage des noms de variable, je me suis bien amusé. Je voulais parser le code PHP en une seule regex, mais au final, j'en utilise 5. Je me suis longuement arraché les cheveux, avant de choisir la voie de la facilité...

Edit 10/10/2013 : plus de regex, parsage à la main. Je me suis bien prix le choux, quand même... Mais maintenant, l'essentiel des cas bizarres devrait être géré.

Top 10 reasons compilers are female

23/09/2013 01:26 (source - permalien)

Je les remets ici au cas où (le point 3 me rappel des souvenirs...) :

10. Picky, picky, picky.
9. They hear what you say, but not what you mean.
8. Beauty is only shell deep.
7. When you ask what's wrong, they say "nothing".
6. Can produce incorrect results with alarming speed.
5. Always turning simple statements into big productions.
4. Smalltalk is important.
3. You do the same thing for years, and suddenly it's wrong.
2. They make you take the garbage out.
1. Miss a period and they go wild.

CLOC -- Count Lines of Code

07/06/2013 10:12 (source - permalien)

Utilitaire en ligne de commande pour compter le nombre de lignes de code (LOC) d'un projet (répertoire, zip, autre).
Pratique, simple, et plein d'options plus ou moins utiles.

page 1 / 2 Suivant »