python: adierazpen erregularrakaz (regex) link-ek html-ra bihurtu

baguez kallue hartzien python-eri, oingutan texto batetik link-ek html-ra pasa’kuz

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import re

text = "http://aaaaa       https://bbbbb ftp://ccccc\n http://dddddddd"

m = re.sub(r'(?i)(^|\s+|\A)(http|https|ftp)(\://\S+)(\s+|\Z|$)', '\\1<a href=\"\\1\\2\" onclick=\"window.open(this.href); return false;\">\\2\\3</a>\\4', text)

print m

Erantzune:

 

<a href="http://aaaaa" onclick="window.open(this.href); return false;">       <a href="https://bbbbb" onclick="window.open(this.href); return false;"> <a href="ftp://ccccc" onclick="window.open(this.href); return false;">
 <a href="http://dddddddd" onclick="window.open(this.href); return false;">

Badakitz eztala expresiño erregular zehatza, karaktere danak ez dizelako sartzien hor adierazpenan, baie bueno danok dakigu hutsune bat daueniko amaitzuten dala linke edota esaldidxe amaitzuten daniko.

Adierazpenan azalpena:

  • r'(?i) -> maiskule eta minuskulen artien EZ bereiztuteko
  • (^|\s+|\A) -> textu hasikerie edo hutsune bat edo 1go hizkidxe bada
  • (http|https|ftp) -> http EDO https EDO ftp-gaz hasten dizelako linkek
  • (\://\S+) -> : \-gaz eskapa bide gero // eta \S+ edozein karaktere EZ dana hutsunie
  • (\s+|\Z|$) -> hutsinie edo azkaningoko berbie edo esaldi akabukerie bada

Ordezkapenan azalpena:

  • \\1 -ek adierazpenako lehenengo () adierazten dau, hau da: (^|\s+|\A)
  • \\2 -ek adierazpenako bigarren () adierazten dau, hau da: (http|https|ftp)
  • \\3 -ek adierazpenako hirugarren () adierazten dau, hau da: (\://\S+)(\s+|\Z)
  • \\4 -ek adierazpenako laugarren () adierazten dau, hau da: (\s+|\Z)

debian: nginx erabilitze web zerbitzaridxen cluster bat sortu

Danok dakigu web zerbitzaridxen txeriffe apache dala, baie beste web zerbitzari batzuk be biarra elegante eitzen dauie, adibidez lighttpd, cherokee edota nginx.

Oingutan nginx-eri emongotzagu sue:

su
aptitude install nginx
nano /etc/nginx/nginx.conf

Oin nginx konfigureku:

# usuaidxue eta grupue zeon gustora imiñi
user zital zital;
worker_processes 4;
pid /var/run/nginx.pid;

events {
	worker_connections 15;
	multi_accept on;
}

http {

	##
	# Basic Settings
	##

	sendfile off;
	tcp_nopush on;
	tcp_nodelay on;
	keepalive_timeout 3;
	types_hash_max_size 2048;

	##
	# Logging Settings
	##

	access_log /var/log/nginx/access.log;
	error_log /var/log/nginx/error.log;

	##
	# Mime types
	##

        #include /etc/nginx/mime.types;
        #default_type application/octet-stream;


	##
	# Virtual Host Configs
	##

	upstream appcluster {
		server localhost:81;
		server 127.0.0.1:81;
		server 10.126.2.52:80;
	}

	server {
		# hamen IP publikue, adibidez:
		listen 10.126.252.10:80;
		server_name hackinbadakigu.net hackinbadakigu.net;

		location / {
			proxy_pass  http://appcluster;
		}
	}
}

ikusten dun moduen upstream appcluster sekziñuen sartun biher’duz zerbitzaridxen IP edo domeinu izenak, hori bai euren artien klonak ezan biher diez ;)

		server localhost:81;
		server 127.0.0.1:81;
		server 10.126.2.52:80;

hamen zerbitzari zerrendie euren portuekaz, eta holan nginx enkargako da kargie zerbitzari desberdiñen artien zatitxuten.

Ez ahaztu/etc/nginx/nginx.conf-en usuaidxue eta grupue zeuon gustora imintzen.

python: web2py apache-gaz imiñi martxan debian gnu/linux-en mod-wsgi bidez

web2py python-en framework bat da web aplikaziñuek python-egaz eitzeko, instalateko hau script-e prepara dot, kanbije usuaidxue, grupue eta proiektuen karpetie zeuon gustora:

1go gauzie root moduen konekta eta script-e sortu:

su
nano web2py_install.sh
#!/bin/bash
user='zital'
group=$user
project_path='/home/projects'
current_path=`echo $PWD`

me=`whoami`

if [ "$me" == "root" ]
then
	aptitude -y install libapache2-mod-wsgi unzip wget
	cd ${project_path}
	wget http://web2py.com/examples/static/web2py_src.zip
	unzip web2py_src.zip
	rm -rf web2py_src.zip
	chown -R ${user}:${group} ${project_path}/web2py
	cd ${current_path}
else
	echo "please log with root user"

fi
exit

oin permisuek emon eta ejekute:

chmod +x web2py_install.sh
./web2py_install.sh

Oin apache konfigureku, lelau:
/etc/apache2/apache2.conf artxibuen topa hau:

Include ports.conf

eta komenta:

#Include ports.conf

Oin sortu web2py-ntzako artxibue:

nano /etc/apache2/sites-available/web2py
Listen 80
NameVirtualHost *:80


	WSGIDaemonProcess web2py user=zital group=zital display-name=%{GROUP}
	WSGIProcessGroup web2py
	WSGIScriptAlias / /home/projects/web2py/wsgihandler.py

	
		AllowOverride None
		Order Allow,Deny
		Deny from all
		
			Allow from all
		
	

	AliasMatch ^/([^/]+)/static/(.*) \
		/home/projects/web2py/applications/$1/static/$2
	
		Order Allow,Deny
		Allow from all
	

	
		Deny from all
	

	
		Deny from all
	

	CustomLog /var/log/apache2/web2py-access.log common
	ErrorLog /var/log/apache2/web2py-error.log

okin kontutan usuaidxue eta grupue aldatu behar’zuiela zeuon gustora, oin lekue aktibe eta apache reinizie:

a2dissite default
a2dissite default-ssl
a2ensite we2bpy
/etc/init.d/apache restart

Oin nabegadoran: http://localhost

eskerrak: http://www.web2pyslices.com/main/slices/take_slice/29

python: tweet-eri tag bidezko iragazki bet pasa

Bueno ariñauko post-an ikusi’du zelan hartun python-egaz gaurko eguneko tweet-ek, bueno ba oingutan horreri tweeteri tag bidezko iragazki bet eingo’tzagu gai batzuri buruzko tweet-ek interesa doskuzelako eta ez edozein:

#!/usr/bin/python2.6
# -*- coding: utf-8 -*-
import urllib
import datetime as date
import time
import simplejson as json
import re

users = ['ZiTAL', 'g0re_k']
tags = ['#vamosHoder', '@wakka_']

def getTweets(id):
	now = date.datetime.now().strftime("%Y-%m-%d")
        url = "http://search.twitter.com/search.json?q=+from%3A"+u+"+since%3A"+now+"+until%3A"+now
	json_text = urllib.urlopen(url).read()
        json_obj = json.loads(json_text)

	tweets = []
	for result in json_obj['results']:
		tweets.append(result['text'])
	return tweets

def isInArray(text, array):
	for a in array:
		m = re.search(a, text)
		if(m):
			return True
	return None

for u in users:
	tweets = getTweets(u)

        print u + ":"
        for tweet in tweets:
		if(isInArray(tweet, tags)):
			print tweet
        print "\n"

Oin ejekute:

./ztwittter.py

Hamen erantzune:

ZiTAL:
@wakka_ aaah, bale bale :D
@wakka_ internetetik nabil topaten eta leiduten nabil "no hay regulación, uso privado" :S

g0re_k:
A la tercera va la vencida... #vamosHoder

python: gaurko tweet-ak hartzeko script-a

Neure lehenengo python script-e: Zelan hartun gaurko eguneko tweet-ak

Biher dana instala eta script-e edite:

su
aptitude install python2.6 python-simplejson
exit
nano ztwitter.py
#!/usr/bin/python2.6
# -*- coding: utf-8 -*-
import urllib
import datetime as date
import time
import simplejson as json

users = ['ZiTAL', 'g0re_k']
now = date.datetime.now()
now = now.strftime("%Y-%m-%d")

for u in users:
        url = "http://search.twitter.com/search.json?q=+from%3A"+u+"+since%3A"+now+"+until%3A"+now
        json_text = urllib.urlopen(url).read()
        json_obj = json.loads(json_text)

        print u + ":"
        for i in json_obj['results']:
                print i['text']

        print "\n"

        time.sleep(1)

segundo bateko “sleep”-txue imin’tzat ze batzutan hutsik botaten dauz tweet-ek :S
Ejekuteteko permisuek emon eta ejekute

chmod +x ztwitter.py
./ztwitter.py

Hau da script-en erantzune:

ZiTAL:
@hqh muy bien pd: cambiate el thumb ;)
#twitter API search user's tweets between dates http://is.gd/Msygqn #webdev
RT @desymfony: Acabamos de publicar el primer vídeo de #desymfony 2011 http://t.co/cKA0tKJ @pgodel te enseña a programar aplicaciones móviles con Symfony2
#hispabyte identi.ca-ko grupue probaten...
RT @berria: Antonio Camacho izendatu du Zapaterok Barne ministro http://bit.ly/rniBfD
RT @Peioxabier: Este Camacho es aquel de "apaga la cámara" cuando le preguntaron por la tortura en España en una TV australiana, no?? http://t.co/Tfca8gm
Luis es Bankero - spot de Bankia mejorado #yoquieroserbankero http://is.gd/2W5X5M via @Garrakus
RT @acarazo: El Gobierno vasco muestra su apoyo al gaztetxe de Rekalde. El Correo http://me.lt/760sf #kukutza
@nickdutnik bai, eskerrik asko ;)


g0re_k:
En las escaleras del metro de Bilbao con @wakka_ y @kruspex... http://instagr.am/p/HcDkp/
@ZiTAL-egaz, barrez lehertu beharrean... http://instagr.am/p/Hb8I0/
#boicto @wakka_ @kruspex
Grisez bustitako egun horietakoa izateko itxura du gaur... http://instagr.am/p/Ha9Ou/