Saturday, October 24, 2015
Running multiple python apps with nginx and uwsgi in emperor mode
Quote from site
Wednesday, October 14, 2015
Turn a function in asynchrounous mode
https://pykodz.wordpress.com/2010/11/15/async-decorator/
#!/usr/bin/env python # -*- coding: utf-8 -*- from threading import Thread from time import sleep class async(Thread): def __init__(self, callback, errback): super(async, self).__init__() self.callback = callback self.errback = errback def __call__(self, func): # à l'appel de la fonction, on récupère juste la fonction # et ses arguments, et on lance notre thread def wrapper(*args, **kwargs): self.func = func self.args = args self.kwargs = kwargs self.start() return wrapper def run(self): try: retval = self.func(*self.args, **self.kwargs) self.callback(retval) except Exception as err: self.errback(err) def my_callback(retval): print "CALLBACK:", retval # ici on peut faire des opérations supplémentaires # sur la valeur renvoyée par la fonction. # ce code est appelé par le thread, il ne peut donc # pas bloquer notre thread principal def my_errback(err): print "ERRBACK", err # ici on peut re-lancer l'exception, ou simplement # l'ignorer. Ce code est également appelé dans le thread @async(my_callback, my_errback) def ma_fonction_reussie(n): sleep(n) return n @async(my_callback, my_errback) def ma_fonction_foireuse(n): sleep(n) raise AttributeError("Got %s, expected 'foo'" % n) ma_fonction_reussie(5) ma_fonction_foireuse(7) # histoire de passer le temps pendant ce temps là... for i in range(10): print "MAIN:", i sleep(1)
Remote command with Paramiko-Expect
https://www.snip2code.com/Snippet/430662/Python-3-x-SSH-with-Paramiko---Paramiko-
#!/usr/bin/env python # PyNet Class Exercises by Nick Ellson __author__ = "Nick Ellson" import paramiko from paramikoe import SSHClientInteraction import getpass # Collect an target, user, and password. This example assumes that privilege level 15 is on your Cisco VTY. ip = input("Enter Host: ") username = input("Enter Username: ") password = getpass.getpass() #Initialize teh Paramiko connection remote_conn_pre = paramiko.SSHClient() remote_conn_pre.set_missing_host_key_policy(paramiko.AutoAddPolicy()) remote_conn_pre.connect(ip, username=username, password=password, allow_agent=False, look_for_keys=False) print ("SSH connection established to %s" % ip) # Here we make a simple Paramiko only shell because we do not yet have a prompt example to work with for Expect. # So this will basically log us in, and grab that prompt that we land with, and disconnect. remote_conn = remote_conn_pre.invoke_shell() output = remote_conn.recv(1000).decode("utf-8") prompt = output.strip() remote_conn.close() # Now we reconnect with the paramiko expect module and we have a nice interactive conversation. remote_conn_pre.connect(ip, username=username, password=password, allow_agent=False, look_for_keys=False) interact = SSHClientInteraction(remote_conn_pre, timeout=20, display=False) #Logged in, wait for the prompt to display. interact.expect(prompt) #Shut off the --more-- prompting interact.send('terminal length 0') interact.expect(prompt) #We don't care about the output for that last command, so just clear the buffer. cmd_output = interact.current_output_clean #Let's grab something BIG that use dto be a real timing issue the old way, not knowing how long it might take to get a full # running config over a WAN link. Now we do not care, we will simply wait to the prompt shows up. interact.send('show running-config') interact.expect(prompt) cmd_output = interact.current_output_clean print (cmd_output) #Close our session remote_conn_pre.close()
Monday, October 12, 2015
Spnner - AsyncIO example-
Nice example using asyncio in Python3.5
# spinner_await.py # credits: Example by Luciano Ramalho inspired by # Michele Simionato's multiprocessing example in the python-list: # https://mail.python.org/pipermail/python-list/2009-February/538048.html # BEGIN SPINNER_AWAIT import asyncio import itertools import sys async def spin(msg): # <1> write, flush = sys.stdout.write, sys.stdout.flush for char in itertools.cycle('|/-\\'): status = char + ' ' + msg write(status) flush() write('\x08' * len(status)) try: await asyncio.sleep(.1) # <3> except asyncio.CancelledError: # <4> break write(' ' * len(status) + '\x08' * len(status)) async def slow_function(): # <5> # pretend waiting a long time for I/O #await asyncio.sleep(3) # <6> for i in range(100000000): i += 1 await asyncio.sleep(.0000001) return 42 async def supervisor(): # <7> spinner = asyncio.ensure_future(spin('thinking!')) # <8> print('spinner object:', spinner) # <9> result = await slow_function() # <10> spinner.cancel() # <11> return result def main(): loop = asyncio.get_event_loop() # <12> result = loop.run_until_complete(supervisor()) # <13> loop.close() print('Answer:', result) if __name__ == '__main__':
Friday, September 25, 2015
Reading large GZIP files with Python
Thanks to
Spencer Rathbun
Here Sepencer's way to read, large files with Python, amazingly I have adopted nearly, the same strategy for one of my scripts at work...thanks to Dave Beazley for its fantastic job on genrators in Python
Spencer Rathbun
Here Sepencer's way to read, large files with Python, amazingly I have adopted nearly, the same strategy for one of my scripts at work...thanks to Dave Beazley for its fantastic job on genrators in Python
#!/usr/bin/env python
import gzip, bz2
import os
import fnmatch
def gen_find(filepat,top):
for path, dirlist, filelist in os.walk(top):
for name in fnmatch.filter(filelist,filepat):
yield os.path.join(path,name)
def gen_open(filenames):
for name in filenames:
if name.endswith(".gz"):
yield gzip.open(name)
elif name.endswith(".bz2"):
yield bz2.BZ2File(name)
else:
yield open(name)
def gen_cat(sources):
for s in sources:
for item in s:
yield item
def main(regex, searchDir):
fileNames = gen_find(regex,searchDir)
fileHandles = gen_open(fileNames)
fileLines = gen_cat(fileHandles)
for line in fileLines:
print line
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Search globbed files line by line', version='%(prog)s 1.0')
parser.add_argument('regex', type=str, default='*', help='Regular expression')
parser.add_argument('searchDir', , type=str, default='.', help='list of input files')
args = parser.parse_args()
main(args.regex, args.searchDir)
Saturday, September 19, 2015
Matrix rain animation using HTML5 canvas and javascript
Thursday, June 11, 2015
Spark web framework and Tomcat
Spark web framework allows to develop web apps and web site, very easily.
It's similar in spirit to Bottle or Flask
Official site : http://sparkjava.com/
It's similar in spirit to Bottle or Flask
Official site : http://sparkjava.com/
Tuesday, May 26, 2015
Struts 2 + Hibernate integration with “Full Hibernate Plugin
Simplifying Struts2 Hibernate integration
http://www.mkyong.com/struts2/struts-2-hibernate-integration-with-full-hibernate-plugin/
http://www.mkyong.com/struts2/struts-2-hibernate-integration-with-full-hibernate-plugin/
Sunday, May 24, 2015
Struts 2 AJAX jQuery JSON example
From site
Here you will see how to use AJAX and jQuery to send request to the server and get JSON response back from the server and process it on JSP page.
http://javahonk.com/struts-2-ajax-jquery-json-example/
Here you will see how to use AJAX and jQuery to send request to the server and get JSON response back from the server and process it on JSP page.
http://javahonk.com/struts-2-ajax-jquery-json-example/
Saturday, May 23, 2015
Friday, May 22, 2015
Web Typo for non designers
Suffice to say :
Web design is 95% typography
- Oliver Reichenstein, 2006
http://www.presslabs.com/blog/web-typography-for-non-designers/?utm_source=hackernewsletter&utm_medium=email&utm_term=design
http://theultralinx.com/2013/04/free-alternative-font-gotham-proxima-nova/
Web design is 95% typography
- Oliver Reichenstein, 2006
http://www.presslabs.com/blog/web-typography-for-non-designers/?utm_source=hackernewsletter&utm_medium=email&utm_term=design
http://theultralinx.com/2013/04/free-alternative-font-gotham-proxima-nova/
GLSL Shader Development Environment
Synthclipse is a GLSL shader prototyping tool. It makes possible to fast
develop all kinds of shaders: Fragment (FS), Vertex (VS), Geometry
(GS), Tessellation (TS) and Compute (CS). Shader development can be done
using compatible with Fragmentarium and Shadertoy (but limited to FS and VS) Fragx shaders or by using fully featured JavaScript JSX scripts. The JSX API is consistent with WebGL but in fact exposes complete OpenGL 4+ API.
http://synthclipse.sourceforge.net/index.html
http://synthclipse.sourceforge.net/index.html
Annoted Code
Short annotated Javascript programs
Saturday, May 16, 2015
La puissance cachée des coroutines
Voilà un excellent article sur le sujet et en Français :
http://zestedesavoir.com/articles/232/la-puissance-cachee-des-coroutines/
http://zestedesavoir.com/articles/232/la-puissance-cachee-des-coroutines/
Thursday, April 30, 2015
Tuesday, April 28, 2015
Wednesday, April 1, 2015
Javascript : This, Bind, Call, Apply
Using 'this' in Javascript can be sometimes tricky.
Here is a nice article about it
http://dailyjs.com/2012/06/25/this-binding/
Here is a nice article about it
http://dailyjs.com/2012/06/25/this-binding/
Thursday, March 12, 2015
Jython compiler
Quote from site :
"""
Playing around with it since yesterday, from what i have noticed, the jythonc compiler is missing in 2.5.x version of jython. But on doing a quick search i found a java based jython compiler scripts ( here and here ). Also there don't seem to be any jython compiler scripts in jython, perhaps i maybe looking at wrong place. So i wrote up a quick script which tries to do that.
"""
http://kalyanchakravarthy.net/blog/jython-script-to-compile-jython-scripts-to-java-class-files.html
"""
Playing around with it since yesterday, from what i have noticed, the jythonc compiler is missing in 2.5.x version of jython. But on doing a quick search i found a java based jython compiler scripts ( here and here ). Also there don't seem to be any jython compiler scripts in jython, perhaps i maybe looking at wrong place. So i wrote up a quick script which tries to do that.
"""
http://kalyanchakravarthy.net/blog/jython-script-to-compile-jython-scripts-to-java-class-files.html
Roll your own server in 50 lines of code
This article explains how to dispatch requests to python modules.
Where nice way to organize code.
https://muharem.wordpress.com/2007/05/29/roll-your-own-server-in-50-lines-of-code/
Where nice way to organize code.
https://muharem.wordpress.com/2007/05/29/roll-your-own-server-in-50-lines-of-code/
Saturday, February 28, 2015
Monday, January 26, 2015
Discovering Monads
There is plethora of tutorials on Monads.
What if for the initiation, simply expose the code without naming anything, neither
documenting.
Let us, just read the code and try to understand.
Links
http://www.javascriptoo.com/monad-js
http://modernjavascript.blogspot.fr/2013/06/monads-in-plain-javascript.html
https://github.com/scottburch/functional
What if for the initiation, simply expose the code without naming anything, neither
documenting.
Let us, just read the code and try to understand.
function init(v) { return function() { return v; } } function bind(wv, fn) { return fn(wv()) } function addOne(x) { return x + 1 } function mul2(x) { return x * 2 } function sqrt(x) { return Math.sqrt(x) } function lift(f) { return function (val) { return init(f(val)) } } function execute(lstf, value) { var nlstf = lstf.map(lift) return (nlstf.reduce(bind,init(value)))() } var result = execute([addOne,sqrt,mul2],5)
Links
http://www.javascriptoo.com/monad-js
http://modernjavascript.blogspot.fr/2013/06/monads-in-plain-javascript.html
https://github.com/scottburch/functional
Monday, January 19, 2015
Recursive Functional State Machine
https://code.activestate.com/recipes/577709-recursive-functional-state-machine/?in=lang-python
Here is a pure Python FSM
https://github.com/oxplot/fysom/blob/master/fysom.py
Here is a pure Python FSM
https://github.com/oxplot/fysom/blob/master/fysom.py
Subscribe to:
Posts (Atom)