:::: MENU ::::

Posts Categorized / Python

  • Jan 12 / 2015
  • 0
Linux, Python

Create an interactive command-line menu using PythonCréer un menu interactif en ligne de commande avec Python

It can be necessary to create a simple interactive menu on CLI (Command-Line Interface) using Python to allow users to make some choices while executing a script/program. As there is no standard library for this in Python, you will have to adapt it by yourself.

Here is a very simple example of how to do this. Feel free to modify, update and improve it as depending on your needs and your expectations ūüėČ !

Il peut parfois √™tre n√©cessaire de cr√©er un simple menu interactif en ligne de commande en utilisant Python pour permettre aux utilisateurs de faire des choix durant l’ex√©cution d’un script ou d’un programme. Etant donn√© qu’il n’existe pas de librairie standard pour cela en Python, vous devrez adapter le menu par vous-m√™me.

Voici un exemple tr√®s simple de comment proc√©der. Libre √† vous de le modifier, le mettre √† jour et l’am√©liorer selon vos besoins et vos attentes ūüėČ !

  • Dec 19 / 2014
  • 0
Python

Tools Center opening – URL Screenshot OnlineOuverture du Tools Center – Capture d’URL en ligne

I’m glad to announce the opening of the BG Go Further Tools Center right there:¬†BG Go Further Tools Center

You will find some projects I’m working on such as the first project:

URL Screenshot Online¬†– The ability to perform screenshot of your favorite websites without any tool, only using a form and/or an API to integrate it in your own website ūüėČ ! Some cache mechanisms will allow you to optimize requests when asking for a screenshot already performed (very useful in case of high traffic website for example!)

201412191044_f55e5aae145ce6b872d2088bec11415f_crop

Feel free to send me any feedback!Je suis heureux d’annoncer l’ouverture du BG Go Further Tools Center disponible ici :¬†BG Go Further Tools Center

Vous y trouverez différents projets sur lesquels je travaille tel que le premier projet :

URL Screenshot Online¬†– La possibilit√© d’effectuer des captures de vos sites favoris sans aucun outil sp√©cifique, simplement en utilisant un formulaire et/ou une API pour l’int√©grer sur votre propre site web ūüėČ !¬†Des m√©canismes de cache vous permettront d’optimiser les requ√™tes lors de l’appel de capture d√©j√† effectu√©e auparavant (tr√®s utile dans le cas de site web √† fort trafic par exemple !)

201412191044_f55e5aae145ce6b872d2088bec11415f_crop

Feel free to send me any feedback!

  • Oct 07 / 2014
  • 0
Python

Use FTPS (SSL/TLS) with Python 2.6Utiliser FTPS (SSL/TLS) avec Python 2.6

By default, Python 2.6 does not permit to open an FTPS connection (using SSL/TLS) and restricts the use of non secure protocol FTP.
However, it’s possible to get around this lack by using the FTP library available since version 2.7, which is fully compatible and supported with 2.6.

You can get the library directly from official sources or through the link below:
http://www.bggofurther.com/wp-content/uploads/2014/10/ftplib.zip

Once the library copied (you can either replace the existing library or integrate it locally), you can so open an FTPS connection by using the FTP_TLS library. For example:

You can so maintain your applications running with Python 2.6 and use a secure connection for FTP!Par d√©faut, Python 2.6 ne permet pas d’ouvrir une connexion utilisant FTPS (SSL/TLS) et restreint donc l’utilisation du protocole en mode non s√©curis√© FTP.
Il est cependant possible de contourner ce manque en utilisant la librairie FTP disponible depuis la version 2.7, qui est compatible et supportée en 2.6.

Vous pouvez récupérer la librairie directement depuis les sources officielles ou via le lien suivant :
http://www.bggofurther.com/wp-content/uploads/2014/10/ftplib.zip

Une fois la librairie copi√©e (vous pouvez soit remplacer la librairie existante, soit l’int√©grer localement), vous pouvez alors ouvrir une connexion FTPS en utilisant la librairie FTP_TLS. Par exemple¬†:

Vous pouvez ainsi maintenir vos applications fonctionnant sous Python 2.6 en utilisant une connexion FTP sécurisée !

  • Mar 14 / 2014
  • 0
Python, web2py

Unserialize web2py requests and allow concurrent accessDésérialiser des requêtes web2py et permettre des accès concurrents

With a default configuration for your web2py application, you will notice that when you are launching an action, if this one is quite long to execute, you won’t be able to open a new tab to run another request on the same application. This can be explained because when you are launching an action, your browser is sending session informations to the server and your session file on server-side is so opened in writing mode for being updated. A lock is set on this file, blocking any other action to be executed for this session while the lock is not released.

This problem is effectively not existing if you are using a database for your session management instead of a file system. To use a database system, you just need to declare your database:

and initiate the connection to this database for sessions:

A table will so be automatically created, named web2py_session_appname and will contain following fields:

If you want to use the file system for your sessions, you will need to use the following command to allow the session file release:

You will notice that this command must only be called if the action you want to execute do not require to session informations. For example, if you are loading dynamically some contents via Ajax calls on several parts of the page, you can add this command for each call to allow the concurrential execution knowing that the connection informations are saved while main page is loading.

As testing, you can use following code:

If you’re calling previous code by deleting the session.forget() command call, you will get this as a result:

If you’re calling the same code with the session.forget() command call, you will get:

We can notice that between both cases, we have a concurrential execution thanks to the session.forget() function, and that we can hardly optimize the page loading time.

Please note that most of browsers won’t allow you to execute more than 6 requests at the same time, hence the result we are getting with the last test where we can see that the six first requests are executed together whereas the following ones are executed afterwards (on a second flow but concurrent also).Avec une configuration par d√©faut de votre application Web2py, vous pourrez noter que lorsque vous lancez une action, si celle-ci prend un peu de temps √† s’ex√©cuter, vous ne pouvez pas ouvrir un nouvel onglet de votre navigateur pour ex√©cuter une autre requ√™te sur la m√™me application. Ceci est d√Ľ au fait que lorsque vous ex√©cutez une action, votre navigateur transmet vos informations de session au serveur et votre fichier de session c√īt√© serveur est donc ouvert en √©criture pour √™tre mis √† jour. Un verrou est donc mis en place sur le fichier, emp√™chant toute autre action de d√©marrer tant que le verrou n’est pas l√Ęch√©.

Ce problème ne se présente donc effectivement pas si vous utilisez un système de gestion des sessions sur une base de données et non sur un système de fichiers. Pour utiliser un système de bases de données, il vous faut pour une base de données déclarée :

initier la connexion sur cette base pour les sessions :

Une table va alors être automatiquement créée, sera appelée web2py_session_appname et contiendra les champs suivants :

Si vous souhaitez utiliser le système de fichiers de session, il vous faudra alors utiliser la commande suivante pour permettre de libérer ce fichier de session :

Notez bien que cette commande ne doit √™tre appel√©e que si l’action ex√©cut√©e ne n√©cessite pas d’informations de session. Par exemple, si vous chargez du contenu dynamiquement via des appels Ajax √† diff√©rents endroits de la page vous pouvez ajouter cette commande pour chaque appel afin de permettre leur ex√©cution concurrentielle sachant que les informations de connexion sont enregistr√©es sur le chargement de la page principale.

Pour tester, vous pouvez utiliser le code suivant :

Si vous appelez le code précédent en enlevant la commande session.forget() vous obtiendrez le résultat suivant :

Si vous appelez le même code en laissant la commande session.forget() vous obtiendrez alors :

On constate donc bien qu’entre les deux cas, nous avons une ex√©cution concurrentielle fonctionnelle gr√Ęce √† la fonction session.forget() et que la dur√©e d’ex√©cution de la page peut, de fait, √™tre fortement optimis√©e.

Notez bien que la plupart des navigateurs ne permettra pas d’ex√©cuter plus de 6 requ√™tes en m√™me temps, d’o√Ļ le r√©sultat du dernier test o√Ļ l’on constate que les 6 premi√®res requ√™tes sont ex√©cut√©es ensemble alors que les suivantes sont ex√©cut√©es ensuite (sur un deuxi√®me flot mais √©galement en concurrence).

  • Jan 27 / 2014
  • 0
Python, web2py

Web2py frameworkFramework Web2py

Do you like web development and Python ? You’re looking for a framework free, complete and in a constant evolution (features, security, …) ? So Web2py is for you !

web2py is a free, open-source web framework for agile development of secure database-driven web applications; it is written in Python and programmable in Python. web2py is a full-stack framework, meaning that it contains all the components you need to build fully functional web applications.

web2py is designed to guide a web developer to follow good software engineering practices, such as using the Model View Controller (MVC) pattern. web2py separates the data representation (the model) from the data presentation (the view) and also from the application logic and workflow (the controller). web2py provides libraries to help the developer design, implement, and test each of these three parts separately, and makes them work together.

web2py is built for security. This means that it automatically addresses many of the issues that can lead to security vulnerabilities, by following well established practices. For example, it validates all input (to prevent injections), escapes all output (to prevent cross-site scripting), renames uploaded files (to prevent directory traversal attacks). web2py takes care of main security issues, so developers have less chances of introducing vulnerabilities.

web2py includes a Database Abstraction Layer (DAL) that writes SQL¬†dynamically so that you, the developer, don’t have to. The DAL knows how to generate SQL transparently for SQLite, MySQL, PostgreSQL, MSSQL, FireBird, Oracle, IBM DB2, Informix¬†and Ingres.

The DAL can also generate function calls for the Google Datastore when running on the Google App Engine (GAE). Experimentally we support more databases and new ones are constantly added. Please check on the web2py web site and mailing list for more recent adapters. Once one or more database tables are defined, web2py automatically generates a fully functional web-based database administration interface to access the database and the tables.

web2py differs from other web frameworks in that it is the only framework to fully embrace the Web 2.0 paradigm, where the web is the computer. In fact, web2py does not require installation or configuration; it runs on any architecture that can run Python (Windows, Windows CE, Mac OS X, iOS, and Unix/Linux), and the development, deployment, and maintenance phases for the applications can be done via a local or remote web interface. web2py runs with CPython (the C implementation) and PyPy (Python written in Python), on Python versions 2.5, 2.6, and 2.7.

web2py provides a ticketing system for error events. If an error occurs, a ticket is issued to the user, and the error is logged for the administrator.

web2py is open source and released under the LGPL version 3 license.

Official website : Official Website Web2py
Informations source :¬†Web2py BookVous aimez le d√©veloppement web et le python ? Vous recherchez un framework libre, complet et en constante √©volution (fonctionnalit√©s, s√©curit√©, …) ? Alors¬†Web2py est fait pour vous !

Web2py¬†est un framework web libre et open-source pour le d√©veloppement agile et s√©curis√© d’applications web pilot√©es par base de donn√©es; il est √©crit en Python¬†et programmable en Python. web2py est un framework complet, contenant donc tous les composants n√©cessaires pour construire des applications web totalement fonctionnelles.

web2py est con√ßu pour guider le d√©veloppeur web √† suivre les bonnes pratiques de l’ing√©nierie logicielle, telles que l’utilisation du pattern Mod√®le Vue Contr√īleur (MVC). web2py s√©pare la repr√©sentation des donn√©es (mod√®le) de la pr√©sentation des donn√©es (la vue) et √©galement de la logique applicative et de ses flux de travail (le contr√īleur). web2py fournit des librairies pour aider le d√©veloppeur √† dessiner, impl√©menter et tester chacune des trois parties s√©par√©ment, et les faire fonctionner ensemble.

web2py est construit pour la s√©curit√©. Cela signifie qu’il √©limine automatiquement la plupart des probl√®mes qui peuvent amener √† des failles de s√©curit√©, en suivant des pratiques bien √©tablies. Par exemple, toute entr√©e est valid√©e (pour √©viter les injections), toute sortie est contr√īl√©e (pour √©viter le cross-site scripting), et tout fichier upload√© est renomm√© (pour √©viter toute attaque traverse de r√©pertoire√†. web2py fait attention aux principaux probl√®mes de s√©curit√©, afin que les d√©veloppeurs aient le moins de chande d’introduire des failles dans leur d√©veloppement.

web2py inclut une couche d’abstraction √† la base de donn√©es (Database Abstraction Layer -DAL) qui √©crit les requ√™tes SQL¬†dynamiquement afin que vous, d√©veloppeurs, n’ayez pas √† le faire. Cette couche d’abstraction (DAL) sait parfaitement comment g√©n√©rer les requ√™tes SQL de mani√®re transparente pour SQLite, MySQL, PostgreSQL, MSSQL, FireBird, Oracle,¬†IBM DB2, Informix¬†et Ingres.

La couche d’abstraction peut √©galement g√©n√©rer des appels de fonction pour le Datastore Google lorsqu’elle fonctionne sur les Google App Engine (GAE). De mani√®re exp√©rimentale, nous supportons plus de bases de donn√©es et de nouvelles sont constamment ajout√©es. Veuillez v√©rifier le site web de web2py et la mailing list pour trouver les connecteurs les plus r√©cents. Une fois qu’une ou plusieurs tables ont √©t√© d√©finies, web2py g√©n√®re automatiquement une interface d’aministration web compl√®te pour acc√©der √† la base de donn√©es et aux tables.

web2py diff√®re des autres frameworks web du fait que ce soit le seul √† totalement adopter le paradigme Web 2.0, o√Ļ le web est l’ordinateur. En fait, web2py ne n√©cessite aucune installation ou configuration; il fonctionne sur n’importe quelle architecture qui peut ex√©cuter du Python (Windows, Windows CE, Mac OS X, iOS, et Unix/Linux), et le d√©veloppement, le d√©ploiement, et les phases de maintenance phases pour les applications peuvent √™tre faites via une interface web locale ou distante. web2py fonctionne avec CPython (l’impl√©mentation C) et PyPy (Python √©crit en Python), sur les versions Python 2.5, 2.6, et 2.7.

web2py fournit un syst√®me de tickets pour les erreurs remont√©es. Si une erreur survient, un ticket est attribu√© √† l’utilisateur et l’erreur est enregistr√©e pour l’administrateur.

web2py est open source et distribué sous la licence LGPG version 3.

Site officiel de Web2py : Site Officiel Web2py
Source d’informations : Web2py Book

Pages:12
Question ? Contact