Sam & Max: Python, Django, Git et du cul » mac 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
Testez vos Webapp sur iPhone / iPad avec le Simulator iOS – [Mac] http://sametmax.com/testez-vos-webapp-sur-iphone-ipad-avec-le-simulator-ios-mac/ http://sametmax.com/testez-vos-webapp-sur-iphone-ipad-avec-le-simulator-ios-mac/#comments Mon, 14 Jan 2013 07:19:51 +0000 Max http://sametmax.com/?p=4120 La plupart d’entre vous le savent certainement mais moi je viens de le découvrir :)

Au début j’utilisais Ripple mais ce n’est pas de l’émulation, juste de l’encapsulage donc pas top.

Hier un pote me parle d’iOs Simulator , un émulateur iPhone / iPad livré avec Xcode. J’ai été surpris par la qualité de l’outil, un petit executable de 5 Mo qui émule très bien l’iPhone, l’iphone Retina ainsi que l’iPad.

Pour se le procurer c’est un peu galère, il faut télécharger Xcode (4GB!) dans le dev center, avoir un compte dev donc. ça se passe ici . C’est pas la mort mais y a plus simple…

Pour le trouver une fois installé..CHERCHEZ ! De tous les sites que j’ai parcouru aucun n’avait le même emplacement que moi, les dev de chez apple adorent faire des blagues. ça va donc dépendre de votre version de Xcode, de votre OS, du temps qu’il fait.
Un indice quand même c’est dans un des sous répertoires /Developer/ .
Moi il est dans /Developer/Platforms/iPhoneSimulator.platform/Developer/Applications et il se nomme “Simulateur iOS”

Pratique pour tester ses webapps sur iPhone / iPad

L’utilisation est nickel et j’ai pu corriger quelques bugs que je n’avais pas sur Ripple sous chrome ou même sous Safari. Ceci dit d’après un autre pote qui lui bosse en tant que dev sur les machines apple, rien ne vaut un appareil original, même avec l’émulateur il peut y avoir des problèmes.

Android a lui aussi un émulateur dans son SDK téléchargeable ici

Pour le lancer c’est un peu plus compliqué long car il faut configurer un appareil.

Une fois le SDK téléchargé, allez dans le répertoire adt-bundle-mac-x86_64/sdk/tools et lancez la commande ./android avd qui va avoir pour but de lancer le manager d’appareils, depuis ce manager vous allez pouvoir créer un nouvel appareil si il n’y en a pas déjà et le lancer (bouton “start”).

flattr this!

]]>
http://sametmax.com/testez-vos-webapp-sur-iphone-ipad-avec-le-simulator-ios-mac/feed/ 2
Effacer le cache DNS sous Mac Os http://sametmax.com/effacer-le-cache-dns-sous-mac-os/ http://sametmax.com/effacer-le-cache-dns-sous-mac-os/#comments Thu, 22 Nov 2012 21:17:30 +0000 Max http://sametmax.com/?p=3257 Si vous avez encore l’ancienne IP lorsque vous faites un ping sur un site c’est que votre cache DNS l’a mémorisée. Il faut parfois le réinitialiser (si vous changez votre site de serveur ou que vous ne pouvez plus accéder à un site en particulier).

Ouvrez un Terminal:
Dans Applications > Utilitaires > Terminal

et tapez:

lookupd -flushcache

Si ça ne marche pas essayez (pour les Mac plus récents):

dscacheutil -flushcache

Rappel:
la commande ping est toujours utile, c’est un outil qui sert à tester la conneciton entre 2 IPs.

ping yahoo.com
PING yahoo.com (72.30.38.140): 56 data bytes
64 bytes from 72.30.38.140: icmp_seq=0 ttl=42 time=275.592 ms
64 bytes from 72.30.38.140: icmp_seq=1 ttl=42 time=212.991 ms
64 bytes from 72.30.38.140: icmp_seq=2 ttl=42 time=255.605 ms

flattr this!

]]>
http://sametmax.com/effacer-le-cache-dns-sous-mac-os/feed/ 0
Internet Explorer 6, 7, 8, 9 Sous Mac/Linux Facilement avec VMWare Fusion http://sametmax.com/internet-explorer-6-7-8-9-sous-maclinux-facilement/ http://sametmax.com/internet-explorer-6-7-8-9-sous-maclinux-facilement/#comments Sun, 18 Nov 2012 16:26:36 +0000 Max http://sametmax.com/?p=3155 Quand on developpe des applications web on doit s’assurer de la compatibilité de ces dernières avec les différents navigateurs du marché. Jusqu’à présent sous MAC/Linux c’était pas évident de tester son application sur Internet Explorer.

J’ai essayé cross-over sous MAC qui ne vaut pas le coup à mes yeux (trop lent, plantage, pas compatible pour certaines versions d’IE, etc.), Wine sous Linux dont cross-over est un dérivé il me semble, mêmes galères.
Il y a aussi IETester qui a l’air pas mal pour avoir toutes les versions d’IE sur un seul navigateur mais il ne marche que sous Windows.

Les choses ont changées et Microsoft propose désormais gratuitement des Images de son Os Windows avec la version IE qui va bien.
La seule contrainte est qu’il faut posséder VMWare (ou VirtualBox GRATUIT), je conseille la version 5 pour 50 euros qui a un mode magique, le mode “Unity” qui fusionne votre Os émulé avec votre Os hôte, j’ai dans mon dock Mac une icône IE8, c’est trop mignon, fluide et pratique.
Une chose non négligeable c’est le copier/coller qui marche entre les deux OS.

Pratique pour voir si son site fonctionne sous IE depuis son Mac


Installation:

Rendez-vous chez Microsoft et téléchargez la version qui vous convient

Une fois les archives téléchargées vous les décompressées (avec The unarchiver sous Mac)

Dans VMWare vous sélectionnez “Ajouter > Importer” et vous importer l’image téléchargée, c’est celle qui comporte l’extension VHD (ex: Win7_IE8.vhd). Il va vous demander de convertir l’image etc, faites mouliner.

Attention:

Le mot de passe des OS est Password1 à taper en clavier QWERTY, si vous n’y arrivez pas, cliquez à gauche à l’écran d’accueil Windows sur l’espèce de petite roue et sélectionnez “Show keyboard”, un clavier virtuel va s’afficher et vous pourrez cliquer sur les touches.

Passez l’activation de windows il n’y en a pas besoin.

Pour éviter que sa copie arrive à expiration le mieux est de faire un Snapshot (sauvegarde de l’état de la Machine virtuelle à un instant T) dès la première installation de votre machine virtuelle.

Je dois dire que c’est plutôt sympa, car je peux coder sur mon Mac tout en testant le résultat sous IE comme si c’était une appli Mac.

NB: Si vous lancez un serveur web sous votre Mac et n’arrivez pas à y acceder depuis le navigateur IE, lancez le serveur sur le port 80 et l’ip de votre machine (192.168…..)

flattr this!

]]>
http://sametmax.com/internet-explorer-6-7-8-9-sous-maclinux-facilement/feed/ 15