La presente es una plática que he venido impartiendo en diferentes Universidades, procuraré mantenerla actualizada. Al final agradeceré dejo link de descarga del material íntegro.

*Explotación VS creación
*¿Normalidad?
Modelos de negocios:
***Preparación/capacitación
***Desarrollo de productos
***Distribuidor
***Instalación-Integración-Soporte
***Distribuidor
***Asesoría & Consultoría
Fracasar para ganar

Sigue leyendo



super-bowl-xlviii-doug-baldwin-champ-bailey_pg_600Como algunos de ustedes saben éste Super Bowl lo esperé con mucho entusiasmo, desde inicio de temporada aposté por Broncos de Denver para finalista y estaba seguro que con el liderazgo de Peyton Manning el equipo sería campeón de una liga tan competitiva como la NFL, luego de vencer con contundencia a los Patriotas no me quedaba duda, la mejor ofensiva, el mejor equipo sería campeón.

Sigue leyendo


El presente es un breve análisis de los sitios más visitados en México durante el año 2013, el objetivo es agrupar los sitios web más visitados en categorías de acuerdo a su modelo de negocio, con esto observar las principales tendencias a futuro. La estadística web fue realizada por ALEXA, la analítica es realizada por el equipo de www.mundosica.com
En palabras de ALEXA: “Los sitios en los mejores sitios de las listas se ordenan según su rango de tráfico 1 mes alexa.
El rango de 1 mes se calcula utilizando una combinación de los visitantes y páginas vistas diarias promedio en el último mes. El sitio con la combinación más alta de visitantes y páginas vistas es el número 1.sitios-mas-visitados-2013

Sigue leyendo


¿fireProblemas con tu computadora? No permitas perder tu valiosa información.

Configuración de tu router
$500 Por red
  • Revisión de tu red.
  • Prevension inti-intrusos.
  • Bloqueos de sitios web.
  • Bloqueos de software.
  • Reporte & Diagnóstico de red. Contratar
Soporte preventivo
$270 Por equipo
  • Revisión del equipo.
  • Limpieza del equipo
  • Administración de su software.
  • Optimización de su equipo.
  • Diagnóstico de su equipo. Contratar
Polizas de servicio
$220 Mensuales por equipo
  • Revisión de equipos.
  • Dos visitas programadas
  • Soporte via e-mail/telefónico.
  • Administración de su software.
  • Seguimiento de incidencias. Contratar
Soporte correctivo
$320 Por equipo(el precio puede llegar a variar)
  • Revisión del equipo.
  • Limpieza del equipo
  • Reinstalación/migración de s.o.
  • Instalación de software.
  • Diagnóstico de su equipo. Contratar


adios2013
Se acaba el año y no queda más que expresarle nuestra más sincero agradecimiento por todo un año de confianza.
Es tiempo de mirar de frente el nuevo año, fomar fuerzas para la nueva aventura y convivir con familiares y amigos; por tanto le informamos que el 21 de Diciembre nos  vamos de vacaciones regresando para seguir trabajando a su lado a partir del 03 de Enero.

Muchas gracias por la confianza y nuestros mejores deseos.



Esto es una serie de artículos donde tratare de explicar como desarrollar un plugin en Joomla 3, explicando como hacer un plugin que nos permita agregar información antes y después del contenido, así como modificarlo, el resultado de un articulo con dicho plugin activado es el siguiente:

Plugin Test Eventos

Resultado tras crear el plugin

Plugins en Joomla ¿Que diablos es un plugin?

Cabe mencionar que un plugin en Joomla es lo que antes eran conocidos como mambots en las primeras versiones de Joomla(cuando heredo de Mambo), menciono esto no por que sea un romántico de lo antaño, si no por que me parece mas fácil entender un plugin desde el concepto de un bot(robot o automata).

Dicho esto un Plugin en Joomla es una extensión que una vez activada dispara funcionalidades en determinados eventos.

Funcionamiento de un Plugin ¿como carajo me pueden servir?

Nos sirve para agregarle funcionalidad y personalizar el comportamiento de nuestro portal Joomla, usando plugins por ejemplo podemos:

  • Detectar y hacer algo en las autenticaciones fallidas.
  • Modificar los contenidos p.e. agregar botones de redes sociales, formularios, etc…
  • Realizar cierta acción cuando el usuario busque determinada información.
  • Enviar un correo electrónico de felicitación al usuario registrado núm 1000.
  • Realizar acciones del sistema como re-direccionamientos o manejo de errores.

Y muchas otras acciones más que pueden llegar a realizar nuestros sitios, solo es cuestión de enganchar el evento adecuado y un poco de imaginación.

Grupos de plugin ¿Como están divididos los plugins?

Cabe mencionar que los Plugins a su vez están divididos en grupos según su funcionalidad:

  • authentication
  • captcha
  • content
  • editors
  • extension
  • finder
  • search
  • system
  • user

Si observas la carpeta /plugins/ encontraras una subcarpeta para cada grupo ahí también encontraras una serie de plugins para cada grupo que te puede servir de ejemplo. Por cada grupo se definen una serie de eventos(disparados en funciones), en este manual voy a explicar el funcionamiento del grupo que corresponde a los contenidos (content).

Los eventos definidos en Content mas comunes son los siguientes:

onContentPrepare Modificando el contenido

Esta función es ejecutada antes de que el artículo se imprima en la pantalla. Si quiere modificar el contenido(ó el titulo) de alguna manera, este sería el mejor lugar para realizar estas modificaciones.

onContentBeforeDisplay Agregando texto previo al contenido

Esta función es disparada antes de que Joomla mande a imprimir el cuerpo de un contenido, aquí podemos devolver algun texto que queramos que se muestre en dicho espacio.

onContentAfterDisplay Agregando texto posterior al contenido

Esta función es disparada depues de que Joomla mande a imprimir el cuerpo de un contenido, aquí podemos devolver algún texto que queramos que se muestre en dicho espacio.

Haciendo nuestro primer plugin de Contenido Ejemplo con los eventos mas comunes

Vamos a desarollar un plugin del tipo contenido que nos sirva para probar los eventos que podemos usar(en realidad los mas comunes).

Definición del archivo instalador

<?xml version="1.0" encoding="utf-8"?>
<extension version="3.0" type="plugin" group="content" method="upgrade">
    <name>Test Eventos de Plugins</name>
    <author>Fitorec</author>
    <creationDate>02-04-2013</creationDate>
    <authorEmail>programacion@mundosica.com</authorEmail>
    <license>GNU/GPL version 2 or later</license>
    <authorUrl>http://www.mundosica.com</authorUrl>
    <version>1.0</version>
    <description>
        Plugin de prueba que nos muestra un el funcionamiento de los eventos en un Plugin de Joomla!
    </description>
    <files>
        <filename plugin="TestPluginEventos">TestPluginEventos.php</filename>
        <filename>TestPluginEventos.xml</filename>
    </files>
</extension>

El archivo anterior define una extensión para la versión 3.0, del tipo Plugin, que pertenece al grupo Content.

También definimos el nombre que tendrá el plugin y mas datos como autor, descripción, etc..

Algo muy importante es que definimos que el plugin TestPluginEventos esta ubidado en el archivo TestPluginEventos.php.

Faltaría definir el archivo TestPluginEventos.php donde pondremos el Plugin en cuestión.

<?php
// Restringe el Acceso al archivo si no es desde el Entorno Joomla.
defined('_JEXEC') or die;

/**
 * Plugin test de Eventos.
 */

class plgContentTestPluginEventos extends JPlugin
{
    private $_titulo = '<h3 style="color: %s">%s</h3>';

/**
 * Constructor del objeto
 * 
 * @param object &$subject es una instancia del objeto a construir
 * @param array $config parámetro opcional arreglo asociativo: puede contener las claves
 *                      'name', 'group', 'params', 'language'
 */
    public function __construct(&$subject, $config)
    {
        parent::__construct($subject, $config);
    }//fin constructor

/**
 * Esta función es ejecutada antes de renderizar el articulo
 *
 * @param String $context es el contexto en el cual es ejecutada
 * @param Object $row es un objeto que contiene la información del articulo(como titulo, contenido, url, autor, etc)
 * @param Object $params es un objeto que contiene la información del portal y parametros del plugin
 * @param Integer $limitstart desplazamiento del elemento
 */
    public function onContentPrepare($context, &$row, &$params, $limitstart)
    {
        if($context == 'com_content.article')
            $row->text = '<p>Contenido modificado en el evento <b>onContentPrepare</b></p>' . $row->text;
    }//fin onContentPrepare

/**
 * Esta función es ejecutada antes de mostrar renderizar el cuerpo del articulo
 *
 * @param String $context es el contexto en el cual es ejecutada
 * @param Object $row es un objeto que contiene la información del articulo(como contenido, url, autor, etc)
 * @param Object $params es un objeto que contiene la información del portal y parametros del plugin
 * @param Integer $limitstart desplazamiento del elemento
 */
    public function onContentBeforeDisplay($context, &$row, &$params, $limitstart)
    {
        return sprintf($this->_titulo, '#FF4A00', 'Evento onContentBeforeDisplay');
    }//fin onContentBeforeDisplay

/**
 * Esta función es ejecutada después de mostrar renderizar el cuerpo del articulo
 *
 * @param String $context es el contexto en el cual es ejecutada
 * @param Object $row es un objeto que contiene la información del articulo(como contenido, url, autor, etc)
 * @param Object $params es un objeto que contiene la información del portal y parametros del plugin
 * @param Integer $limitstart desplazamiento del elemento
 */
    public function onContentAfterDisplay($context, &$row, &$params, $limitstart)
    {
            return sprintf($this->_titulo, '#1C9202', 'Evento onContentAfterDisplay');
    }//fin onContentAfterDisplay

}

Como podemos ver un Plugin de Joomla es un Objeto que hereda de JPlugin esta clase esta definida en /libraries/joomla/plugin/plugin.php.

Es importante mencionar que al nombre de la clase se le agrega el prefijo plgContent, ya que es un plugin (plg) del tipo Contenido(Content) quedando finalmente como plgContentTestPluginEventos, si no nombramos correctamente la clase, Joomla no podrá ejecutar el plugin.

Enlaces recomendados y conclusiones

Quizas te preguntes que pasaría si ¿2 plugins(ó extensiones) activados ocuparan el mismo evento?, pues lo que sucede es que Joomla detecta las funciones definidas para determinado evento y va generando una lista de ellas para que una vez que ocurra el evento las ejecute todas, esto lo hace basado en el un patrón conodicido como Observer a continuación presento el diagrama UML del comportamiento de este patrón.

patrón Osbrver

Comportamiento patrón Observer

Si gusta abundar por en el tema le sugiero seguir las siguientes ligas:

Descarga este Plugin y proximos posts

Descargar este plugin | Visualizar el código fuente en Linea

En el siguiente articulo me gustaría hacer un plugin de contenido, ya con alguna funcionalidad mas especifica se me ocurre agregar botones de redes sociales, ocupando parámetros en el plugin.


Hace poco @joseArrona publico un tip que me pareció bastante interesante acerca de un malware que cambia los atributos de los archivos de un dispositivo.

Situación Analizando el escenario

En este caso tenemos un malware que a nuestros dispositivos les cambian los atributo a todos nuestros archivos a las siguientes características:

  • Archivos oculto.
  • Archivos de solo lectura.
  • Archivos del sistema.

Programación por lotes BatchScript comando attrib en acción

Bien Windows ® tiene una serie de comandos definidos para hacer ciertos cambios en nuestro sistema operativo de tal forma que podemos ejecutar las acciones básicas desde un entorno de lineas de comandos, cuando hacemos combinaciones de estos comandos esto es conocido como programación por lotes y el lenguaje que se suele utilizar es DOS, OS/2 cuando se ponen estas instrucciones en un archivo( con extensión .bat, .cmd o .btm) esto es conocido como batch-script.

Bien ya entrado en el tema DOS, OS/2 define un comando con el nombre de attrib nos ayuda a definir los atributos de un archivo o un conjunto de ellos, este comando tiene la siguiente sintaxis:

attrib [Atributos] [Ruta en donde se aplica] [Modificadores de comportamiento]

A continuación explicare cada parámetro que recibe a dicho comando.

Atributos

Los atributos están definidos por una letra que identifica el tipo de atributo a la cual se le antecede el símbolo + en caso que queramos agregarle dicho atributo o el símbolo - en caso que queramos quitarle dicho atributo.

Atributo Significado Ejemplo quitando atributo Ejemplo agregando atributo
r read, archivo de solo lectura -r +r
a archive, tipo archivo comun -a +a
s system, archivo del sistema -s +s
h Hidden, archivo oculto -h +h

Ruta donde se aplica

Recibe la ruta la cual puede ser por ejemplo si queremos que dicho comando trabaje sobre nuestra unidad F: entonces podemos usar la ruta F: y si queremos que sea un subdirectorio podríamos usar F:\alguna-carpeta\

Nota: Si no es especificada la ruta toma el directorio actual

Modificadores de comportamiento

Los modificadores de comportamiento nos ayudan a decirle al comando como queremos que actue y son básicamente 2:

  • /s : subdirectories, indica que queremos que actue en todos los subdirectorios de la ruta que le enviamos
  • /d : directories, indica que queremos asignarle dichos atributos también a las carpetas

Ejemplo

Explicado esto y dado el escenario, entonces queremos aplicar el comando attrib sobre el dispositivo F:, para quitar los siguientes atributos archivos del sistema (-s), de solo lectura(-r) y ocultos (-h); también queremos que aplique dichos cambios a todos los subdirectorios (/s) y a las carpetas (/d), entonces ejecutamos:

attrib -s -r -h F: /s/d

 

Revisar Ligas de Interes