Archives par mot-clé : Ligne de commande

Logo Git

Tips to dig into git log

Publié dans Développement | Laisser un commentaire

I am a regular user of git dag <sourcefilepath> to check all commits applying on a single source file. You can also do it with gitk <sourcefile> but I always find git dag more convenient.

git dag interface

Recently, I had to check the changes made on a specific line of a source file. I started digging into 7 years of commits… and obviously it was time to search for a better option 🙂

Fortunately, git log is really powerful.

First you can list commits with an impact on a specific function using the -L option. The diff are display immediately which is pretty handy. For example: git log -L:sendTcpRequest:src/evcc/Evcc.cpp. The -L option be used for numerous other stuff, please check git log --help.

This was still listing dozen of diff. The -G option allows to directly search on all the diffs and list related commit. For example git log -G "flush" Evcc.cpp was listing me 3 commits with a diff containing the word « flush ».

Picotech

libpicoipp installation error

Publié dans Geekeries | Un commentaire

Sur mon Debian bulleyes (encore « testing » pour l’instant, mais plus pour longtemps), je me suis récemment retrouvé avec une erreur étrange lors de la mise à jour de mon système :

$ sudo apt upgrade                                                                                                                  
Lecture des listes de paquets... Fait                                                                                               
Construction de l'arbre des dépendances                                                                                             
Lecture des informations d'état... Fait                                                                                             
Vous pouvez lancer « apt --fix-broken install » pour corriger ces problèmes.                                                        
Les paquets suivants contiennent des dépendances non satisfaites :                                                                  
 libps2000a : Dépend: libpicoipp (>= 1.3.0-4r78) mais 1.3.0-4r29 est installé                                                       
 libps3000a : Dépend: libpicoipp (>= 1.3.0-4r78) mais 1.3.0-4r29 est installé                                                       
 libps4000 : Dépend: libpicoipp (>= 1.3.0-4r78) mais 1.3.0-4r29 est installé                                                        
 libps4000a : Dépend: libpicoipp (>= 1.3.0-4r78) mais 1.3.0-4r29 est installé                                                       
 libps5000a : Dépend: libpicoipp (>= 1.3.0-4r78) mais 1.3.0-4r29 est installé                                                       
 libps6000 : Dépend: libpicoipp (>= 1.3.0-4r78) mais 1.3.0-4r29 est installé                                                        
 libps6000a : Dépend: libpicoipp (>= 1.3.0-4r78) mais 1.3.0-4r29 est installé                                                       
 picoscope : Dépend: libpicoipp (= 1.3.0-4r78) mais 1.3.0-4r29 est installé                                                         
E: Dépendances non satisfaites. Essayez « apt --fix-broken install » sans paquet                                                    
   (ou indiquez une solution).
Continuer la lecture

Enable WiFi on a Dell E7470 Laptop

Publié dans Geekeries | Un commentaire

When I received my new Dell Latitude E7470, I installed immediatly a Debian testing (Stretch) on it. This laptop, is really, really great, and is working like a charm with Linux. I still have to install manually a WiFi firmware iwlwifi-8000C. A simple « sudo dpkg -i *.deb », and it worked quite well!

Recently, in the beginning of 2017, a Debian update (maybe to due to testing freeze? Or something else?) has broken it… The WiFi was not available anymore, as if no WiFi board were loaded! Let’s fix this!

Latitude E7470

Continuer la lecture

VirtualBox

Quelques tips VirtualBox

Publié dans Geekeries | Laisser un commentaire

Partager des répertoires avec l’hôte

Configurer la machine virtuelle pour qu’elle accède à des dossiers de l’hôte  (Settings > Shared Folders) n’est pas suffisant pour que cela fonctionne ! Il faut aussi que l’OS de l’hôte l’accepte, et pour cela, il faut démarrer la machine virtuelle, puis dans la barre d’outil faire : « Devices > Insert Guest Additions CD image… ». Après avoir éventuellement télécharger ce que VirtualBox propose, VirtualBox devrait avoir chargé un fichier ISO dans le lecteur de CD virtuel. A vous de jouer pour l’installer !

Puis il faut encore avoir les droits pour accéder à ces dossiers :

sudo usermod -aG vboxsf $(whoami)

Reste à redémarrer ou se reloguer, et voilà !

Ah oui, une chose importante : la machine virtuelle ne peut créer de liens symboliques sur la machine hôte ! (pour des raisons de sécurité, cf. superuser) Cela peut se réactiver à l’aide de la commande suivante (pour chaque dossier partagé)(merci à Github) :

VBoxManage setextradata VM_NAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/SHARE_NAME 1

Donc par exemple pour pouvoir créer des liens symboliques sur le dossier hôte « MyDoc », je fais :

VBoxManage setextradata MyVMName VBoxInternal2/SharedFoldersEnableSymlinksCreate/MyDoc 1

Cela implique de redémarrer la VM.

Augmenter la taille d’un disque dur

Visiblement, ça marche assez bien et sans perte de données. En ligne de commande :

VBoxManage modifyhd YOUR_HARD_DISK.vdi --resize SIZE_IN_MB

Logo Git

Configuration de Git

Publié dans Geekeries | Laisser un commentaire

Configurer Git (un gestionnaire de version décentralisé qui change la vie), est particulièrement utile et pas si compliqué. Il suffit de modifier un fichier de configuration.
La configuration globale s’appliquant à tous les repository Git se trouve dans le fichier .gitconfig se trouvant dans votre dossier utilisateur (i.e. ~/.gitconfig). Celle-ci peut-être surchargée par une configuration spécifique à chaque repository, via le fichier .git/config de chaque repository.

Voici typiquement à quoi ressemble mon fichier de configuration globale :

[user]
	name = Fylhan
	email = bnmaster@ahahah.fr
[color]
	ui = always
	branch = always
	diff = always
	interactive = always
	status = always
[push]
	default = simple
[alias]
	co = checkout
	br = branch
	st = status
	ci = commit -a -m
	last = log -1 HEAD
	lasts = log -35 --pretty=tformat:"%C(red)%h%x20%C(magenta)%ad%C(auto)%d%x20%C(green)%s%C(white)%x20-%x20%an%C(auto)" --date=short --abbrev-commit --graph --decorate
	lastpull = !git lasts HEAD --stat --no-merges
	showtag = !sh -c 'git rev-parse $1 | xargs git cat-file -p' -
	unstage = reset HEAD --
	undo = git reset --soft HEAD^

Continuer la lecture

Atteindre la fin d’un document avec less

Publié dans Snippet | Laisser un commentaire
prompt$ less myDocument.text

Puis : shift+g

Extraire tous les fichiers ZIP d’un dossier en bash

Publié dans Snippet | Laisser un commentaire

Snippet

for file in *.zip; do 7z e "$file"; done

Explications

Il est possible d’utiliser la commande unzip, mais pour une plus grande efficacité et flexibilité, l’installation de 7zip est conseillé ! A la fin de l’installation, il faut ajouter le dossier de 7z à la variable d’environnement PATH afin de pouvoir y accéder en ligne de commande.

  • La commande pour extrait un fichier est 7z e filename.zip (ou unzip filename.zip). L’avantage de 7zip, c’est qu’il gère plusieurs formats d’archives.
  • La commande pour lister tous les documents du dossier courant est for nameOfTheVariable in .; do echo $nameOfTheVariable; done.
  • A partir de là, j’ai fait une boucle sur les fichiers se terminant par « .zip » exclusivement.

Windows – notification après une longue ligne de commande

Publié dans Geekeries | Laisser un commentaire

Comment être notifier facilement alors qu’on est allé se faire un café pendant l’exécution d’une looonnngue ligne de commande ? J’ai essayé de trouver un moyen de mettre la fenêtre en surbrillance (blink !) ou d’afficher une notification, même de jouer un son ! N’importe quoi ! Mais non… j’ai cherché longuement, sans succès. Jusqu’à aujourd’hui !!
SebSauvage a partagé un lien vers une proposition assez humoristique de fspot : Etre notifié de la fin d’une longue commande sous Windows – la solution du GROS pauvre.

> ma_longue_commande && notepad || mspaint

Ce qui aura pour effet d’ouvrir le bloc-note Windows en cas de succès (retour == 0) ou Paint en cas d’erreur. Pas bête !
Continuer la lecture

Base de données SQLite en ligne de commande sur Android

Publié dans Java | Laisser un commentaire

Imaginons que vous ayez un émulateur d’Android qui tourne actuellement sur votre machine, avec votre application en cours de développement, et que vous aimeriez voir ce qui se passe dans la base de données SQLite de votre application. Rien de plus simple grâce à quelques commandes SQLite.
Tout d’abord, il faut ouvrir votre shell favori (Sur Windows : Menu démarrer > Accessoires > Invite de commandes). Puis utilisez la commande suivante :

monShell>adb -e shell
#sqlite3 /data/data/android.societies/databases/societies.db
...
Ouverture SQLite
...
sqlite>... mes commandes SQLite ...

L’option -e signifie « l’émulateur actuellement ouvert. Donc si vous en avez plusieurs, ou si c’est un vrai téléphone qui est connecté à votre ordinateur : allez lire la doc pour voir comment faire. Comme ça, je dirais : adb devices pour avoir l’id des émulateurs et des téléphones en route. Puis adb -s [id séléctionné] shell. Après le comportement du shell peut varier sur un téléphone.

Quelques commandes SQLite utiles

  • .help: pour connaître la liste des commandes utiles !
  • .databases: listes des bases de données
  • .tables: liste les tables d’une base de données

Et bien sûr, toutes les commandes SQL de votre choix :

SELECT * FROM _table
DELETE FROM _table
REINDEX _table

Plus d’information

Logo Virgo

Virgo OSGi and command line

Publié dans OSGi | Laisser un commentaire

I already wrote about Virgo, a complete OSGi stack, based on Equinox and easily integrable on Eclipse (eh, it is done for that). Yes, it is possible to launch and manage our Virgo server using Eclipse (read: Let’s work OSGi Virgo on Eclipse), but if you try to launch a big project like Societies, you might may soon be blocked by an ugly Java « Out of memory ». This is because Eclipse is heavily using the Java memory, and if you launch your OSGi server using Eclipse, you increase again this memory usage.
So, what is the solution? It’s easy: don’t launch Virgo using Eclipse, launch it with command line. So, the server will have its own memory cluster. Lets do this.
Continuer la lecture