Codeigniter - Framework PHP

8 de Agosto de 2007, a las 2:18  

PHP, Programación 1 comentario »

He estado probando estos días el framework PHP (a la rails) CodeIgniter. De momento la impresión es buena. En mi línea, pongo un ejemplo.

Modificando un par de ficheros de configuración o tres (un par de líneas en cada uno) y creando los siguientes dos ficheros he obtenido una sencilla aplicación que muestra las entradas de mi blog de wordpress.

El fichero del controlador (controllers/blog.php):

class Blog extends Controller {
 
	function Blog() {
		parent::Controller();
 
		$this->load->scaffolding('bb_posts');
	}
 
	function index() {
 
		$data['title'] = "BatU's Stack";
		$data['heading'] = "piling up experiences...";
		$this->db->orderby("post_date", "desc");
		$data['query'] = $this->db->get('bb_posts');
 
		$this->load->view('blog_view', $data);
 
	}
}

El fichero de la vista correspondiente (views/blog_view.php):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
	<meta http-equiv="Content-type" content="text/html;
        charset=utf-8">
<link rel="stylesheet" href="/bblog/css/style.css"
        type="text/css" media="screen" title="no title"
        charset="utf-8">
</head>
<body>
<div id="box">
<div id="header">
<h1><?=$title?></h1>
<h2><?=$heading?></h2>
</div>
<div id="posts">
    <?php foreach($query->result() as $post): ?>
<div class="post">
<h3><?=$post->post_title?></h3>
<div class="post_content">
          <?=$post->post_content?>
        </div>
</div>
 
    <?php endforeach; ?>
  </div>
</div>
 
</body>
</html>

Dejo aquí la URL del ejemplo: http://testing.inbatu.com/bblog/index.php/blog

imaplib - Ejemplo muy básico

23 de Julio de 2007, a las 21:29  

Programación, Python No hay comentarios »

Estoy de vuelta con python, que desde antes de examenes no había tocado nada. Y como estoy llegando al final del Learning Python, donde he visto que existe la librería poplib, me ha dado por probar imaplib.

Dejo aquí un sencillo ejemplo que muestra todos los mensajes de un buzón IMAP.

#!/usr/bin/python
 
import imaplib, getpass
 
if __name__ == '__main__':
 
	host = raw_input('Host: ')
	user = raw_input('User: ')
	passw = getpass.getpass('Password: ')
 
	mail = imaplib.IMAP4(host)
	mail.login(user,passw)
	mail.select()
 
	typ, data = mail.search(None, 'ALL')
	for num in data[0].split():
		typ, data = mail.fetch(num, '(RFC822)')
		print '\\n----------------------------------\\n',
		print 'Message %s' % num,
		print '\\n----------------------------------\\n',
		print '\\n%s\\n' % data[0][1]
		raw_input('Next message...')
 
	mail.close()
	mail.logout()

Mordiendo la manzana

23 de Junio de 2007, a las 20:25  

Personal No hay comentarios »

Después de unos meses sin escribir nada, señal de que tengo poco que contar y que he estado bastante liado este último cuatrimestre, comunico que hace unos días (4) he adquirido un MacBook 13,3 (2.16GHz).

La experiencia está siendo grata. Quizás demasiado pues de momento estoy tirando con MacOSX (ya me he flagelado por ello :P) que estoy de exámenes y no es plan de ponerme a trastear para meterle una Ubuntu.

Sobre MacOSX, la verdad la impresión es bastante buena y lo sería aún más si no fuera por el “insignificante detalle” de que su escritorio es software propietario.

Y poco más puedo decir que la mayoría de gente que pueda estar leyendo esto (osea nadie) no sepa sobre estos portátiles. Espero que este nuevo miembro de la familia se porte bien durante su estancia en Irlanda y que haga su papel en mi experiencia erasmus.

Argument parsing with OptionParser

5 de Marzo de 2007, a las 0:31  spanish

Programación, Python No hay comentarios »

From Python 2.3 we’ve the module optparse on standard library, which serve us for parse options and arguments passed to our programs, doing it easy and handy.

Here’s an example:

from optparse import OptionParser
 
if __name__ == '__main__':
    usage = "%prog [options] arg1 arg2"
 
    parser = OptionParser(usage=usage, version="%prog 1.0")
    parser.add_option('-v','--verbose', action='store_true',
                      dest='verbose', help='shows detailed information')
    parser.add_option('-q','--quiet', action='store_false',
                      dest='verbose', help='hides detailed information')
    parser.add_option('-f','--filename', action='store',
                      dest='filename', help='name of the file to load')
 
    (options, args) = parser.parse_args()
 
    if options.verbose:
        print "Extra info enabled"
    else:
        print "Extra info disabled"
    if options.filename:
        print "I'll open", options.filename, "file."
    if args > 0:
        print "\nArguments:"
        for x in args:
            print "  ",x

Let’s see some results depending on arguments passed:

$ python option.py

Extra info disabled
$ python option.py -v

Extra info enabled
$ python option.py -h

usage: option.py [options] arg1 arg2

options:
  –version             show program’s version number and exit
  -h, –help            show this help message and exit
  -v, –verbose         shows detailed information
  -q, –quiet           hides detailed information
  -f FILENAME, –filename=FILENAME
                        name of the file to load
$ python option.py -f fichero.txt “First” “Second” “Last argument”

Extra info disabled
I’ll open fichero.txt file.

Arguments:
   First
   Second
   Last argument

Notice it knows options from arguments, as you can see in the last example.

HTML parsing with BeautifulSoup

28 de Febrero de 2007, a las 19:54  spanish

Programación, Python No hay comentarios »

I’m gonna put an example using BeautifulSoup, a Python module which we can parse HTML.

First we’ve to download the library from here. Once installed, let’s see the simple example:

from BeautifulSoup import BeautifulSoup
 
html = '''<html><head></head>
  <body>
<div id="cabecera">
<h1>Cabecera</h1>
</div>
<div id="contenido">
    Vamos a poner una lista.
 
    Lista:
<ul id="lista1">
<li>Elemento 1</li>
<li>Elemento 2</li>
<li>Elemento 3</li>
<li>Elemento 4</li>
</ul></div>
 
  </body>
  </html>"'
 
soup = BeautifulSoup(html)
 
# Mostramos el titulo de la pagina
print soup.head.title.string
 
# Mostramos la cabecera
print soup.find("div",{"id":"cabecera"}).contents
 
# Mostramos el contenido
contenido = soup.find("div",{"id":"contenido"})
print contenido.contents
 
# Ahora mostramos todos los elementos de lista1
lista = contenido.find("ul",{"id":"lista1&#8243;})
for x in lista:
    print x.string

Instead of a string with html code we can read from an URL on this way:

...
import urllib2
 
sock = urllib2.urlopen("http://servidor/documento.html")
soup = BeautifulSoup(sock.read())
...

It’s a very simple sample, for details read the BeautifulSoup documentation.

Operador const de C++ (Resumen)

27 de Enero de 2007, a las 12:06  

C++, Programación No hay comentarios »

Variables constantes

  • const int entero;
    Entero constante, una vez inicializada la variable entero no podrá ser cambiado su valor.
  • const int * pentero; ó int const * pentero;
    Puntero a entero constante, el contenido del puntero pentero no se podrá cambiar.
  • int * const pentero;
    Puntero constante a entero, no se podrá cambiar el puntero.

Como regla general const afecta al elemento que está inmediatamente a su izquierda, si no hay nada al que está inmediatamente a su derecha.

Valores constantes de retorno de función

const char * Funcion()
{ return "Un texto";}
 
Funcion()[1] = 'a'; // Error

La variable devuelta no se puede modificar pues es constante.

Parámetros constantes

void mostrarPila(const Pila &p);

Como mostrarPila no debe modificar la pila pasamos el objeto pila a mostrar por referencia y constante. De esta manera no podremos modificar el objeto p, ni acceder a métodos de este que no se hayan declarado como const.

Métodos constantes

class Tipo {
...
	void imprime() const;
...
}

Evita que el método imprime pueda modificar los miembros del objeto.

Naudo

23 de Enero de 2007, a las 21:11  

Videos 14 comentarios »

Samba pa ti (Santana)
You need to a flashplayer enabled browser to view this YouTube video
Every little thing she does is magic (Police)
You need to a flashplayer enabled browser to view this YouTube video

Impresionantes las versiones de este guitarrista. Les da un toque muy personal. En youtube hay un buen puñado de videos de él.

Twitter Updater

20 de Enero de 2007, a las 13:37  spanish

Programación, Python, Utiles 1 comentario »

After I saw the script made by felipe, for twitting basecamp TODOs, I made another one (more simpler) in Python, it’s just for twitt from console. So, for instance, I just can do Alt+F2 in KDE (or directly in a console) and write twupdater "Exams are out!".

Not an existential thing, but it has give me some phreak time. And while I had the chance to trying http in python.

Here is:

twupdater_v02.tar.gz

Update: Now the script ask user and pass if them is not configured.
Last update: Furthermore, now checks user and pass before send status.

Reordenar PDFs

17 de Enero de 2007, a las 11:50  

Software Libre, Utiles No hay comentarios »

Buscando como unir PDFs he encontrado este post en kriptopolis, y he conocido la herramienta PDFTK que nos permite hacer cosas como unir, encriptar, descomprimir pdfs y más.

Pondré unos ejemplos:

  • pdftk 1.pdf 2.pdf 3.pdf cat output 123.pdf
    Une los tres ficheros (1.pdf, 2.pdf y 3.pdf) en uno solo (123.pdf).
  • pdftk A=1.pdf B=2.pdf cat A1-7 B1-5 A8 output combined.pdf
    Crea un nuevo pdf extrayendo páginas, en este caso el nuevo pdf se compondría de las paginas 1 a 7 de 1.pdf, luego 1 a 5 de 2.pdf y por último la 8 de 1.pdf
  • pdftk doc.pdf output doc_enc.pdf owner_pw contra
    Encripta el PDF con todos los permisos deshabilitados excepto ver el fichero
  • pdftk doc.pdf output doc_enc.pdf owner_pw contra user_pw contra2
    Igual que el anterior pero ahora pedirá password para abrirlo.

Existen más opciones que se pueden ver en la página del programa, para mí con los dos primeros ejemplos ya me es bastante útil.

New book received

3 de Enero de 2007, a las 21:49  spanish

Libros, Personal, Python 2 comentarios »

I was sleeping this morning when a ring has waked up me. It’s made me quite angry, but all turned different when I’ve opened the door, “Hi I’ve a book for you” WOW. The Programming Python 3rd Edition book that I ordered on 13th december has arrived to me. I got really surprised.

The book is on quite good state, only two small scratches. It’s big, almost double size of Programming Perl. At all it has brigthen up me today.

RSS entradas RSS Comentarios Identificarse