samedi 13 juin 2020

GPL vs LGPL De quoi s'agit il?

Pendant mes balades sur la toile, je suis tombé sur des concepts qui, pour moi avaient besoin d'être éclairci. Il s'agit des concepts de logiciels libres, de licences GLP et LGPL. C'est ce que nous partageons avec vous dans cet article. J'espère que cela permettra à d'autre d'y voir plus claire. Commençons par le commencement, ou plutôt par le précurseur .

- Le Logiciel Libre, selon Richard Stallman:

Selon le fondateur de la Free SoftWare Fondation, le logiciel libre se définit par 4 libertés fondamentales:
- Liberté d'utiliser le programme comme bon vous semble (peu importe l'usage)
- Liberté d'étudier le programme sous toutes ses coutures
- Liberté de partager le programme avec qui et comme il le veut
- Liberté de partager ses modifications apportées au programme avec qui et comme on veut.
Si l'une quelconque de ces libertés n'est pas respecté par un programme, il s'agit d'un programme privateur. Ce n'est pas un logicel libre au sens (Stallman).

De cette définition découle la notion de Open Source (Code source ouvert). La reciproque n'est pas vrai. Ainsi GPL != Open Source.

Le respect de ces libertés retire au concepteur du programme tous les droits sur les copies. ceux ayant reçu une copie, peuvent en disposer comme ils le souhaitent, même en commercialisant le nouveau programme avec leur ajout biensur.

Remaque:
Il est important de savoir qu'un programme sous licence GPL, même vendu reste sous licence GPL. Ainsi un nouvel acquereur du logiciel GPL peut le vendre ou en faire ce qu'il veut, comme bon lui semble car il devra aussi être sous GPL.

De ce fait, la GPL dispose d'un caractère héréditaire: Un programme privateur, intgerant un programme ou module sous GPL devient automatiquement GPL. C'est le coeur du problème.

A l'inverse des copyright(c), l’auteur permet, dans le cadre du GPL, à tout le monde de diffuser, modifier et détourner son travail sans qu’un accord supplémentaire soit nécessaire ; la licence fait office d’autorisation. Il s'agit en fait du copyleft qui n'existe pas dans tous les pays sauf chez les anglo-saxon.

Une seconde variante de GPL appelée LGPL (https://www.gnu.org/copyleft/lesser.html) pour lesser GPL ou encore GPL amoindrie, qui permet aux logiciels privateurs d'utiliser des logiciel libre dans leur programme sans pour autant être libres.

Ainsi, la licence permet aux développeurs et aux entreprises d'utiliser et d' intégrer les logiciels publiés sous la LGPL dans leur propre programme (même propriétaire logiciel) sans être requis par les conditions d'une forte copyleft licence pour libérer le code source de leurs propres composants. La licence ne nécessite que le logiciel sous licence LGPL modifiable par les utilisateurs finaux via la disponibilité du code source.

Nous allons dans de prochains articles abordé les autres aspects du Logiciel Libre, notamment les autres versions et les évolutions de la GPL.

Liens utiles:
https://www.fsf.org
https://www.gnu.org/copyleft/lesser.html

vendredi 8 mai 2020

Utiliser votre Smartphone en WebCam avec EpocCam


Bonjour à tous,
Les SmartPhones avec le temps sont devenus de véritables labo-Photo qui peuvent
faire palire les professionnels de la photo.

En effet avec la miniaturisation des composants électroniques, les constructeurs ont pu intégrer dans
nos smartphones des appareils photo de très hautes résolutions de sorte à largué les appareils traditionnels à des années lumière.

Nos avons des appareil de 8MP à 40 MP et même plus. Samsung, l'un des leaders en la matière promet en faire d'avantage avec 150 MP. C'est dire à quel point les Mega-Pixels sont devenus un argument de vente.

Mais, mais, le grand mais concerne nos ordinateurs portables pour ceux qui ont des webCam; ils semblent restés au 19e voire 20è siècle. Tous les constructeurs sont logés à la même enseigne avec de médiocres WebCam.
Même apple avec ses récentes MBP, MBA, MP, iMac ... ne semble pas échapés à cette médiocrité au niveau des WebCam.

Avec la recrudescence des Visio-conférences, video-conférences pour le télétravail, dues à la pandémie à Coronavirus, force est de constater que le problème des WebCam se pose avec acuité.

Des solutions existent et simples à mettre en oeuvre:

Utiliser son smartphone pour en faire une WebCam. Et ouiiiiiii, des solutions toutes simples à mettre en oeuvre:
Il s'agit d'installer des utilitaires à même de nous y aider.


Pour ma part j'ai opté pour "EpocCam" un utilitaire qu'il faut installer aussi bien sur son Smartphone (Android ou iOs) et ensuite sur son ordinateur (MacOS ou Pc ou lapTop avec WebCam ou pas) puis connecter les deux appareils soit par câble, soit par wifi et le tour est joué.

 Vous pour télécharger épocCam sur: https://www.kinoni.com
vous y trouverez toutes les instructions utiles.

Bien à vous.

jeudi 20 février 2020

Le cycle de vie d'une Activity sous android



COMPRENDRE LE CYCLE DE VIE D’UNE ACTIVITE ANDROID


Le développement Android est basé sur un certain nombre de principes. Il convient de savoir ce qu’est une application Android, quelles sont ses composantes, Comment fonctionne-t-elle ?

Nous allons dans la suite utiliser indifféremment Activité et Activity. Ces deux mots désigneront la même chose dans la suite.

Une application Android est une application organisée sous forme de vues, et constitue un ensemble d’Activité ou « Activity ». L’on peut schématiser ou caricaturer une application Android par la description suivante :
  • (Au moins) une activité (Activity) principale
  • Une ou plusieurs activités secondaires
  • (Éventuellement) un ou plusieurs services
  •             ‘’              un ou plusieurs écouteurs d’évènements
  •             ‘’              un ou plusieurs éditeurs d’évènements
                                              1 - Alors qu’est-ce qu’une activité ?

Une Activité, au sens Android du terme est une interface graphique (XML) + un programme (Java, C# …). Une activité est la composante principale d'une application sous Android. L'activity est le métier de l'application et possède généralement une View (vue) au minimum, c'est-à-dire un écran graphique.


A côté des Activités nous avons les « Intents » (Nous y reviendront dans un prochain article) permettent de communiquer entre les différentes activités de notre application, mais aussi du téléphone.


Une Activity Android dispose d’un cycle de vie qui a pour but de rendre la gestion des ressources efficace. De ce fait, Android se réserve le droit de « tuer » une activité s’il n’y a pas suffisamment de ressources mémoire. Ainsi toute application ou activité Android se doit de respecter certaines règles inhérentes aux cycles de vie d’une activité mise en place par Google. D’où la nécessité pour les développeurs de connaitre le cycle de vie d’une activité au risque de voir son application marginalisée par le système.

                                               2 - Le cycle de vie d’une Activity ?

Sous Android, une activité passe par différents états induisant, entre chaque état, des appels de certaines méthodes bien spécifiques par le système, dans un ordre déterministe. Ces différentes étapes constituent donc le cycle de vie d’une activité Android.

Les différent(e)s étapes ou états par lesquels passent l’Activity sont au nombre de 7 :
  • onCreate()
  • onStart()
  • onResume() 
  • onPause()
  • onStop()
  • onRestart()
  • onDestroy()

Plusieurs représentations du cycle de vie d’une « Activity » Android existent. Ils ont tous le même sens. Nous allons en retenir deux pour illustrer nos propos : La représentation officielle selon Google et une autre représentation que j'ai bien aimé.


a) Le schéma officiel selon Google pour le projet Android :


Fig1. : Cycle de vie de l’activité (Activity) selon Google (https://developer.android.com/guide/components/activities/activity-lifecycle.html#alc) .

b) La représentation selon le site openclassrooms.com


Fig.2 : L’activité (Activity) dans tous ses états (https://openclassrooms.com/en/courses/4517166-developpez-votre-premiere-application-android/4586901-comprenez-le-cycle-de-vie-dune-activite)



Nous allons à présent définir le sens de chaque méthode indiquée dans les diagrammes susmentionnés.
  • onCreate() :
Cette méthode est appelée dès que notre Activity est créée par le système. Ainsi notre Activity entre dans l’état « Created ». C’est ici que sont chargés l’interface graphique, initialisation des variables … L’utilisateur n’y pas encore accès
  • onStart() :
Lorsque l’Activity est « Created », le système fait appelle à la méthode onStart() et met notre Activity dans l’état Started. Elle a donc démarré mais l’utilisateur ne peut pas encore interagir avec.
  • onResume() :
Après le démarrage de notre Activity (started), le système fait appel à la méthodes onResume() qui à son tour rend l’Activity entièrement opérationnelle. Elle est visible par l’utilisateur qui peut interagir avec les différents éléments graphiques. Cette Activity reste en l’état tant qu’elle n’est pas interrompue par une autre Activity (Notification, boite de Dialogue, appel entrant …). Dès notre application (Activity) passe à « Paused » et appelle onPause().
  • onPause() :
Une fois notre Activity est à « Paused », cette méthode est appelée. Tous les traitements de onResume() sont mis en pause c’est-à-dire par exemple, les connexions actives, les streaming encour, … Les traitements à effectuer ici doivent être le plus bref possible au risque de passer à onStop().
  • onStop() :
A la différence de la méthode onPause(), cette méthode est appelée quand notre Activity entre dans l’état « Stopped » et n’est plus visible par l’utilisateur. Les traitements qui s’y rattachent peuvent être arrêtés. C’est en général de cas de l’Activity appelante.
  • onRestart() :
Cette méthode permet de relancer l'activity en vue de lui passer la main et la mettre au premier plan.
  • onDestroy() :
La méthode onDestroy() est appelée dans deux cas :
    •  Soit le système décide de le faire lorsqu’il n’y a plus de ressources disponibles telle que « mémoire insuffisante », alors le système Kill ou Tue l’Activity ;
    • Soit l’utilisateur décide d’arrêter l’Activity en faisant appel la méthode finish().
L’autre alternative c’est que l’utilisateur relance l’application en faisant restarted avec onRestart().

Il ne nous reste plus que de la pratique… A la prochaine.

vendredi 3 janvier 2020

Meilleurs voeux 2020 à toutes et à tous

Nous venons de passer une année 2019 palpitante et voilà que 2020 démarre. C'est donc le lieu de souhaiter de bonnes fêtes à tout le monde.
"Après la Fête, La défaite!" comme on dit ici chez nous en Cote d'Ivoire. Mon souhait est que cette année 2020 ne soit pas du tout une année de DEFAITE pour qui que ce soit. Qu'elle soit plutôt une excellente et exceptionnelle année pour tous; une année pleine de bonheurs, de prospérité et de paix.
Paix en Côte d'Ivoire, paix chez vous et paix dans le monde entier.

Excellente année 2020.

lundi 18 novembre 2019

Raccourcis clavier sous MacOS

Bonjour à tous,
je suis passé sous macOS il y a de cela quelques jours et j'étais plutôt dérouté par toutes les gymnastiques à faire travailler convenablement, Habitudes Pc Oblige.  Très rapidement j'ai pris mes marques et c'est plutôt bluffant. Je suis un linux users sur Pc et je me retrouve un peu car l'environnement est quasi-similaire à gnome. Dans tous les cas un temps d'adaptation est nécéssaire.

Ce article vient vous y aider avec les raccourcis couramment utilisés sous mac. Après plusieurs jours et quelques recherches sur internet, je vous livre ici ce que j'ai pu obtenir:

  • Le Suppr sur un clavier portable est obtenu par Fn + Backspace ( Fnß )
  • Les accolades {} sont obtenus par ( et )
  • Les crochets [ ] sont obtenus par ( et )
  • Le pipe (|) est obtenu par L
  • L'antislash (\) est obtenu par /
  • Le tilde (  ̃) est obtenu par ou par   N espace
  • Le æ est obtenu par A
  • Le œ est obtenu par O
  • Le μ est obtenu par M
  • Le tiret long () est obtenu par   -
  • Le c cédille majuscule Ç est obtenu par ç
  • L'accent aigu (´) est obtenu par &
  • Les majuscules accentuées sont obtenues en utilisant le verrouillage majuscule () et les minuscules accentuées que sont à, é, è, ï...
  • Les points de suspension () sont obtenus avec ;
  • La manipulation des fenêtres se fait avec N (nouvelle), W (fermer), M (réduire).
Dans le Finder, ⌘⇣ et ⌘⇡ permettent respectivement d'activer un élément (rentrer dans un dossier ou ouvrir un fichier) ou de remonter d'un niveau. Attention, O a le même comportement que ⌘⇣ ( Commande-bas ) ;

Les touches Suppr, Fin, Début, PageUp et PageDown étant absentes des claviers de portables, on trouvera les raccourcis suivants dans les éditeurs de texte :

  • Fn-Backspace (Fnß) pour Supprimer
  • ⌘⇠ et ⌘⇢ pour aller respectivement en début et fin de ligne ( pour sélectionner)
  •   et   pour aller respectivement en début et fin de mot ( pour sélectionner)
  • ⌘⇡ et ⌘⇣ pour aller respectivement en début et fin de document ( pour sélectionner)
  • et pour naviguer entre les paragraphes ( pour sélectionner)
  • Fn et Fn pour naviguer entre les pages ( pour sélectionner)

La recherche , un autre point clef, ne fait pas appel à des touches exotiques comme F3:

  • F ouvre le dialogue de recherche ;
  • G cherche l'occurrence suivante, ⇧⌘G cherche l'occurrence précédente – E initialise la recherche avec la sélection courante ;

Le dictionnaire intégré́ à MacOs X est également très facile d'accès :

  •  Option-Echap ( ) ouvre le dictionnaire d'auto-complétion ;
  • Control-Commande-D (⌃⌘  D) donne la définition (anglaise) d'un mot pointé par la souris
La sélection mérite aussi d'être citée :

  • Sélection + Commande () : sélection discontinue (on peut sélectionner des portions de texte disjointes) courante ; c'est le même comportement que la sélection dis- continue sous le Finder ;
  • Sélection +  : sélection de texte verticale.
{MAJ:25/10/2017}

Voilà ici quelques autres raccourcis clavier:

  • Cmd + D permet de Dupliquer un document ou un fichier;
  • Cmd + C ou Cmd + V permettent respectivement de copiez et coller comme sous PC;
  • {MAJ:16/10/2018Alt + Cmd + V permet de déplacer le fichier qu'on a copier (Cmd+C) dans le Finder ( Ctrl + V sous PC); {Fin MAJ:16/10/2018
  • Cmd + Z permet d'annuler une manipulation;
  • Cmd + Maj + Z  permet d'annuler une annulation de manipulation, donc de rétablir une manipulation;
  • Cmd + A permet de tout sélectionner;
  • Cmd + S permet d'enregistrer ;
  • Cmd + F permet de faire une recherche dans une fenêtre;
  • Cmd + Alt + W ferme toutes les fenêtre ouverte;
  • Cmd + Suppr sert à Supprimer un dossier, un ficher (dans le Finder); 
  • Cmd + Option (Alt) + F permet d'Afficher en plein écran
  • la touche "Entrée" effectuée sur un ficher permet à celui-ci d'être renommer;
  • Cmd + M permet de placer la fenêtre active dans le Dock
  • Cmd + Y permet Prévisualisation d'un fichier; 
  • Cmd + Option + Esc. permet de fermer une application ou une fenêtre de force (fenêtre "Forcer les applications à quitter");
  • Cmd + flèche du haut permet  de revenir au dossier parent dans le Finder;
  • {MAJ:18/11/2019} Maj + Fn + Cmd + . : Cette combinaison permet d'afficher les fichiers cachés;

J'espère que cela vous sera utile. Vous pourrez tout de même approfondir la question en parcourant le manuel d'Administration/Guide d'utilisateur de MacOs ou tout simplement l'aide en ligne.


Portez vous bien!

samedi 16 novembre 2019

NTFS, Lecture / Ecriture sous macOS Catalina (10.15.x)

Ce tutoriel fait suite à celui sur la lecture/ecriture des disques NTFS sur MacOS 10.12,10.13,10.14 qui date d'il y a un an.
Les installations suivantes restent valable 

  • Installation Xcode tools: xcode-select --install
  • Installation Homebrew/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  • Installation Cask: brew install cask
  • Installation osxfusebrew cask install osxfuse 
  • Installation de ntfs-3g: brew install ntfs-3g
Avec Catalina, il n'est pas nécessaire de désactiver le SIP mais la sécurité est plus stricte que jamais. En effet, étant donné que macOS Catalina monte le système de fichier en mode lecteur seul, nous devons trouver le moyen de modifier le fichier mount_ntfs par défaut.

Après les installations précédentes, nous avons deux versions de mount_ntfs sur notre système. L'un se trouve à /usr/local/sbin/mount_ntfs, installer avec ntfs-3g et l'autre /sbin/mount_ntfs (livré avec l'OS).
Ce que nous allons faire, c'est de copier le contenu du premier (celui de ntfs-3g) dans le second (celui du système). Il convient tout de même d'en faire une copie.

Contrairement aux anciennes versions de macOS (<10.15), sous Catalina, la commande << sudo mv /sbin/mount_ntfs /sbin/mount_ntfs.original >> nous donne un message du genre:
 << mv: rename /sbin/mount_ntfs to /sbin/mount_ntfs.original: Read-only file system >>. Le fichier système est donc en lecture seule. Il faut donc modifier cette situation (temporairement
bien sur).
/!\ Les commandes seront annulées au redémarrage. Nous allons faire toutes nos modifications avant cela.
Les commandes suivantes nous y aides:

  • monter le fs en mode edition: sudo mount -uw /
  • renommer le fichier originale: sudo mv /sbin/mount_ntfs /sbin/mount_ntfs.original
  • créer un nouveau fichier: sudo touch /sbin/mount_ntfs
  • changer les droits sur le fichier (uw): sudo chmod 0755 /sbin/mount_ntfs
  • changer le propriétaire du fichier: sudo chown 0:0 /sbin/mount_ntfs 
  • ouvrir le fichier en mode édition avec nano: sudo nano /sbin/mount_ntfs

Ouvrons un autre terminal et tapons les commandes suivantes:

  • déterminons notre user ID, le miens c'est 501: id -u
  • déterminons notre Group ID, le mien c'est 20: id -g
  • ouvrons le mount_ntfs de ntfs-3g: nano /usr/local/sbin/mount_ntfs
  • sélectionnons le contenu puis clic-droit pour le copier.

Le contenu du fichier /usr/local/sbin/mount_ntfs ressemble à ceci:


#!/bin/bash

VOLUME_NAME="${@:$#}"
VOLUME_NAME=${VOLUME_NAME#/Volumes/}
USER_ID=501   
GROUP_ID=20. 

if [ `/usr/bin/stat -f %u /dev/console` -ne 0 ]; then
USER_ID=`/usr/bin/stat -f %u /dev/console`
GROUP_ID=`/usr/bin/stat -f %g /dev/console`
fi


/usr/local/opt/ntfs-3g/bin/ntfs-3g \
-o volname="${VOLUME_NAME}" \
-o local \
-o negative_vncache \
-o auto_xattr \
-o auto_cache \
-o noatime \
-o windows_names \
-o user_xattr \
-o inherit \
-o uid=$USER_ID \
-o gid=$GROUP_ID \
-o allow_other \
"$@" >> /var/log/mount-ntfs-3g.log 2>&1

exit $?;



Coller le contenu ci-dessus copié dans l'autre terminal (celui où l'on a ouvert /sbin/mount_ntfs), en prenant soin de remplacer le User_ID et le GROUP_ID par les vôtres.
Enregistrer ensuite le fichier en tapant sur les touches "Ctrl+X" et "Y". Il faut ensuite fermer toutes les fenêtres ét redémarrer notre ordinateur.

Nous sommes parés à utiliser nos disques durs externes en mode lecture et écriture.
Bye.






mardi 21 mai 2019

Qwant: Comment le définir comme moteur de recherche par defaut

 Installer Qwant comme moteur de recherche par défaut sur:

- Edge:
Cliquez ensuite sur le menu “Paramètres, etc.” en haut à droite.
Puis cliquez sur “Afficher les paramètres avancés”.
Choisissez “Paramètres”.
Cliquez sur le bouton “Changer de moteur de recherche”.
Qwant apparaitra dans la liste. Sélectionnez-le et cliquez sur “Définir par défaut”.
Qwant est maintenant le moteur de recherche par défaut de votre navigateur.
- Firefox:
Deux options s'offre à nous:
Option 1 : Cliquez sur la loupe dans la barre de recherche située dans la barre d’outils.
Faites un clic droit sur le logo Qwant et sélectionnez “Définir comme moteur de recherche par défaut”. Qwant est maintenant le moteur de recherche par défaut de votre navigateur.

Option 2 : Cliquez sur l’icône du menu dans l’angle supérieur droit, puis sélectionnez “Options”. Une nouvelle fenêtre s’ouvre.
Dans le menu latéral, cliquez sur le bouton “Recherche”. Ouvrez le menu déroulant de la section “Moteur de recherche par défaut” et sélectionnez Qwant. Qwant est maintenant le moteur de recherche par défaut de votre navigateur.

Safari:
Installer l’extension Qwant sur Safari
Téléchargez le fichier de l’extension Qwant pour l’installer sur votre ordinateur.
Une fois installée, l’extension installe Qwant comme moteur de recherche par défaut sur votre navigateur Safari.

Bonne lecture. et
A bientôt.

De la question de la "Vie privée" sur Internet: Les moteurs de recherche

On entend partout "Sécuriser vos données", "Brèche de sécurité", "faille de sécurité", "fuite de données sensibles", "Edward Snowden", "NSA", "BigBrother" ... Alors De quoi parle le texte?

Nous allons produire un ensemble de plusieurs articles qui viendrons éclairer la lanterne de tout ce qui se pose des questions et surtout, comment faire?

Pour débuter nous allons commencer par notre premier pas sur internet.
Lorsque que vous avez accès à internet pour la première fois, l'épineuse question se pose: Que faire? comment faire ça? comment faire ci? et avec quoi le faire?

Plus de 90% des personnes donnerons en réponse à ces question, va sur Google (1998). Eh oui, le moteur de recherche le plus populaire au monde.

Et tac, je pose mes questions et les réponses arrivent comment si mon périphérique les devinait. En tout cas Google est SUPER. Mais il y a un hic.

Quel est donc le problème avec google?
Après mes premières recherches, les publicités en lien avec mes recherches commencent à affluer. Publicités suggérées par ici; publicités non désirées par là; publicités sponsorisées par là... Tout ce que je lit contient de la publicité, même quand je suis sur d'autres sites qui n'ont rien à voir avec google. Comment ça se fait?

Rassurez vous, google vous suit à la trace. Ehhhhh oui google vous espionne depuis votre première recherche sur le moteur de recherche www.google.com. Et sachez que google est très intrusive et ne demande pas votre avis. Il en est de même si vous faites vos recherches pendant que votre compte gmail est ouvert.

Un autre groupe en fait autant, il s'agit de Facebook, nous y reviendront.

Face à cette situation une question se pose: Que faire?

[Un peu d'histoire tout de même]
Il est bon de savoir que le moteur de recherche de google n'est pas le seul moteur qui existe sur la toile mondiale des ordinateurs.

Les plus anciens ont certainement connu l'existence des moteurs de recherches tels que www.altavista.com (1996), Archie (1990), Wanderer (1993), yahoo (1994), Lycos (1995)..., AOL et compagnie qui ont pratiquement tous disparus avec l'explosion de la bulle internet des années 2000 et le plébiscite de Google (créer en 1998) la même année par Searchenginewatch.com.

Face l'hégémonie de Google, d'autre alternative ont vue le jour sur la planète avec plus ou moins les mêmes modèles économiques: "La collecte des données utilisateur, pour ensuite les vendre." Vous êtes donc le produit.
L'on peut citer ask.com, Bing (Microsoft), Yandex (Russie), Baidu (chinois), swisswows (suisse), qui collectent tous les données utilisateurs ... et en face les moteurs libres respectant la vie privée des utilisateurs que sont DuckDuckgo, Qwant ... Nous aurons l'occasion de les étudier plutard dans le détail.

Noter que Duckduckgo et Qwant sont de très bons alternatives au moteur de recherche de google. L'on peut aisément les intégrer au navigateurs que nous utilisons au quotidien. Pour plus de plus amples informations, allez faire tour sur Qwant pour ce qui le concerne.

La suite pour bientôt...

vendredi 13 avril 2018

Ecriture / Lecture NTFS sur MacOS High Sierra 10.13.(1,2,3 et 4)

Ecriture / Lecture NTFS sur MacOS High Sierra 10.13.(1,2,3 et 4) Mojave et ses déclinaisons et aussi macOS Catalina (10.15):

Nouvel utilisateur de MacBook pro (Je ne le suis plus depuis presqu'un an) avec El capitan, je me suis retrouvé confronté à un sérieux et étrange problème. Il m'était impossible de copié des données de mon MacBook sur mes disques dures externe en format NTFS (système de fichier de Microsofts).

Alors question:
1- comment est-ce possible au 21è siècle (Apple m'épate de jour en jour)?
2- comment y remedier?

Nous alons simplement chercher à repondre à la seconde question car je ne veux pas savoir "quel est le sex des anges".

Pour ce faire, deux solutions s'offrent à nous :
1 - Installer l'application payante Paragon NTFS version 15 (si vous avez assez de sou), plutôt bien foutu.
2 - Et la seconde solution c'est l'installation et la configuration de OSXFUSE et NTFS 3G.

L'installation de paragon (simple à réaliser) n'est pas abordée dans ce billet. Un tour sur le site de l'éditeur nous en donne plus de détails.

Alors revenons à nos moutons!

Qu'est ce que c'est NTFS 3G et comment installe - t -on OSXFuse et NTFS 3G pour resoudre notre problème?

NTFS 3G:
-------
NTFS 3G est un pilote open source pour NTFS utilisant le système de fichier de FUSE supporté par tous les sysytèmes d'exploitation compatible UNIX dont MacOS ( et oui c'est un unix like au même titre que linux).

NTFS 3G sert juste d'interface à OSXFUSE pour faire le travail. Il est issue du projet Tuxera NTFS qui est payant et intègre des outils ou fonctions supplémentaires permettant de formater en NTFS et d'analyser les disques durs externes.

On y va:

Il import de savoir que nous avons des préréquits à remplir.:
Il s'agit du command line tools for Xcode, qui se trouve dans l'AppStore et de Homebrew (dont nous avons parlé dans un précédent article).

Ainsi, Command Line tools for Xcode s'install en tapant dans le terminal

 xcode-select --install

Puis On install Homebrew en entrant dans le terminal

 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Une fois Homebrew installé, il faut installer son extension Homebrew cask, toujours dans le terminal:

brew install brew-cask

On installe par la suite osxfuse et ntfs-3g (la version la plus récente) respectivement, dans le terminal

brew cask install osxfuse

puis

 brew install ntfs-3g

[Pas nécessaire sous macOS Catalina: Désactivation de SIP]
L'on doit ensuite désactiver le System Integrity Protection (SIP) de votre macOS. Comme son nom l'indique c'est le système de sécurité mise en place par Apple à l'image de UAC de Microsoft Windows; sans quoi nous ne pourrons pas poursuivre avec les commandes avenir.

Pour désactiver le SIP, il faut redémarrer en Recovery Mode c'est - à - dire on redémarre la machine en maintenant les touches "Cmd + R".

Une fois en recovery mode, on clique sur le menu utilitaires (utilities) puis "console" pour afficher la console.
Dans le terminal, la commande csrutil status doit indiquer enable (actif) en suite la commande csrutil disable permet de le (SIP) désactiver.

En suite  csrutil status permet de savoir si c'est effectif ou pas (on devrait donc avoir "disabled").

Il ne nous reste plus qu'a redémarrer donc la machine, cette fois-ci en mode normal et l'on peut y vérifier le status de csrutil en entrant dans le terminal "csrutil status".

Si le résultat n'est pas "disabled" alors on reprend le processus.

[Avant macOS Catalina: Début MAJ]
Une fois que le System Integrity Protection est désactivé, l'on doit dire au macOS de monter automatiquement les périphériques NTFS que l'on y connecte (Disque dur Externe, ...) en modifiant les fichiers NTFS par défaut de MacOS. Pour cela:

  • On renomme le fichier d'origine mount_ntfs en mount_ntfs.orginal par:  sudo mv /sbin/mount_ntfs /sbin/mount_ntfs.original 
  • On pointe notre fichier installé par ntfs-3g qui se trouve dans /usr/local/sbin/ vers celui qu'on vient de renommer afin que macOS le prenne en compte en lieu et place de l'original en y créant un lien symbolique  sudo ln -s /usr/local/sbin/mount_ntfs /sbin/mount_ntfs 


Nous finissons notre travail par réactiver le SIP, sécurité oblige. La commande  csrutil enable
permet de le faire aisément.

[Sous macOS Catalina 10.15.x : MAJ]
Avec Catalina le fichier /sbin/mount_ntfs est un fichier system protégé car il est en lecture seule. En effet la commande  sudo mv /sbin/mount_ntfs /sbin/mount_ntfs.original 
nous donne un message du genre: mv: rename /sbin/mount_ntfs to /sbin/mount_ntfs.original: Read-only file system
Pour remédier à cela nous allons faire plusieurs choses:
- Déterminer notre user ID:  id -u le miens donne 501 ; et notre group ID: id -g le miens donne 20
Etant donné que Catalina monte le système de ficher en lecture seul (message ci-dessus) nous allons y remédier en le rendant accessible (modifiable) avec la commande: sudo mount -uw /

/!\ Cette commande est annulée au redémarrage. Nous allons faire toutes nos modifications avant cela.
Nous pouvons à présent modifier le fichier mount_ntfs:
sudo mv /sbin/mount_ntfs /sbin/mount_ntfs.original 
sudo touch /sbin/mount_ntfs
sudo chmod 0755 /sbin/mount_ntfs
sudo chown 0:0 /sbin/mount_ntfs 
sudo nano /sbin/mount_ntfs

La dernier ligne nous permet d'ouvrir le nouveau fichier mount_ntfs en mode édition avec nano (éditeur de texte par défaut sous toutes les distributions unix-like)
Ici nous allons ouvrir le fichier /usr/local/sbin/mount_ntfs  créé par l'installation de ntfs-3g  et copier le contenu que nous allons coller dans le terminale où nano nous attend. Chez moi, le contenu à copier est :

#!/bin/bash
VOLUME_NAME="${@:$#}"
VOLUME_NAME=${VOLUME_NAME#/Volumes/}
USER_ID=501
GROUP_ID=20
if [ `/usr/bin/stat -f %u /dev/console` -ne 0 ]; then
  USER_ID=`/usr/bin/stat -f %u /dev/console`
  GROUP_ID=`/usr/bin/stat -f %g /dev/console`
fi
/usr/local/opt/ntfs-3g/bin/ntfs-3g \
  -o volname="${VOLUME_NAME}" \
  -o local \
  -o negative_vncache \
  -o auto_xattr \
  -o auto_cache \
  -o noatime \
  -o windows_names \
  -o user_xattr \
  -o inherit \
  -o uid=$USER_ID \
  -o gid=$GROUP_ID \
  -o allow_other \
  "$@" >> /var/log/mount-ntfs-3g.log 2>&1 

Ce code est coller dans le terminal (mount_ntfs est ouvert avec nano). Il faut enregistrer avec les touches "Ctrl+X" et "Y". C'est fini
[Sous macOS Catalina 10.15.x : Fin MAJ]

On redémarre enfin notre machine et le tour est joué, nos disques durs externes peuvent recevoir des fichiers depuis notre MacOs.



Une petite précision tout de même, comparativement à NTFS-3G, PARAGON-NTFS est 2 à trois fois plus rapide.

J'espère que cela répondra à vos besoins, n'hésiter pas pour les questions et commentaires.
Portez -vous bien et à très bientôt pour un autre tutoriel.


vendredi 23 mars 2018

Le gestionnaire de paquets Homebrew sous MacOS

Homebrew Qu'est ce que c'est?
---------------------------------------

Fervent utilisateur d'ubuntu depuis 2006, je suis arrivé sur MacOS du fait que je me suis pris un Macbook Pro il y a peu (Juillet 2017), eh oui, j'aime la qualité et la finition de leurs (Apple) machines (mais pas les prix, et c'est normal).

Premier constat:
---------------------

MacOS est un système compatible Unix, au même titre que Ubuntu et toutes les autres distributions de Linux. Cela signifie que MacOS respecte les mêmes spécifications qu'une distribution quelconque de Linux (i.e. à base d'Unix) à quelques exceptions près.
Mes constats:
  • Le clavier MacbookPro et les raccourcis clavier (voir cet article): J'ai mis quelques jours à m'habituer aux contraintes liées à ce changement de clavier;
  • L'interface me rappele Gnome donc pas dépaysé, avec quelques différences tout de même;
  • Mes logiciels de tous les jours (Python, php, LibreOffice, voir cet article,...), pour la plupart libre et open source, fallait-il en payez (trop chers je penses)? si non comment les avoir?
Ce dernier point m'a fait regretter un peu mon environnement d'Ubuntu avec son gestionnaire de paquet "apt". En existe -t- il un équivalent sous MacOS me permettant d'installer les mêmes outils?

Après plusieurs jours de lectures et de recherches, je suis tombé sur Homebrew, Fink , MacPort ...
Alors qu'est ce q'un gestionnaire de paquet au juste?:
--------------------------------------------------------------------
Un gestionnaire de paquets est un programme qui permet d'installer les logiciels et utilitaires, des paquets donc, dont on a besoins sur notre système à l'image de windows installer.
Un paquet est un logiciel qui contient toutes les informations qui permettent d'installer un logiciel sur votre OS, sur votre ordinateur (les bibliothèques, les dépendences, le lieu de l'installation, les versions des outils...) et celà de manière très propre.

Sous Ubuntu, "apt" est le gestionnaire de paquets qui permet d'installer les paquets depuis des repertoires distants sur des serveurs, les dépôts, qui stockent les différents programmes et outils dont on a besoin. Les paquets installer sont soit des ".deb" soit des ".dpkg".

Sous MacOS, Apple(c) a tout organisé autour de son magasin d'applications "AppStore", d'où l'on télécharge toutes les applications et outils qui nous sont nécessaires. Vous le devinez sans doute, elles sont pour la plupart payantes, dans un environnement aussi bien fermé que sous Windows, si ce n'est plus).

A coté, il existe des sites d'ou l'on peut télécharger tout ce que l'on désire, soit en fichier ".dmg" soit en fichiers ".pkg" (Faites attention tout de même à l'endroit où vous téléchargez vos outils).

Pour ma part j'avais juste besoins des outils que j'utilisais sous Linux Ubuntu et Homebrew m'est apparu (aux dires des spécialistes), comme l'outil parfait:

Homebrew comporte plus de 3500 paquets, hors dépots supplémentaires et présente comme avantages sa simplicité d'utilisation, sa facilité d'intégration à l'écosystème d'Apple en utilisant les bibliothèques fournies, installation des logiciel dans le répertoire ".../bin" de l'utilsateur (/usr/local/bin) de même que sa facilité d'installation.

Cependant, il comporte beaucoup moins de paquets que MacPort (près de 21 000 paquets) et Fink (plus de 21 000).

Mais au fait, comment l'installe t-on?
----------------------------------------------
Il suffit, de copier/coller ce bout de code dans le "terminal" pour lancer son installation:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Dépendance:
-----------------
Homebrew à l'instar des autres gestionnaires de paquets, a des dépendances à satisfaires au préalable. Il a besoins des outils en ligne de commande pour développeurs dont le compilateur C/C++/Objective-C, git et svn (tous deux des gestionnaires de version). Pour celà, il faut tapez la commande suivante dans le terminal:

 xcode-select --install  et appuyer sur "Installer"


Pour utiliser Homebrew:
------------------------------

Une fois installé, il suffit de taper
 brew install <nom du paquet à installer> 

et repondre à l'affirmative au questions qui nous seront posées.

Pour verifier que brew s'est installé correctement, il faut lancer
  brew doctor 

dans le terminal et le rapport obtenu nous liste l'ensemble de ce qui s'est passé.

Pour supprimer un paquet, il suffit de faire     brew remove    dans le terminal

Pour actualiser la liste des paquets, il suffit de faire    brew update    et pour la mise à jour des paquets      brew upgrade    dans le terminal (comme sous Ubuntu avec "apt").

L'on peut aussi rechercher un logiciel dans le "magasin" avec la commande     brew search <nom du logiciel> 

Pour allez plus loin avec brew, rendez-vous sur le site officiel, de nombreux détails vous y attendent.

J'espère vous avoir été utile et à très bientôt...(°!°)