LinuxParty
Publica USA Today que el multimillonario australiano Clive Palmer ha revelado sus planes para la construcción del Titanic II, un crucero diseñado como una "gran escala re-creación" del Titanic, y agregó que la nave se construirá en China y comenzará el transporte de pasajeros en el año 2016. El Titanic II tendrá 883 metros de largo -. 3 pulgadas más largo que el Titanic original - y pesará 55.800 toneladas brutas, según Palmer, que no llama al buque insumergible. Llevará un máximo de 2.435 pasajeros y 900 miembros de la tripulación, y contará con gimnasio, baño turco, pista de squash, una piscina, un teatro y un casino. Al igual que la nave original, no habrá televisores a bordo y, probablemente, no habrá servicio de Internet, dice Palmer. Los pasajeros podrán a vestirse con ropa del estilo de 1912, dándoles la oportunidad de dar un paso atrás en el tiempo, o fingir que son Leo DiCaprio o Kate Winslet, quienes protagonizaron en 1997 la película de éxito de taquilla de James Cameron. Pero expertos de la industria son escépticos sobre la viabilidad comercial de la nave.
Ubuntu para móviles, o la versión de Ubuntu para dispositivos táctiles, está despertando bastante interés entre los usuarios y las empresas del sector, ganando además diversos reconocimientos en el camino. El último de ellos recibido en el marco del Mobile World Congress 2013.
Know Your Mobile ha otorgado a Canonical el reconocimiento a Mejor innovación (Best Innovation) por su trabajo en la versión táctil de Ubuntu para móviles y tabletas.
Un módulo es un elemento de contenido que puede ser situado junto a un artículo. Por ejemplo, un menú es un módulo. El pequeño bloque de registro de la parte izquierda, también es un módulo. Puedes crear tantos módulos como quieras, y colocarlos en distintas áreas predefinidas de la plantilla.En este tutorial se explica cómo crear un módulo simple. A través del cual, aprenderá la estructura básica de archivos de un módulo. Esta estructura básica puede ser ampliada para producir módulos más elaborados.
Tenemos la programación de un módulo algo más sencillo en este artículo.
Programar un módulo para Joomla! 2.5
Todo el contenido expuesto en este artículo, está extraído y traducido de la documentación que la comunidad de Joomla! ofrece íntegramente en inglés en su sección para desarrolladores. Para más información siga este enlace.
Este tutorial le proporciona lo básico, de lo que se necesita saber para desarrollar tu propio módulo y un poquito más. Para lograr esto, la mejor forma es crear un módulo básico que nos muestre, que es lo que debe tener un módulo para su operabilidad en Joomla! 2.5. Nuestro módulo de ejemplo, su función será, mostrar otros artículos del mismo autor. Aunque en el transcurso del tutorial iremos explicando y exponiendo el código de nuestro módulo, al final de este artículo encontrarán un enlace a la descarga del fichero adjunto, donde podrá obtener el módulo con todos los pasos aquí expuesto y listo para su instalación.
Estructura de archivos
Hay cuatro archivos básicos que se utilizan dentro del patrón estándar en el desarrollo de un módulo:
- mod_author_related.php - Este archivo es el principal punto de entrada para el módulo. Se llevarán a cabo las rutinas de inicialización necesarias, llamar a las rutinas auxiliares para recoger todos los datos necesarios, e incluir la plantilla que muestra la salida del módulo.
- mod_author_related.xml - Este archivo contiene información acerca del módulo. En él se definen los archivos que necesitan ser instalados por el instalador de Joomla! y especifica los parámetros de configuración del módulo.
- helper.php - Este archivo contiene la clase helper que se utiliza para hacer el trabajo real en la recuperación de la información que se muestra en el módulo (por lo general a partir de la base de datos o alguna otra fuente).
- tmpl/default.php - Esta es la plantilla del módulo. Este archivo tomará los datos recogidos por el mod_author_related.php y generará el código HTML que se muestra en la página.
Creación del mod_author_related.php
El archivo mod_author_related.php llevará a cabo tres tareas:
- Incluir el archivo helper.php que contiene la clase que se utiliza para recoger los datos necesarios.
- Invocar el método apropiado para recuperar los datos.
- Incluir la plantilla para mostrar la salida.
Siguiendo estos tres puntos, vamos a colocar un poco de código en nuestro archivo. La clase helper está definida en nuestro archivo helper.php . Este archivo se incluye con la declaración require_once .
require_once dirname(__FILE__).'/helper.php';
require_once se utiliza porque nuestras funciones auxiliares se definen dentro de una clase, y sólo queremos la clase definida, una vez.
Para invocar a nuestro método utilizaremos las siguientes líneas:
mod_author_related.php
<?php $cacheparams = new stdClass; $cacheparams->class = 'modAuthorRelatedHelper'; $cacheparams->method = 'authorRelated'; $list = JModuleHelper::moduleCache ($module, $params, $cacheparams); require JModuleHelper::getLayoutPath('mod_author_related', $params->get('layout', 'default')); ?>
Y para incluir la plantilla que muestra el HTML de nuestro módulo, usamos está línea:
require JModuleHelper::getLayoutPath('mod_author_related', $params->get('layout', 'default'));
Visto esto, nuestro archivo mod_author_related.php completo es el siguiente:
<?php // No permitir el acceso directo al archivo defined('_JEXEC') or die; // Incluye las funciones sólo una vez require_once dirname(__FILE__).'/helper.php'; // Invocar el método apropiado $cacheparams = new stdClass; $cacheparams->cachemode = 'safeuri'; $cacheparams->class = 'modAuthorRelatedHelper'; $cacheparams->method = 'authorRelated'; $cacheparams->methodparams = $params; $cacheparams->modeparams = array('id'=>'int', 'Itemid'=>'int'); $list = JModuleHelper::moduleCache ($module, $params, $cacheparams); if (!count($list)) { return; } $moduleclass_sfx = htmlspecialchars($params->get('moduleclass_sfx')); $showDate = $params->get('showDate', 0); // Incluir la plantilla que mostrará los datos recogidos require JModuleHelper::getLayoutPath('mod_author_related', $params->get('layout', 'default')); ?>
Creación del helper.php
El archivo helper.php contiene la clase necesaria para recuperar los datos que se muestran en la salida del módulo. Esta clase a su vez tendrá un método que se encargara de dicha tarea.
Aquí está el código para el archivo helper.php:
Observe que no se incluye la etiqueta de cierre de php “?>”.
<?php // No permitir el acceso directo al archivo defined('_JEXEC') or die; // Utilizado para la ruta a los artículos require_once JPATH_SITE.'/components/com_content/helpers/route.php'; // Clase helper que se utiliza para hacer el trabajo real en la recuperación de la información abstract class modAuthorRelatedHelper { // Método que implementa la captura de la información necesaria a ser mostrada public static function authorRelated($params) { $db = JFactory::getDbo(); $app = JFactory::getApplication(); $user = JFactory::getUser(); $userId = (int) $user->get('id'); $count = intval($params->get('count', 5)); $groups = implode(',', $user->getAuthorisedViewLevels()); $date = JFactory::getDate(); $option = JRequest::getCmd('option'); $view = JRequest::getCmd('view'); $temp = JRequest::getString('id'); $temp = explode(':', $temp); $id = $temp[0]; $showDate = $params->get('showDate', 0); $nullDate = $db->getNullDate(); $now = $date->toSql(); $related = array(); $query = $db->getQuery(true); if ($option == 'com_content' && $view == 'article' && $id) { // seleccionar el autor del artículo $query->select('created_by'); $query->from('#__content'); $query->where('id = ' . (int) $id); $db->setQuery($query); $author = $db->loadResult(); $query->clear(); // Filtrar el contenido del autor $query->select('a.id as art'); $query->select('a.title'); $query->select('DATE_FORMAT(a.created, "%Y-%m-%d") as created'); $query->select('a.catid as cat'); $query->from('#__content AS a'); $query->where('a.id != ' . (int) $id); $query->where('a.state = 1'); $query->where('a.access IN (' . $groups . ')'); $query->where('(a.publish_up = '.$db->Quote($nullDate).' OR a.publish_up <= '.$db->Quote($now).')'); $query->where('(a.publish_down = '.$db->Quote($nullDate).' OR a.publish_down >= '.$db->Quote($now).')'); $query->where('a.created_by = ' . (int) $author); // Filtrar por idioma if ($app->getLanguageFilter()) { $query->where('a.language in (' . $db->Quote(JFactory::getLanguage()->getTag()) . ',' . $db->Quote('*') . ')'); } $db->setQuery($query); $temp = $db->loadObjectList(); if (count($temp)) { foreach ($temp as $row) { $row->route = JRoute::_(ContentHelperRoute::getArticleRoute($row->art, $row->cat)); $related[] = $row; } } unset ($temp); } return $related; } }
Como puedes darte cuenta, tenemos dos cosas importantes en este archivo:
- La clase modAuthorRelatedHelper : Que no existe ninguna regla, que obligue a escribir el nombre de dicha clase de esa forma, pero nos ayuda a hacer esto para que sea fácilmente identificable y localizable.
- Y el método authorRelated() : Que es donde dejamos volar nuestros conocimientos, y ponemos o programamos la captura de la información que se desea mostrar.
Creación del tmpl/default.php
El archivo default.php es la plantilla que muestra la salida del módulo. El código para el archivo default.php es el siguiente:
<?php // No permitir el acceso directo al archivo defined('_JEXEC') or die; ?> <ul class="authorelated<?php echo $moduleclass_sfx; ?>"> <?php foreach ($list as $item) : ?> <li> <a href="/<?php echo $item->route; ?>"> <?php if ($showDate) echo JHTML::_('date', $item->created, JText::_('DATE_FORMAT_LC4')). " - "; ?> <?php echo $item->title; ?> </a> </li> <?php endforeach; ?> </ul>
Aquí mostramos los títulos de los otros artículos del autor a través de $item->title, con la opción de mostrar o no la fecha. Esta opción de mostrar o no la fecha se hace a través del parámetro showDate, que vamos a definir a continuación en el archivo XML de nuestro módulo.
Han pasado algo más de 6 meses desde que Google Fiber comenzase a operar en Kansas City, ofreciendo a los habitantes de esta ciudad una conexión FTTH de 1 Gbps (tanto en subida como en bajada) por un precio de 70 dólares al mes además de un servicio básico de acceso gratuito con 5 Mbps de velocidad (tras pagar los costes de instalación que rondan los 300 dólares). La irrupción de Google en el sector de los operadores era algo que no iba a pasar inadvertido y, gracias a este proyecto piloto, comienzan a verse algunos efectos en el sector de las telecomunicaciones de Estados Unidos que muestran que Google Fiber puede ser un importante tractor que haga evolucionar este mercado. Más información y datos concretos en el artículo El impacto de Google Fiber en el sector de las telecomunicaciones de EE.UU..
Mozilla nos infoforma que 18 operadores móviles en el Mobile World Congress 2013 en Barcelona, anunciaron su compromiso con Firefox OS, que se potencia como el primer dispositivo Open Web del mundo.
Estos operadores incluyen: América Móvil, China Unicom, Deutsche Telekom, Etisalat, Hutchison Three Group, KDDI, KT, MegaFon, Qtel, SingTel, Smart, Sprint, Telecom Italia Group, Telefónica, Telenor, TMN and VimpelCom. Telstra acoge la iniciativa de Mozilla como una oportunidad para ofrecer una experiencia innovadora de la Web móvil a sus clientes. La amplitud de los operadores demuestra la confianza de la industria en FirefoxOS de Mozilla como plataforma móvil completamente adaptable, sin restricciones. La primera ola de dispositivos Firefox OS estará disponible para los consumidores en Brasil, Colombia, Hungría, México, Montenegro, Polonia, Serbia, España y Venezuela. Mercados adicionales se anunciarán pronto.
The Register publicó que Microsoft criticó a los fabricantes de PC de las razones del fracaso de Windows 8. Microsoft está "frustrado con los principales OEMs que no fabrican sistemas suficientemente cercanos". Pero los Fabricantes de PC devolvieron el golpe, diciendo que "habrían tenido que cargar con los costos de una enorme pila de unidades sin vender", alegando que los clientes realmente evitan productos táctiles de gama alta y prefieren comprar productos de gama más baja y ordenadores portátiles más baratos'. Microsoft no les culpa directamente por "el fracaso de su propio dispositivo táctil, Surface Pro RT.
Aunque los teléfonos móviles han avanzado una barbaridad en cuanto a su diseño, pasando del ladrillo Nokia o de la sobredosis de botones de la BlackBerry a las líneas puras y futuristas del iPhone o de los Galaxy S, siguen teniendo un momento de lo más antiestético: cuando los cargamos.
Ver a un precioso smartphone enganchado a un cable tiene algo extraño, como ver a Cristiano Ronaldo en el banquillo o a Fernando Alonso en una Vespino. Los equipos de diseño e ingeniería de Apple o de Samsung no parecen haberle prestado mucha atención a este problema, porque siguen utilizando el mismo sistema de carga que los móviles de los 90.
Puede, que no todo el mundo esté de acuerdo con el contenido de este artículo, pero fue el resultado de una encuesta de opinión, junto con algunas características que deben estar presentes a la hora de elegir la distribución a instalar, debe tener un mantenimiento, (no valen distros antiguas) tiene que tener un entorno liviano, rápido (razón, por la que Xubuntu, por ejemplo no se ha incluido -usa Gnome-) y amigable, junto con una suite ofimática, y al menos la posibilidad de configuración e instalación de nuevas cosas, no es una competición de distribuciones, no lo queremos por lo menos así presentar, es una idea para que puedas aprovechar tu viejo ordenador, y estas han sido las elegidas (existen muchas más ahí fuera):
¿Cuáles son los mejores antivirus para Android.?
Hemos dicho en varias oportunidades que es imperativo tener una aplicación de esta índole en nuestro equipo con Android. Los virus son recientes en el sistema operativo de Google, y no son tan numerosos como en, por ejemplo, Windows, pero son una amenaza real que tenemos que considerar. Afortunadamente, algunos nombres conocidos se han unido a la necesidad de tener protección en Android, y en esta lista que les presentamos van a poder encontrar caras familiares –que pueden generar más comodidad si, por ejemplo, ya lo estamos usando desde un ordenador-.
A continuación, les presentamos una serie de los cinco mejores antivirus para Android. Como siempre, están bienvenidos a dejar sus sugerencias en los comentarios.
-
Censura
- Un juez brasileño ordena bloquear Whatsapp 72 horas en todo el país
- Rusia pretenda prohibir Tor, VPNs y otras herramientas de anonimato
- AEDE tacha de "inaceptable" que la CEOE pida la supresión de la 'tasa Google'
- Jarvis, ¡PELIGRO! el Canon AEDE y el control de Internet
- Demostración del plugin para Joomla, Anti AEDE y CEDRO
- El Gobierno de España está librando una guerra contra internet y tú eres la víctima
- La "Tasa Google" costará más de 1000 millones al año a los usuarios españoles
- Ser bloguero en Rusia es hoy más complicado: no a los pseudónimos, al lenguaje 'obsceno' y mucho más
- The Pirate Bay lanza su navegador para evadir bloqueos ISP
- "Pirate Box": una red alternativa a Internet nació en Clermont-Ferrand
- Cientos de blogueros protestan en Singapur contra la regulación de Internet
- Un comité de ''indeseables'' propone la eliminación de la neutralidad en la red
- Ley Sinde-Wert: la Comisión de Censura comienza a actuar
- La ley SOPA se retira, el proyecto PIPA se pospone
- Desmentido el “abandono” de Series Yonkis por Burn Media S.L.