2010-06-30 7 views
3

Mon client a deux bureaux en Allemagne et aux États-Unis et un programme python devrait reconnaître l'emplacement du bureau. Quelle sera la façon la plus élégante de mettre en œuvre cela? Il suffit de reconnaître le pays. En outre, il pourrait également arriver qu'il n'y aura pas de connexion Internet permanente. Le programme fonctionne sur Windows mais la solution doit être indépendante.Comment reconnaître l'emplacement actuel en python?

Des suggestions? Merci

Répondre

5

AFAIK, il n'y a pas de solution élégante. Vous pouvez faire des suppositions éclairées, mais alors, prenez cet exemple: je débranche mon ordinateur portable en Allemagne et vais aux USA. Je le branche dans le bureau des États-Unis - les paramètres régionaux sont les mêmes, le fuseau horaire n'a pas changé, maintenant quoi?

Les choses dont vous pouvez faire une estimation:

  • paramètres régionaux et linguistiques (mais un Allemand aux Etats-Unis peuvent être en utilisant de_DE)
  • fuseau horaire (mais sommes-nous à New York ou au Brésil? même offset TZ, dans votre cas, (PDT/EDT) et CET est assez différent)
  • adresse IP interne (en supposant que vos bureaux ont un adressage interne différent (par exemple "10.5.20.0/24 - Allemagne, 192.168.4.0/24 - Etats-Unis "; que dire des VPN, qu'en est-il des périphériques non connectés?)
  • adresse IP externe (si vous besoin de précision à l'échelle USA/Europe, ceci est passable; bien sûr, réseaux privés virtuels désordre ce, et la question dit la connectivité externe peut ne pas être disponible)
  • tenir une liste dont l'ordinateur est là (en désordre et difficile à maintenir)
  • tenir une liste dont l'utilisateur est où
  • se rappeler où cet ordinateur était sur le dernier démarrage du programme (et si elle a été corrigée manuellement)

en attribuant un score à chacune de ces choses, et la vérification pour chacun, vous pourriez obtenir une probabilité partition où l'ordinateur est . Vous pourriez cependant avoir des suppositions incorrectes, alors faites aussi une commande manuelle.

Le score combiné peut être assez précis dans le cas général; ce que vous devez faire est de trouver les cas de bord et de coin, puis trouver un moyen de les identifier.

+0

C'est vrai! :(Jusqu'à présent, je tiens au nom de l'ordinateur car ils sont différents.Mais qui sait il pourrait arriver qu'ils seront unifiés dans le futur ... – koleto

+0

bon point. Je pense que dans ce cas, la liste déroulante permettant à l'utilisateur de changer de lieu manuellement (et peut-être stocker dans certaines préférences) est le meilleur moyen – dzida

+0

Oui, je vais mettre en œuvre de cette manière dans la prochaine fois ... Si je suis sûr que le time.timezone donnera une valeur positive aux Etats-Unis, il pourrait résoudre partiellement mon problème? – koleto

Questions connexes