jueves, 25 de octubre de 2018

Acceder a mysql con root y también cambiar contraseña.

Si por alguna razón deseas acceder como el usuario de root a las bases de datos debemos cambiar algunos datos de la tabla mysql.

Aplicado en mysql 5

1. Entramos a mysql 

$ sudo mysql -u root mysql

2. Revisamos la tabla user

mysql> select * from user;

3. Cambiamos el valor del plugin de auth_socket a mysql_native_password del usuario root

mysql> UPDATE user SET plugin="mysql_native_password" WHERE User='root';

4. Aplicamos los cambios

mysql> flush privileges;

5. Salimos de la conexión actual 

mysql>quit

6. Ahora ingresamos normalmente

$mysql -u root mysql
enter password:

7. Si todo sale correcto habrás ingresado 

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version:  ******************** (Ubuntu)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>



Adicional: cambiar contraseña

8. Dentro de la conexión  lanzamos la siguiente consulta

mysql> UPDATE user SET authentication_string=PASSWORD("nuevaclave") WHERE User='root';

9. Aplicamos los cambios

mysql> flush privileges;

10. Salimos de la conexión actual 

mysql>quit

11. Reiniciamos el servicio

sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start 

12. Probamos con el nuevo password

Todo debe salir perfecto.



miércoles, 24 de octubre de 2018

Habilitar Mysql con php7-Apache2 en Ubuntu

Instale ubuntu 16 en un equipo para realizar unas pruebas con Apache2 y php7.2

Cuando quise utilizar mysql mostraba que no estaba podía realizar la conexión.

Entonces hice lo siguiente:


Primero, edite el archivo

$ sudo nano /etc/php/7.2/apache2/php.ini

descomente la línea (elimine ;):

extension=php_mysqli.so

Guarde sus cambios (CTRL+C)

Después necesitamos instalar la librería php-mysql

$ sudo apt install php-mysql

Se instalarán los siguientes paquetes NUEVOS:
  php-mysql php7.2-mysql

Para versiones de php7 se deben habilitar las extensiones, entonces ejecutamos:

$ sudo phpenmod mysqli

Reiniciamos el servicio de apache

$ sudo ./etc/init.d/apache2 stop
$ sudo ./etc/init.d/apache2 start

Si tenemos instalado phpmyadmin entonces podemos revisar la conexión

¡¡Funciona!!


jueves, 18 de octubre de 2018

Habilitar OPcache en PHP 5.5 o superior

Opcache es una tecnología muy usada actualmente para mejorar el rendimiento de un sitio web

Habilitar la librería es muy sencillo.

Primero hay que editar nuestro archivo php.ini que estamos usando con Apache

Agregamos la siguiente linea en la parte donde cargamos las extensiones:

#en mi caso tengo ubicado el php en la unidad D

zend_extension=D:\php\ext\php_opcache.dll


Después configuramos los siguientes valores, se recomienda revisar las especificaciones que usted necesite, estas digamos son las comunes:

opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1



Ahora guardamos nuestro archivo php.ini

Si estamos en windows, copiamos el archivo php.ini a C:\windows\

Detenemos el servicio de Apache
y lo volvemos a iniciar.






Si todo esta correcto, nuestra extensión ha sido agregada.

Podemos usar un script y probar con php_info()



Saludos.

jueves, 11 de octubre de 2018

Mysql apache 2_4 php 5.6 Moodle 3.1 Error: database driver problem detected

Error: database driver problem detected

The site administrator should verify server configuration

PHP has not been properly configured with the MySQLi extension for it to communicate with MySQL. Please check your php.ini file or recompile PHP.


El anterior error ocurrió cuando cambie de php 7.0 a php 5.6

Anteriormente tenia el php 5, pero debido a requerimientos instale php 7.0 (necesitaba instalar drupal 8)

Sin embargo encontré un error en moodle 3.1 cuando quería agregar un nuevo curso 

$this no context 

La solución era migrar a moodle 3.2 pero como tengo personalizado algunas cosas y el servidor de producción del cliente esta con las características de 3.1, entonce la solución era volver a usar php 5.6. Al cargar la anterior configuración marcaba que no encontraba el driver de mysqli,
lo raro es que las demás extensiones si las cargaba menos la de mysqli.



Solución

Pues intentando varias cosas la solución fue poner de manera absoluta la ruta de la carpeta de extensiones.

Así que en el archivo php.ini modifique

 extension_dir = "d:\php\ext"

copie el archivo php.ini a c:\windows\

y reinicie el servicio de Apache 2


Ahora bien, por obvias razones, resolveré lo que tengo y regresaré a php 7.0 (actualmente ya solo trabajo con moodle 3.3 y drupal 8) pero esta solución permitirá que si lo necesitan puedan resolver su problema.

Saludos.

lunes, 9 de abril de 2018

Moodle Recaptcha v2 upgrade

Estimados moodlelovers


Google dio por obsoleta la versión 1 de recaptcha, por lo cual es necesario actualizar la versión de las claves de recaptcha a la versión 2



Por lo tanto, nuestro formulario de registro presenta el error de la imagen anterior.

Para solucionar este problema se requieren de ciertas condiciones:

1. Tener actualizado el moodle, es decir, la versión stable con las ultimas actualizaciones de seguridad y fixes.

  • 3.1.11+
  • 3.2.8+
  • 3.3.5+

2. Crear una nueva clave recaptcha v2 (y borrar la anterior)

Ingrese a https://www.google.com/recaptcha/admin#list
Elimine su clave anterior
Registre una nueva clave

3. Agregue su nueva clave a moodle

Ingrese con una cuenta de administrador a moodle
De clic en Administración del sitio-> Plugins -> Autentificación -> Gestionar autentificación

Borre sus claves anteriores y coloque las nuevas según corresponda



De clic en guardar cambios.


4. Pruebe su formulario de registro.


Caso 2. Sitio modificado manualmente o con moodle anterior a 3.1

En este caso que usted tiene un moodle que no ha sido actualizado o ha sido modificado, para lograr la implementación de la recapcha v2 debe seguir las instrucciones oficiales en el siguiente vínculo:

https://github.com/jswebster/moodle/compare/MOODLE_31_STABLE...MDL-48501-mdl31


donde debe copiar una nueva librería: lib/recaptchalib_v2.php
y modificar los archivos: 

login/signup_form.php
lib/form/recaptcha.php
mod/feedback/item/captcha/lib.php



Espero les sirva. Saludos















viernes, 27 de enero de 2017

Microsoft office ha detectado un error durante la instalacion

Microsoft Office encountered error setup 

 -- Microsoft office ha detectado un error durante la instalacion --



Hace días me trajeron una Asus Laptop a reparar por que no servia el wi-fi.
Se resolvió reinstalando el SO, en este caso Windows 10.
Sin embargo, cuando intente instalar  Microsoft office 2013 64 bits, comenzaba la instalación y casi al final me mandaba el error "  Microsoft office ha detectado un error durante la instalacion ". Intente instalar otras versiones: 2016, 2010, versión de 32 bits pero ninguna funcionó. 


Solución


Busqué por algunas páginas por varios días y la solución la encontré aquí: 
https://answers.microsoft.com/en-us/msoffice/forum/msoffice_excel-mso_winother/cannot-install-office-2013-error-microsoft-office/e73faec4-3d6c-4a95-b610-4510a6011a55

en las pestañas 7 y 13 ( 2017-01-25 )

El procedimiento es el siguiente:

1.- Primero, eliminar instalaciones anteriores de office

2. Borrar carpeta Microsoft Help
  • Una vez que el proceso del fix it termino, oprima Windows key + R entonces aparecerá la ventana de ejecutar, escriba: %Programdata%
  • Renombrar la carpeta 'Microsoft Help' como 'Microsoft Help. OLD' 

3. Ingresar a C:\usuarios\usuarioActual\AppData\Local\  y borrar la carpeta Microsoft Help

4. Eliminar la carpeta office en el programador de tareas
  • Dar clic en Boton de Inicio y busquar el Panel de control ( windows 10 use cortana)
  • Dar clic en Sistema y mantenimiento-> Herramientas Administrativas
  • Dar clic en Programador de tareas ( Task Scheduler )
  • Dar clic en Biblioteca del programador de tareas->Microsoft  (panel izquierdo)
  • Borrar la carpeta Office

Instalar office

5. Dar clic en el instalador de office
6. Seleccionar Personalizado (custom)
7. En Herramientas de office deshabilitar la opción: Office Telemetry
8. Continuar la instalación

9. Enhorabuena... es tiempo de activar su producto

Saludos
 



miércoles, 27 de julio de 2016

Detener un video de Youtube con javascript insertado mediante iframe

Hola a todos

En ocasiones tenemos una serie de videos de youtube embebidos mediante iframes en una misma página, que bien pueden estar ocultos o en tabs. Pero cuando le damos play a uno y después pasamos a otro tab o boton, este no se detiene. 

Para lograr pausar un video al dar clic en un boton usaremos javascript y un truco que encontre hace días en stackoverflow (el cual está desactualizado, 2012). 

Librerías que necesitamos: 

<script src="js/jquery.js"></script>

Insertamos el siguiente código en el <head>

<script>
<!--
$(function() {
    //NOTE: in url is necessary add ?enablejsapi=1
    function playVideoAndPauseOthers(frame) {
        $('iframe[src*="https://www.youtube.com/embed/"]').each(function(i) {
            var func = this === frame ? 'playVideo' : 'pauseVideo';
            this.contentWindow.postMessage('{"event":"command","func":"' + func + '","args":""}', '*');
        });
    }
   
    $('div a[title^="video"]').click(function() {
        var frameId = /video(\d+)/.exec($(this).attr('title'));
        //alert(frameId);
        if (frameId !== null) {
            frameId = frameId[1]; // Get frameId
            playVideoAndPauseOthers($('#video' + frameId + ' iframe')[0]);
        }
    });
});

-->
</script>


 y nuestros html debe esta de la siguiente manera:

<div id="video1">
      <iframe name="video1" width="600" height="315" src="https://www.youtube.com/watch?v=uYbsSj6t0V4?enablejsapi=1" frameborder="0" allowfullscreen></iframe>
    </div>
    <div id="video2">
      <iframe name="video2" width="600" height="315" src="https://www.youtube.com/watch?v=sEe1ZGhYSWs?enablejsapi=1" frameborder="0" allowfullscreen></iframe>
    </div>


  <div><a href="#" title="video1">Opción A</a></div>
  <div><a href="#" title="video2">Opción B</a></div>



 Tomen en nota y es muy importante, después de la url de cada video hay que agregar
?enablejsapi=1 lo cual indica que se utilizará la API de Youtube

Es todo, cuando le de clic al botón A se iniciará el video1, al dar clic al boton b, se dentendrá el video1 y se iniciará el video2, y viceversa.

El código se puede cambiar y dejar de hacer referencia al atributo title del div y usar un data- , pero eso lo dejo de tarea. 

Saludos