Dedicado a mis proyectos en Gambas ,un lenguaje de programación parecido al Visual Basic + Java pero ampliamente mejorado y...¡¡para gnu/linux!!.La potencia del gnu/linux sumada a la facilidad del Basic



Consultas, Desarrollo de programas y petición de presupuestos:



martes, 28 de febrero de 2012

MySQL: Solución al problema: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

He encotrado en este blog ( http://my.opera.com/FastTigerBlog/blog/ ) la solución a un error que me daba algunas veces cuando intentaba conectar al gestor de bases de datos MySql, ya que me generaba el siguiente error:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

La solución que propone el blog me ha funcionado, a la perfección.

Pasos a seguir, en la consola: (como root)

1. Detenemos el servicio de MySQL
/etc/init.d/mysql stop

2. Saltamos los privilegios de MySQL
/usr/bin/mysqld_safe --user=mysql --skip-grant-tables

3. Abrimos otra terminal y escribimos
mysql

4. Ya estamos dentro de la Base de Datos por lo tanto usamos la base de datos llamada mysql:
use mysql;

5. Actualizamos el campo Password del usuario root de la siguiente manera
UPDATE user SET Password=PASSWORD('nuestro_password') WHERE user='root';


6. Salimos
exit

7. Iniciamos una nueva sesión en la base de datos desde la terminal
mysql -u root -p

y tendremos que meter nuestro_password y listo.

Autor: Carlos Arango

Nota: 21/8/2013
En el foro de gambas-es.org, jousseph ha comentado otra solución, que encontró en esta dirección http://www.solusan.com/error-access-denied-for-user-rootlocalhost-using-password-no.html :

error: ‘Access denied for user ‘root’@'localhost’ (using password: NO)

Por Solusan el 06 de August de 2006 en Linux
Si nos encontramos con un error como estos debería mos proceder con las siguiente lineas de comandos.
mysql> mysql -u root -p
mysql> UPDATE mysql.user SET Password=PASSWORD('') WHERE User='root';
mysql> flush privileges;
Y listo....



domingo, 19 de febrero de 2012

Para aprender python: Inmersión en Python 3.0


José Miguel González Aguilera está llevando a cabo una traducción de libro Dive Into Python 3,  al español del que por el momento encontramos una traducción de los capítulos 1 a 14.

 Descarga: Inmersion En Python 3.0.11.pdf (capitulos 1 al 14)



Fuente:
http://www.desarrolloweb.com/de_interes/inmersion-python-3-6523.html

lunes, 6 de febrero de 2012

¿por qué el fracado escolar en Andalucia (y en otros lugares)?: “10 Estrategias de Manipulación”

Las 10 Estrategias de Manipulación Mediática

1. La estrategia de la distracción 
 El elemento primordial del control social es la estrategia de la distracción que consiste en desviar la atención del público de los problemas importantes y de los cambios decididos por las élites políticas y económicas, mediante la técnica del diluvio o inundación de continuas distracciones y de informaciones insignificantes. La estrategia de la distracción es igualmente indispensable para impedir al público interesarse por los conocimientos esenciales, en el área de la ciencia, la economía, la
psicología, la neurobiología y la cibernética. ”Mantener la Atención del público distraída, lejos de los verdaderos problemas sociales, cautivada por temas sin importancia real. Mantener al público ocupado, ocupado, ocupado, sin ningún tiempo para pensar; de vuelta a granja como los otros animales (cita del texto ‘Armas silenciosas para guerras tranquilas)”.

2. Crear problemas y después ofrecer soluciones. Este método también es llamado
“problema-reacción-solución”. Se crea un problema, una “situación” prevista para causar cierta reacción en el público, a fin de que éste sea el mandante de las medidas que se desea hacer aceptar.
Por ejemplo: dejar que se desenvuelva o se intensifique la violencia urbana, u organizar atentados sangrientos, a fin de que el público sea el demandante de leyes de seguridad y políticas en perjuicio de la libertad.
O también: crear una crisis económica para hacer aceptar como un mal necesario el retroceso de los derechos sociales y el desmantelamiento de los servicios públicos.

3. La estrategia de la gradualidad.
  Para hacer que se acepte una medida inaceptable, basta aplicarla gradualmente, a cuentagotas, por años consecutivos. Es de esa manera que condiciones socioeconómicas radicalmente nuevas (neoliberalismo) fueron impuestas durante las décadas de 1980 y 1990: Estado mínimo, privatizaciones, precariedad, flexibilidad, desempleo en masa, salarios que ya no aseguran ingresos decentes, tantos cambios que hubieran provocado una revolución si hubiesen sido aplicadas de una sola vez.

4. La estrategia de diferir.

Otra manera de hacer aceptar una decisión impopular es la de presentarla como “dolorosa y necesaria”, obteniendo la aceptación pública, en el momento, para una aplicación futura. Es más fácil aceptar un sacrificio futuro que un sacrificio inmediato. Primero, porque el esfuerzo no es empleado inmediatamente. Luego, porque el público, la masa, tiene siempre la tendencia a esperar ingenuamente que “todo irá mejorar mañana” y que el sacrificio exigido podrá ser evitado. Esto da más tiempo al público para acostumbrarse a la idea del cambio y de aceptarla con resignación cuando llegue el momento.

5. Dirigirse al público como criaturas de poca edad.
La mayoría de la publicidad dirigida al gran público utiliza discurso, argumentos, personajes y entonación particularmente infantiles, muchas veces próximos a la debilidad, como si el espectador fuese una criatura de poca edad o un deficiente mental. Cuanto más se intente buscar engañar al espectador, más se tiende a adoptar un tono infantilizante. Por qué? “Si uno se dirige a una persona como si ella tuviese la edad de 12 años o menos, entonces, en razón de la sugestionabilidad, ella tenderá, con cierta probabilidad, a una respuesta o reacción también desprovista de un sentido crítico como la de una persona de 12 años o menos de edad (ver “Armas silenciosas
para guerras tranquilas”)”.

6. Utilizar el aspecto emocional mucho más que la reflexión.
Hacer uso del aspecto emocional es una técnica clásica para causar un corto circuito en el análisis racional, y finalmente al sentido critico de los individuos. Por otra parte, la utilización del registro emocional permite abrir la puerta de acceso al inconsciente para implantar o injertar ideas, deseos, miedos y temores, compulsiones, o inducir comportamientos...

7. Mantener al público en la ignorancia y la mediocridad.
Hacer que el público sea incapaz de comprender las tecnologías y los métodos utilizados para su control y su esclavitud. “La calidad de la educación dada a las clases sociales inferiores debe ser la más pobre y mediocre posible, de forma que la distancia de la ignorancia que planea entre las clases inferiores y las clases sociales superiores sea y permanezca imposible de alcanzarpara las clases inferiores (ver ‘Armas silenciosas para guerras tranquilas)”.

8. Estimular al público a ser complaciente con la mediocridad.
Promover al público a creer que es moda el hecho de ser estúpido, vulgar e inculto...

9. Reforzar la autoculpabilidad. 
Hacer creer al individuo que es solamente él el culpable por su propia desgracia, por causa de la insuficiencia de su inteligencia, de sus capacidades, o de sus esfuerzos. Así, en lugar de rebelarse contra el sistema económico, el individuo se auto desvalida y se culpa, lo que genera un estado depresivo, uno de cuyos efectos es la inhibición de su acción. Y, sin acción, no hay revolución!

10. Conocer a los individuos mejor de lo que ellos mismos se conocen. 
En el transcurso de los últimos 50 años, los avances acelerados de la ciencia han  generado una creciente brecha entre los conocimientos del público y aquellos  poseídos y utilizados por las élites dominantes. Gracias a la biología, la neurobiología y la psicología aplicada, el “sistema” ha disfrutado de un conocimiento avanzado del ser humano, tanto de forma física como psicológicamente. El sistema ha conseguido conocer mejor al individuo común de lo que él se conoce a sí mismo. Esto significa que, en la mayoría de los casos, el sistema ejerce un control mayor y un gran poder sobre los individuos, mayor que el de los individuos sobre sí mismos.




“Reproduzca esta información, hágala circular por los medios a su alcance: a mano, a máquina, a mimeógrafo, oralmente. Mande copias a sus amigos: nueve de cada diez las estarán esperando. Millones quieren ser informados. El terror se basa en la incomunicación. Rompa el aislamiento. Vuelva a sentir la satisfacción moral de un acto de libertad. Derrote el terror. Haga circular esta información”.
Rodolfo Walsh



Ver también:
http://www.paralelo36andalucia.com/el-fracaso-escolar-en-andalucia-desigualdad-y-educacion/

domingo, 5 de febrero de 2012

QT4: ejemplo de cuadros de dialogos...

He estado viendo la documentación de QT4, esta muy completa e interesante.
He hecho un pequeño ejemplo de como se pueden programar los cuadros de diálogos, que  es más corto del que viene en la documentación..

Se hace creando 3 archivos (con el gedit, por ejemplo):
1) El archivo main.cpp:

#include <QApplication>
#include "dialogo.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
dialogo w; //instanciamos una clase dialogo
w.show(); //mostramos en pantalla
return a.exec();
}

2) El archivo dialogo.h

#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
class QCheckBox;
class QLabel;
class QErrorMessage;
class dialogo : public QDialog
{
Q_OBJECT
public:
dialogo(QWidget *parent = 0);
 
private slots:
void setInteger();
void setDouble();
void setItem();
void setText();

private:
QCheckBox *native;
QLabel *integerLabel;
QLabel *doubleLabel;
QLabel *itemLabel;
QLabel *textLabel;
};
#endif


3) El archivo dialogo.cpp:

#include <QColorDialog>
#include <QGridLayout>
#include <QInputDialog>
#include <QLabel>
#include <QPushButton>
#include "dialogo.h"
#define MESSAGE \
Dialogo::tr("<p>Message boxes have a caption, a text, " \
"and any number of buttons, each with standard or custom texts." \
"<p>Click a button to close the message box. Pressing the Esc button " \
"will activate the detected escape button (if any).")
dialogo::dialogo(QWidget *parent)
: QDialog(parent)
{
//definimos los botones y label que tendra el formulario inicial 
int frameStyle = QFrame::Sunken | QFrame::Panel;
integerLabel = new QLabel;
integerLabel->setFrameStyle(frameStyle);
QPushButton *integerButton =
new QPushButton(tr("QInputDialog::get&Int()"));
doubleLabel = new QLabel;
doubleLabel->setFrameStyle(frameStyle);
QPushButton *doubleButton =
new QPushButton(tr("QInputDialog::get&Double()"));
itemLabel = new QLabel;
itemLabel->setFrameStyle(frameStyle);
QPushButton *itemButton = new QPushButton(tr("QInputDialog::getIte&m()"));
textLabel = new QLabel;
textLabel->setFrameStyle(frameStyle);
QPushButton *textButton = new QPushButton(tr("QInputDialog::get&Text()"));

 
// concectamos las señales con los slot: (eventos)
connect(integerButton, SIGNAL(clicked()), this, SLOT(setInteger()));
connect(doubleButton, SIGNAL(clicked()), this, SLOT(setDouble()));
connect(itemButton, SIGNAL(clicked()), this, SLOT(setItem()));
connect(textButton, SIGNAL(clicked()), this, SLOT(setText()));


//definicion de la ventana, y colocacion de los botones, y textos
QGridLayout *layout = new QGridLayout;
layout->setColumnStretch(1, 1);
layout->setColumnMinimumWidth(1, 250);
layout->addWidget(integerButton, 0, 0);
layout->addWidget(integerLabel, 0, 1);
layout->addWidget(doubleButton, 1, 0);
layout->addWidget(doubleLabel, 1, 1);
layout->addWidget(itemButton, 2, 0);
layout->addWidget(itemLabel, 2, 1);
layout->addWidget(textButton, 3, 0);
layout->addWidget(textLabel, 3, 1);

setLayout(layout);
setWindowTitle(tr("Algunos Dialogos Standard de QT4"));
}
// definimos lo que hacen cada método
void dialogo::setInteger()
{
bool ok;
//QinputDialog::getInt, devuelve un INT  (integer)  , y en la funcion le damos los valores iniciales, boton que aparezca, etc.. (ver documentación)
int i = QInputDialog::getInt(this, tr("QInputDialog::getInteger()"),
tr("Percentage:"), 25, 0, 100, 1, &ok);
if (ok)
//asignamos el valor elegido al IntegerLabel   
integerLabel->setText(tr("%1%").arg(i));
}
 

void dialogo::setDouble()
{
bool ok;
double d = QInputDialog::getDouble(this, tr("QInputDialog::getDouble()"),
tr("Amount:"), 37.56, -10000, 10000, 2, &ok);
if (ok)
//asignamos el valor elegido al doubleLabel 
doubleLabel->setText(QString("$%1").arg(d));
}
 
// un combo: el usuario eligira entre varios valores (dado por items),  un valor
void dialogo::setItem()
{
QStringList items;
items << tr("Primavera") << tr("Verano") << tr("Otoño") << tr("Invierno");
bool ok;
QString item = QInputDialog::getItem(this, tr("QInputDialog::getItem()"),
tr("Estacion:"), items, 0, false, &ok);
if (ok && !item.isEmpty())
//asignamos el valor elegido al itemLabel 
itemLabel->setText(item);
}
 
// peguntar por un texto...
void dialogo::setText()
{
bool ok;
QString text = QInputDialog::getText(this, tr("QInputDialog::getText()"),
tr("Escribe un texto:"), QLineEdit::Normal,
hola”, &ok);
if (ok && !text.isEmpty())
//asignamos el valor elegido al textLabel  
textLabel->setText(text);
}

Estos 3 archivos lo metes en una carpeta, por ejemplo "/home/usario/pruebasqt"
Y para compilarlo:
$ qmake -project
$ qmake
$ make

Y creara un ejecutable llamado "pruebasqt", que los podeis ejecutar en linux poniendo:
$ .\pruebasqt

Fuente:
http://www.zonaqt.com/tutoriales/tutorial-b%C3%A1sico-de-qt-4-11

Enlace interesante: http://dibosa.wordpress.com/articulos-programacion/desarrollando-aplicaciones-opensource-multiplataforma-con-las-librerias-qt4-y-c/