Sam & Max: Python, Django, Git et du cul » linux http://sametmax.com Deux développeurs en vadrouille qui se sortent les doigts du code Wed, 05 Feb 2014 14:20:37 +0000 en hourly 1 http://wordpress.org/?v=3.3.1 Ouvrir un fichier avec le bon programme en Python http://sametmax.com/ouvrir-un-fichier-avec-le-bon-programme-en-python/ http://sametmax.com/ouvrir-un-fichier-avec-le-bon-programme-en-python/#comments Thu, 17 Oct 2013 10:09:59 +0000 Sam http://sametmax.com/?p=7469 Votre logiciel doit permettre d’ouvrir un fichier avec un programme externe. Oui mais lequel ?

Les OS ont des réglages par défaut pour chaque type de fichier, et on peut demander “ouvrir le prog pour ce type de fichier par défaut”. Par exemple, moi, si je demande d’ouvrir un fichier vidéo, je m’attend à ce que VLC soit lancé.

Voilà comment faire ça en Python :

import subprocess
import sys
import os
 
def run_file(path):
 
    # Pas de EAFP cette fois puisqu'on est dans un process externe,
    # on ne peut pas gérer l'exception aussi facilement, donc on fait
    # des checks essentiels avant.
 
    # Vérifier que le fichier existe
    if not os.path.exists(path):
        raise IOError('No such file: %s' % path)
 
    # On a accès en lecture ?
    if hasattr(os, 'access') and not os.access(path, os.R_OK):
        raise IOError('Cannot access file: %s' % path)
 
    # Lancer le bon programme pour le bon OS :
 
    if hasattr(os, 'startfile'): # Windows
        # Startfile est très limité sous Windows, on ne pourra pas savoir
        # si il y a eu une erreu
        proc = os.startfile(path)
 
    elif sys.platform.startswith('linux'): # Linux:
        proc = subprocess.Popen(['xdg-open', path], 
                                 # on capture stdin et out pour rendre le 
                                 # tout non bloquant
                                 stdout=subprocess.PIPE, stderr=subprocess.PIPE)
 
    elif sys.platform == 'darwin': # Mac:
        proc = subprocess.Popen(['open', '--', path], 
                                stdout=subprocess.PIPE, stderr=subprocess.PIPE)
 
    else:
        raise NotImplementedError(
            "Your `%s` isn't a supported operatin system`." % sys.platform)
 
    # Proc sera toujours None sous Windows. Sous les autres OS, il permet de
    # récupérer le status code du programme, and lire / ecrire sur stdin et out
    return proc

C’était le petit snippet sympas du jour !

P.S : si quelqu’un utilise BDSM BSD ou Solaris, je veux bien qu’il complète le snippet.

flattr this!

]]>
http://sametmax.com/ouvrir-un-fichier-avec-le-bon-programme-en-python/feed/ 16
Tiens, je suis toujours sur OSX http://sametmax.com/tiens-je-suis-toujours-sur-osx/ http://sametmax.com/tiens-je-suis-toujours-sur-osx/#comments Wed, 19 Jun 2013 11:23:42 +0000 coyote http://sametmax.com/?p=6419 Ceci est un post invité de coyote posté sous licence creative common 3.0 unported.

Attention: ce qui suit est un billet d’humeur personnel. Prenez le comme tel…

Je suis un linuxien. Pas un activiste, mais tout de même un fervent défenseur du logiciel libre et de Linux (oui pour moi écrire GNU/Linux partout c’est pédant et inutile – et ça te fait passer pour un gros nazi.). J’ai même créé une association de défense du libre, un LUG et fait switcher de très nombreuses personnes.

Mais alors, bordel, que fais-je sur1 OSX ?

1 Si quelqu’un a une règle pour décrire rapidement que l’on utilise un OS, en lieu et place de “sur Ubuntu”, “sous Windows’”, etc ; qu’il la balance car c’est juste insupportable.

Tout à commencé sans doute quand j’ai découvert Sublime Text (merci Sam!). J’ai alors rompu mon workflow entièrement libre pour y intégrer un outil proprio, mais fantastique et dont je me suis précipité pour payer la licence afin de remercier le développeur pour cette bouffée d’oxygène.

J’utilise régulièrement des Mac comme machine depuis plusieurs années (2003?) et ce pour plusieurs raisons:

  • C’est propre. Pas de sticker dégueulasse, de look plastique ou autre.
  • C’est une grande marque avec peu de modèles: l’assurance d’avoir un support pour Linux relativement rapidement.
  • C’est de bonne qualité (oui il y a toujours des exceptions), ça dure longtemps et ça se revend pas trop mal.
  • Le connecteur d’alim aimanté ; tous ceux qui ont déjà cassé un laptop à cause de ça comprendront…
  • Je fais un peu de dev multiplateforme (libre!) et il faut toujours tester/ajuster sur OSX.

Me voilà donc avec une machine Mac dont je suis satisfait, faisant tourner un Ubuntu que j’adore avec un dual boot que j’utilise dans les aéroports ou autre car la conso batterie est incomparable entre Ubuntu et OSX.

Linux a toujours eu des petits problèmes, la batterie dont je parlais, le WiFi, le suspend/hibernation, etc. Rien d’insurmontable pour quelqu’un de convaincu.

L’aigle noir

Soudain, je sais plus exactement vers quelle version, je crois que c’était la 10.10, Ubuntu a commencé à devenir de plus en plus pénible et les nouvelles versions n’ont fait qu’accroitre la frustration.

Le passage à Unity a été difficile, et le fait de tester d’autres alternatives (XFCE, Xmonad) permet de se rendre compte à quel point Ubuntu est intégré: beaucoup de composants ne sont plus vraiment interchangeable ou alors au prix de gros efforts de configurations voir de hacks. En bref, Ubuntu, c’est bien si tu y touches pas trop.

Au fil des versions, des nouveaux problèmes, des fonctionnalités perdues, toute tentative montrant à quel point Ubuntu s’écarte du Linux modulaire, j’ai décidé de franchir le Rubicon et de tester d’autres distros.

Pour faire (très) court :

  • Toutes les non-debian ne m’ont pas plus: la gestion des paquets est contre-productive pour moi qui ait des années d’apt dans les dents. Surtout, c’est lent comme la mort. Incroyablement lent en 2013 ; WTF?
  • Les debian-ubuntu-based: la plupart sont des customisations d’Ubuntu avec des paquets différents, des thèmes et des outils. J’ai pas vu d’avantages vraiment et toutes ont des petits désagréments supplémentaires, sans compter que les problèmes spécifiques sont dur à résoudre car ils ont peu d’utilisateurs.
  • debian ; j’ai beaucoup aimé car c’est très simple, la modularité est là, la vitesse aussi ; c’est bien intégré. Malheureusement, la gestion non souple des paquets (soit tout est vieux, soit tout est jeune) couplé avec l’absence de PPA (les PPA, c’est génial!) font que j’ai renoncé.

Archlinux

Je suis donc resté sur Archlinux. J’avais utilisé un peu par le passé et ça correspondait bien à ce que je voulais actuellement: quelque chose de propre, documenté ou je savais qu’en cas de problème, je pourrais l’identifier facilement.

Archlinux m’a prit du temps pour le configurer. C’est sans doute ce qui m’a le plus dérangé car j’utilise mon laptop pour travailler, pas pour geeker. Une journée de perdue à configurer la machine, c’est une journée de travail en moins avec des conséquences en sousous.

Mais j’étais satisfait d’Archlinux, c’était effectivement beaucoup plus simple et clair qu’Ubuntu. J’ai pu faire fonctionner des petites choses qui marchaient pas avec Ubuntu ; j’avais un Gnome à jour, etc.

Mais, car il y a toujours un mais ; Archlinux a aussi ses problèmes: il veut que vous soyez à jour, et vous avez pas intérêt à le contrarier ; mais en même temps, il faut vérifier ce qu’il fait donc re-perte de temps.

Au fil du temps, les problèmes des logiciels récents se faisaient plus frustrants ; une version qui marche ; une qui marche pas, etc.

Quand je me suis rendu compte que je devais redémarrer ma machine plus d’une fois par semaine, et que je perdais vraiment du temps avec des bêtises, je me suis dis “oh et puis merde, je vais mettre OSX!” (oui je reste relativement poli dans ma tête).

Le trou noir

J’ai formatté ma machine sur un coup de tête, un week-end, pour voir si vraiment Linux devenait de la fiente d’âne ou si c’était partout pareil. Je me suis dis, ce sera l’occasion de voir à quoi ressemble la concurrence, de voir comment se comporte cette machine dans son environnement naturel (genre voir ce que ça fait d’utiliser un SSD qui a couté la peau du Q). Je voulais tester ça une semaine, deux tout au plus.

C’était il y a des mois déjà. Je sais plus trop quand. Janvier ? Février ? Je ne m’en souviens pas car je ne pense plus à ma machine. Je l’oublie complètement.

Bien sûr, au début, je raillais ce système et ses perversions (installer GCC nécessite de passer par un Store à la con), et puis, passé les deux premiers jours de setup, je l’ai oublié. Le matin, j’arrive au boulot, la machine est là, allumée, prête, rapide, disponible. Je travaille, et je lui clou le bec en partant, chose qui ne marchait pas avant.

Je peux me promener avec sans craindre pour la batterie, je peux utiliser le Wifi à tout moment (pas besoin de patcher le kernel dans un hôtel), je peux faire de la visio-conf sans jongler avec 2 outils PulseAudio, le trackpad marche à merveille, le tout démarre en mois de 10s, j’ai mon Sublime Text, mon terminal, mon ipython et toute sa clique, bref, c’est le bonheur.

Je ne sais pas quand je vais retourner sous Linux ; la simple idée de me retaper le setup à l’envers alors que je suis si productif maintenant me donne la nausée. Je n’ai même pas été tenté à la sortie du 13.04. Tout juste ais-je pris le temps de lancer le Live-CD dans VirtualBox.

Bien sûr, tout n’est pas rose, je connais bien les arcanes de Linux, mais pas celles d’OSX ; dès qu’il y a une dépendances bizarre dans un projet (genre opencv), je prends peur car tout n’est pas aussi bien packagé, ou aussi facilement compilable, etc mais finalement, ça n’arrive pas très souvent.

Vous m’avez lu jusqu’ici, bravo, je n’ai pas écris tout ça pour vous convaincre de quoi que ce soit ou pour me justifier. Je suis toujours autant dérangé par Apple, je ne me sens pas à l’aise en utilisant OSX, mais je peux enfin utiliser ma machine comme l’outil de dev qu’il devrait être et rien d’autre ; c’est un soulagement très grand.

J’espère retrouver dans les commentaires de ce billet vos frustrations concernant Linux et pourquoi pas ce que vous faites pour y remédier (Punching Ball?).

flattr this!

]]>
http://sametmax.com/tiens-je-suis-toujours-sur-osx/feed/ 79
Synchroniser son serveur avec ntp sous Linux http://sametmax.com/synchroniser-son-serveur-avec-ntp-sous-linux/ http://sametmax.com/synchroniser-son-serveur-avec-ntp-sous-linux/#comments Wed, 15 May 2013 07:32:53 +0000 Max http://sametmax.com/?p=1086 NTP (Network Time Protocol) est un protocole utilisé pour synchroniser l’heure de votre système en utilisant un serveur en ligne. Cet article explique comment l’installer et le configurer sur un système d’exploitation Linux.

1. Installation

Pour installer le service ntp, ouvrez un terminal en root.

Sous Ubuntu:

sudo apt-get install ntp


2. Utilisation

La configuration de ntp se trouve généralement dans le fichier /etc/ntp.conf. On peut y ajouter de nouveaux serveurs de temps, en ajoutant une ligne similaire à celle-ci par exemple :

server 0.fedora.pool.ntp.org dynamic

Démarrez ensuite le service avec cette commande afin de synchroniser la date et l’heure (Attention, il faut plusieurs minutes avant que l’heure soit synchronisée) :

/etc/init.d/ntpd start

On pourra ensuite vérifier que l’heure est correcte avec la commande “date”:

[sm@web1 ~]# date
Wed May 15 07:21:15 UTC 2013
[sm@web1 ~]#

Note : en cas de problème, on pourra vérifier le bon fonctionnement avec la commande ntpstat qui donnera des informations sur le statut du service ntp :

[sm@web1 ~]# ntpstat
synchronised to NTP server (213.161.194.93) at stratum 4
time correct to within 562 ms
polling server every 64 s

A quoi ça sert ?

Dans notre cas nous avons des sites qui hébergent du contenu avec des urls qui expirent au bout d’un certainstemps.
La création de ces urls à durée de vie comptée est faite depuis le serveur web, le contenu se trouvant sur d’autres serveurs.
ntp dans ce cas nous assure que tous les serveurs seront calés sur la même heure, ce qui évite de générer des urls déjà expirées si un des serveurs de contenu n’était pas à l’heure.

flattr this!

]]>
http://sametmax.com/synchroniser-son-serveur-avec-ntp-sous-linux/feed/ 4
Les usages légaux de BitTorrent http://sametmax.com/les-usages-legaux-de-bittorrent/ http://sametmax.com/les-usages-legaux-de-bittorrent/#comments Sat, 15 Sep 2012 15:08:18 +0000 Sam http://sametmax.com/?p=2094 BitTorrent est diabolisé, mais c’est comme la télévision: ce n’est pas parce que la majorité des gens en font un mauvais usage qu’il faut considérer que c’est une technologie satanique.

Déploiement de code

BitTorrent à cela de merveilleux que plus il y a de personnes qui téléchargent, plus le téléchargement est rapide. Pour cette raison, les grandes entreprises l’utilisent pour déployer leur code en productions sur leurs centaines de serveur, avec des gains de vitesse allant jusqu’à 7500 %.

Twitter et Facebook sont connus pour utiliser le protocole p2p pour économiser exactement ça.

Distribution de patch et vente de jeux

On pense toujours que le peer to peer ce n’est pas pour le kikoo lol moyen, que c’est compliqué. Mais en fait énormément de Kevin de base utilisent BitTorrent sans le savoir.

La raison ?

Capture d'écran du logiciel de mise à jour des jeux Blizzard

Vous jouez à Wow, SC2 ou Diablo 3 ? Vous utilisez BitTorrent !

Blizzard utilise en effet BitTorrent dans son fameux logiciel “Blizzard downloader” pour distribuer les installeurs des jeux vendus sur Battle.net, mais également toutes les mises à jour des dit jeux.

Quand on a des millions de joueurs qui sont du coup autant de serveurs, on économise un MAX de pognon. On parle de millions d’euros là.

Distribution d’iso

Quelqu’un qui surf sur Internet (60% des serveurs Web dans le monde), utilise un téléphone Android ou regarde une vidéo sur sa Freebox utilise Linux. Or l’acquisition d’une ISO d’installation Linux se fait massivement à travers BitTorrent, pour justement éviter de surcharger les éditeurs de distro qui ont un budget limité. Votre serviteur tape d’ailleurs cet article sur une Ubuntu installé depuis une ISO téléchargée via BitTorrent.

D’une manière générale, si on a un gros fichier à partager sur un blog, le mettre à disposition via BitTorrent est ce qu’il y a de plus pratique, ça évite de tuer son hébergement. Pour cette raison, Amazon S3 le supporte par défaut.

Potentiel

Parce que des gens stressés par la mutation des mœurs ne voient pas plus loin que le bout de leur narines, et parce que “BitTorrent, c’est surtout utilisé pour pirater, il faut pas déconner”, cette technologie est largement sous exploitée. On pourrait faire la mise à jour de tous les logiciels avec, même la mise à jour des OS, et carrément l’intégrer dans les gestionnaires de paquets. On pourrait faire du streaming avec: chaque visionneur repartageant des paquets, et allégeant la charge des fournisseurs de VOD.

Si l’usage de BitTorrent se généralise, ce sont des économies à l’échelle du monde qui seront réalisées, mais aussi l’opportunité pour plein de “petits” de mettre à disposition du gros contenu pour le grand public. Ce serait fabuleux que tous les navigateurs intègrent le téléchargement BitTorrent par défaut, comme le fait Opéra (qui est d’ailleurs aussi téléchargeable en torrent). Parce que pour le moment, allez proposer à mamie de télécharger un truc avec BitTorrent… J’ai expliqué à mon père il y a quelques semaines, lui qui pourtant sait ce que c’est qu’un cable SCSI et qui a été le premier à utiliser CloneCD en son temps, il a eu du mal.

Pour le moment, les ports sont souvent bloqués, le protocole est souvent bridé, les applications censurées sur les appstores, et tout ce potentiel est perdu.

Chers éditeurs de contenu, même dans le cas improbable ou vous gagniez la bataille de la maîtrise du Net, empêchant les méchants pirates de vous voler de quoi vous acheter votre prochain coupé sport, j’ai toujours un disque dur externe et des amis. Qui en ont aussi.

Donc puisque vous ne pouvez pas arrêter le piratage sans transformer le pays en dictature stalinienne, ayez au moins la décence de laisser tranquille des technologies brillantes et extraordinairement utiles pour tous. C’est peut être un détail pour vous, mais pour nous ça veut dire beaucoup.

 

flattr this!

]]>
http://sametmax.com/les-usages-legaux-de-bittorrent/feed/ 11
Liste des partitions, de leur type, de la place restante sous Linux – df / du http://sametmax.com/liste-des-partitions-de-leur-type-de-la-place-restante-sous-linux-df-du/ http://sametmax.com/liste-des-partitions-de-leur-type-de-la-place-restante-sous-linux-df-du/#comments Mon, 10 Sep 2012 01:36:48 +0000 Max http://sametmax.com/?p=2049 Quelques commandes sympa sous Linux pour connaître les ressources disque de son serveur.

la commande df:
Retourne l’espace disque utilisé par chaque partition montée sur votre machine.

-h Affiche les résultats sous forme humainement lisible :)
-T indique le type de système de fichiers utilisé

df -hT
Sys. fich.    Type  Taille  Uti. Disp. Uti% Monté sur
/dev/sda2      xfs     20G  2,9G   17G  15% /
tmpfs        tmpfs    3,9G     0  3,9G   0% /dev/shm
/dev/sda1      xfs    192M   28M  164M  15% /boot
/dev/sda4      xfs    1,8T  220G  1,6T  12% /data

la commande du:
Retourne l’espace disque utilisé par un répertoire

-h Affiche les résultats sous forme humainement lisible :)
-s affiche la somme des fichiers du répertoire

du -hs /boot/
18M	/boot/

Edit:
Pour le côté prog on peu utiliser psutil en python qui permet tout un tas d’acceès aux infos de la machine.
Merci François

flattr this!

]]>
http://sametmax.com/liste-des-partitions-de-leur-type-de-la-place-restante-sous-linux-df-du/feed/ 14