Como instalar PIP en Windows

 

Muchas veces debemos ir a entornos Windows a compilar o a empaquetar aplicaciones para este entorno, o simplemente a veces no tenemos más que usar Windows por obligación, pues en esos casos traigo un tutorial de como instalar PIP en Windows.

  1. Primero debemos descargar

    http://python-distribute.org/distribute_setup.py

  2. Luego entramos en CMD y ejecutamos

    c:\Python27\python.exe c:\distribute_setup.py

  3. Luego instalamos PIP usando easy install así:

    c:\Python27\Scripts\easy_install.exe pip

     

Y listo ya tendremos instalado nuestro PIP, pero recuerda Tux espera tu pronto regreso ;).

Disponible Ubuntu 12.04.4

Ha salido a relucir la cuarta versión de Ubuntu LTS que fue concebida en abrir del 2012, como motivo de actualizaciones y parches de seguridad, también vienen actualizadas sus diferentes sabores que podemos descargar desde aquí:

 

Para descargar Ubuntu 12.04.4, pueden hacerlo desde aquí:

 

http://www.ubuntu.com/download

Yo personalmente me acabo de mudar a Ubuntu 13.10 que es la versión actual y me va genial, minimizaron los recursos del sistema y al inicio solo me consume 250 mb de ram, estoy esperando la versión 14.04 que también será LTS.

[SNIPPET]Centrar Ventana QT5

Añado este snippet para centrar una ventana en QT usando C++, ya que en español no hay mucha información.

 

1
2
3
4
5
6
7
8
9
10
11
12
void MainWindow::centerWidget()
{
QDesktopWidget *s = QApplication::desktop();
int ancho = s->width();
int alto = s->height();
QSize tam_ventana = this->size();
int mov_ancho = tam_ventana.width();
int mov_alto = tam_ventana.height();
int coo_ancho = (ancho/2) - (mov_ancho/2);
int coo_alto = (alto/2) - (mov_alto/2);
move(coo_ancho,coo_alto);
}

Saludos espero les sirva.

Organizar codigo en CPP

Esta es una de las maravillas literarias para programadores que he encontrado en la web y no quería dejar de transmitirla, el post original(en ingles) esta aquí y su traducción aca:

http://razonartificial.com/2013/01/organizacion-del-codigo-fuente-en-cpp/

Introducción

Si bien muchos programas simples caben en un solo archivo C o Cpp, cualquier proyecto serio va a necesitar dividir el código en varios ficheros con el fin de ser manejable. Sin embargo, muchos principiantes no se dan cuenta hasta que punto esto es importante (Sobre todo por que muchos lo han intentado y les ha dado más problemas que soluciones y decidieron que no merecía la pena el esfuerzo). En este artículo intentaré explicar porqué hacerlo y cómo hacerlo correctamente. Cuando sea necesario, doy une breve explicación de como trabajan los compiladores y enlazadores para ayudar a entender porque se tienen que hacer las cosas de una manera determinada.

Continue reading

[QT]Conexion SQLITE en QT 5 (2da Parte)

En la primera parte ya hemos visto como conectarnos a nuestra base de datos Sqlite, ahora debemos empezar a crear consultas, pues retomemos el codigo del proyecto anterior y añadamos un nuevo metodo a nuestro sql.h:

 

1
2
3
4
5
6
7
8
9
10
11
12
#ifndef SQL_H
#define SQL_H
#include <QtSql>
class sql
{
public:
   sql();
   bool conectar();
   void consulta();
   QSqlDatabase db;
};
#endif // SQL_H

Luego definiremos el método en nuestro sql.cpp así:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
.......
void sql::consulta()
{
   this->conectar();
   if(db.isOpen())
  {
     QSqlQuery qry;
     qry.exec("CREATE TABLE IF NOT EXISTS admins (id integer primary key autoincrement, user text, passwd varchar[8])"); // Crea Tabla ADMINS solo si no existe.
     QString stmt; //Statement
     QTextStream txtstr(&stmt);
     txtstr << "INSERT INTO admins (user, passwd) values (\"" << "admin" << ", " << "12345" <<"\")";
     if(qry.exec(stmt))
        return true;
     txtstr << "SELECT * FROM admins;
     if(qry.exec(stmt))
     {
         while(qry.next())
           {
           qDebug() << "id:" << qry.value(0).toString();
           qDebug() << "user: " << qry.value(1).toString();
           qDebug() << "paswd: " << qry.value(2).toString();
           }
}

db.close(); }

Si todo salio bien esto debería imprimir:

1
2
3
id: 1
user: admin
passwd: 12345

[QT]Conexion SQLITE en QT 5 (1Era Parte)

Conectar una base de datos SQLITE3 en Qt5 a veces puede ser un poco complicado pero si recordamos a las bases de programación, no es mas que un juego de niños. Pues bien comencemos:

Necesitaremos crear nuestro archivo sqlite.h que contendrá nuestra clase, contendrá esto:

1
2
3
4
5
6
7
8
9
10
11
#ifndef SQL_H
#define SQL_H
#include <QtSql>
class sql
{
public:
    sql();
    bool conectar();
    QSqlDatabase db;
};
#endif // SQL_H

Y nuestro archivo sql.cpp asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "sql.h"
#include 
#include 
#include 
#include 
#include 
sql::sql()
{
}
bool sql::conectar()
{
    if(QSqlDatabase::isDriverAvailable("QSQLITE")) //Verificamos que el driver QSQLITE este instalado.
    {
        db = QSqlDatabase::addDatabase("QSQLITE"); //Definimos que se usara SQLITE como driver
        db.setDatabaseName(QDir::homePath()+QDir::separator()+"data2.sqlite"); //Nuestra db en nuestro Home.
        bool db_ok = db.open(); //Creamos una bandera para ver si se puedo abrir la DB
        return db_ok;  //Retornamos true al metodo.
    }
    else
        qDebug() << "Driver no Disponible";
        return false;
}

Debemos añadir al archivo “.pro” de nuestro proyecto “sql” en el apartado:

1
QT += core gui

y dejarlo asi:

1
QT += core gui sql

De esta manera le decimos al proyeccto que usaremos las bibliotecas SQL de QT.

Con esto culminamos la conexión, en el siguiente apartado les dejare como realizar consultas a la DB a traves de QSqlQuery.

[JAVA]Ejecutar JDialog desde Un JInternalFrame

java

tips

Me costo algo de trabajo encontrar como hacer esta pequeña maniobra de programación  así que la pasteo aquí para recordarlo yo , para hacerlo necesitaremos utilizar el método getFrameForComponent(), del objeto JOptionPane, bueno manos a la obra:

1
2
3
Frame f = JOptionPane.getFrameForComponent(this);
IngresarProductos dialog = new IngresarProductos(f, true);
dialog.show();

De esta forma nuestro JDialog se ejecutara como children de nuestro formPrincipal.

Saludos.

[PYQT] keyPressEvent en PyQT.

py2app-pyqt

En ocasiones queremos usar teclas de acceso rápido en nuestras aplicaciones en QT 4.7 se debe reescribir el método keyPressEvent(self, event), para conectar la señal de nuestro widget a los Slots correspondientes, les ejemplo en PyQt:

1
2
3
4
5
6
def keyPressEvent(self, event):
   key = event.key()
   if key == QtCore.Qt.Key_0:
      self.on_btn0_clicked()
 
 <a href="http://codigolibre.hol.es/2014/01/pyqt-keypressevent-en-pyqt/" class="more-link"><span class="btn btn-small">Continue reading</span></a>

Biblioteca Python

bostonpython-book-giveaway

Les anexo una pequeña biblioteca de libros acerca de Python que me he creado y la compartí hace tiempo en el foro de DesdeLinux para ir leyendo poco a poco y tener como referencia

Introducción:

  • Introducción a  Python :Arkaitz Ruiz y Pablo Orduña
  • Python para Todos: Raul Gonzales Duque
  • Tutorial Python 3: Guido Van Rossum
  • Introducción en Python 3: Mark Pilgrim traducido por Jose Miguel Gonzales Aguilera
  • Introducción a la Programacion en Python : Andrez Marzal , Isabel García
  • Python programming: An introduction to Computer Science

Interfaces Gráficas:

  • Python Card Interfaces: PyAr
  • Desarrollando Aplicaciones de Escritorio (PyQt): Daniel M. Maldonado
  • PyGtk 2.0 Jhon Finlay
  • Tkinter reference: a GUI for Python: Jhon W. Shipman
  • Tutorial python 2.5: Guido Van Rossum
  • WxPython in Action: Noel Rappin, Robin Dunn

DJango:

  • Django Book:Adrian Holovaty y Jacob Kaplan-Moss

Referencia:

  • Python Docs 2.5.2
  • MatPlobLib User Guide

Otros:

  • Numerical Python
  • SciPy Tutorial
  • Ejercicios de Programación: Algoritmos en Python
  • Y Muchos Códigos Mas.

descarga

Añadido:

Curso Django por Maestros del Web Version Pdf y Epub

descarga

Saludos.

Kolibri OS un SO realmente pequeño.

logo_600

Kolibri OS es un Sistema Operativo ligero que me ha dejado sorprendido por ser capas de ejecutarse desde un disquette de 1.4 MB, incluye varias aplicaciones por defecto, como navegador web, procesador de texto, editor gráfico, y mas de 30 juegos esta totalmente programado en lenguaje ensamblador por lo que su velocidad es sorprendente, ademas esta disponible totalmente en español y licenciado bajo GPL v2.

 Les anexo algunas imágenes corriendo en virtual box(50 mb de memoria le puse a la maquina virtual)

Colibri OS

Inicio del Sistema

Colibri OS2

Explorador de archivos.

Colibri OS3

Jugando un poco FreeCell

Barra Izquierda

Barra Izquierda

Ahora todo esta programado en Flat Assambler, segun wikipedia:

flat assembler (FASM) es un ensamblador libre, multi-paso, con el estilo de la sintaxis de Intel que soporta las arquitecturas IA-32 y x86-64.

Para que tengan una idea de la complejidad de rear un SO en ensamblador les dejo un ejemplo de un sencillo hola mundo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
CODE SEGMENT
ASSUME CS:CODE, DS:CODE, SS:CODE, ES:CODE
ORG 100h
 
principio:
mov ah, 0Fh
mov ah, 0
int 10h
 
lea dx, mensaje_a_mostrar
mov ah, 9h
int 21h
 
int 20h
 
mensaje_a_mostrar db "¡Hola Mundo!$",0
 
CODE ENDS
end principio

 Pueden detallar la explicacion del código acá, ahora si nos vamos a mi querido python, eso se resumiría en una sencilla linea:

1
print "¡Hola Mundo!"

Pero Python esta por en un nivel mucho mas alto a nivel de sistema por lo que sus programas son mucho mas pesados, tienes varias capas de abstracción por encima, recordemos que la implementación standar de Python es CPython programada en lenguaje c, y este al mismo tiempo tiene los modulos principales en ASM, y el resto en el mismo lenguaje. Todo esta explicación solo para que entiendan la maravilla de software.

Por ultimo les dejo el link de descarga:

descarga

Saludos.