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


jueves, 21 de enero de 2016

Windows 10 + apache 2.4 y php 5.5



Actualmente Apache httpd se tiene que descargar de páginas alternativas donde lo han compilado.

Instalando apache 

Descargue desde: http://www.apachehaus.com/cgi-bin/download.plx

Descomprima en su pc, en mi caso renombro la carpeta para que sea mas fácil:

E:/servidor/Apache24

Edite el archivo Apache24/conf/httpd.conf  con los valores de la ruta de la carpeta donde se localiza apache

Define SRVROOT "E:/server/Apache24"

DocumentRoot "E:/server/www"
<Directory "E:/server/www">


guarde e inicie desde una consola y ejecute el archivo

Apache24/bin/httpd

Inicie su explorador y escriba en la barra de dirección

localhost

El empaquetado viene con una guía para mayor información.
(httpd-2.4.18-x64-vc11/readme_first.html)


Instalando PHP5

Intente descargar varias versiones de php pero la única que tiene la librería php5papache2_4.dll es la
php-5.5.5-Win32-VC11-x64.zip 
 

Descargue php 5 desde http://windows.php.net/downloads/releases/archives/ 
Descomprima y coloque en una ubicación adecuada

E:/servidor/php


Duplique el archivo php.ini-production como php.ini

Edite el archivo httpd.conf de apache para configurar su uso con php

Agrege y edite las siguientes líneas

LoadModule php5_module "E:/server/php/php5apache2_4.dll"

DirectoryIndex index.php index.html
AddType application/x-httpd-php .php

Guarde y reinicie apache

verifique en httpd://localhost con un archivo que tenga código php


Ejecutando  Apache como servicio


Para agregar apache como un servicio de windows y se ejecute desde el inicio, ejecute el siguiente comando desde la consola:

httpd.exe -k install -n "Apache24"

Ahora puede verificar en el administrador de servicios que Apache24 ha sido agregado.

Es todo, espero agregar el uso de mysql próximamente.

Saludos =)


viernes, 8 de mayo de 2015

EZPDF especificar color en RGB


EZPDF es una gran librería para crear proyectos sencillos, sin embargo, conforme se avanza, deseamos tener más personalizada la salida de datos.

Con ese objetivo me encontré con un problema, darle un color específico a las tablas, celdas, líneas, etc.

Al ver las especificaciones de las funciones leí en el manual que se usa RGB  para dar color a los elementos,  entonces lo primero que hice fue poner los colores en el formato 255,255,255. Desafortunadamente no funciono, me daba un color azul turquesa o un blanco. Cosa fatal cuando tiene uno prisa.  El manual en uno de los apartados menciona que los colores deben estar en un rango de -0,1. Así que comencé a experimentar con poner (0, 0.7, 0.8) y tenía los mismos resultados: color turquesa o blanco.

La solución

Resulta ser que tenemos que dividir el 1 entre 255 y multiplicar por el color deseado en rgb

Color deseado RGB : 0,157,255      

Color deseado EZPDF:  = (1/255) * 157 = 0.61

setStrokeColor(0, 0.61,1)

o  para las celdas de las tablas

'shadeCol2' => array(0.81,0.84,0.9)


Nota: en algunos sitios encontre valores mayores a uno en sus ejemplos. No se la razón por que tambien funciona con esos numeros :/

EZPDF Centrar datos en columnas de las tablas de documentos PDF

Hace poco estaba realizando un reporte en pdf, para lo cual necesitaba listar datos en una tabla. Sin embargo, todas las columnas tenian el mismo ancho. El manual  PHP Pdf Creation de R&OS esta algo incompleto, así que buscando en internet por horas, encontré por casualidad como resolverlo.

La solución

El manejo de datos en EZPDF se hace mediante array
Para ello hay que pasarle los parametros al objeto que construye la tabla en la variable de opciones poniendo como clave de referencia cols que refiere a las columnas, y después describir el comportamiento de cada una de ellas a través de otro array. Es decir, es un array de arrays de opciones.


Ejemplo

$options['showHeadings'] =1;
$opcions['showlines'] = 1;
$options['shaded'] =1;
$options['shadeCol'] =array(0.81,0.84,0.9);
$opcions['shadeCol2'] = array(0.91,0.93,0.95);
$options['xPos'] ='left';
$options['xOrientation'] ='right';
$options['textCol'] = array(0,0,0);
$options['width'] =500;
$options['cols'] = array('col_num'=>array('justification'=>'center', 'width'=>30),'col_datos'=>array('justification'=>'left'),'col_total'=>array('justification'=>'center', 'width'=>100) );
$pdf->ezTable($data, $titles, '', $options);

Salida (Claro será en su documento pdf, esto es solo ilustrativo)


num datos total


Saludos

PHP Evaluar una expresión matemática (fórmula) almacenada en un string

En ocasiones hay datos almacenados en algún string con fórmulas que deseamos ejecutar en php, por ejemplo 2+4*6.  Una solución es recorrer el string caracter por caracter para comparar operadores, variables y elementos, pero eso nos llevaría un buen rato de programar.

La solución

Usar la función eval()

<?php
//php 4.3
$formula = "2+4*6";
eval(" $var = $formula; ");
echo $var;
?>


<?php
// php 5,6 y 7
$formula = "2+4*6";
$var = eval("return ".$formula.";");
print $var;

?>


Nuestra salida es 26


Así de fácil