Alt Text

El Festival Latinoamericano de Instalación de Software Libre (FLISoL) es el evento de difusión de Software Libre más grande en Latinoamérica. Se realiza desde el año 2005 y desde el 2008 se adoptó su realización el 4to Sábado de abril de cada año.

En esta oportunidad se dictarán charlas, instalaciones y demos de las siguientes distribuciones linux:

  • Ubuntu
  • Fedora
  • Xanadu
  • Canaima Wadameka (Live)

Requisitos mínimos para la instalación:

  • Debe poseer una partición en disco de por lo menos 8 GB
  • Si llevas tu Pc de escritorio, debes llevarla con todo (monitor - case - teclado - mouse)
  • Ganas de aprender ;)

Ubicación y fecha:

  • Fecha: Viernes, 02 de mayo de 2014
  • Hora: 9:00 am - 01:00 pm (corrido)
  • Lugar: Casa de la Cultura, Calle Salón c/Av. Universidad. Naguanagua, frente a INSALUD.

Charlas

  • Eduardo Echeverría Docker. Framework que permite crear containers lxc con todas las dependencias de una aplicación dada.
  • Jesús Palencia - ViSerProject Presentacion de Xanadu
  • Héctor A. Mantellini Protege tus trabajos usa Licencias Libres
  • Alexander Salas & Angel Cruz Gestión de Proyectos con GitHub
  • Enis Sanches Lista de Recursos y Herramientas Libres para la Educación

Duración de cada charlas: 30 Min

(link: http://flisol.info/FLISOL2014/Venezuela/Valencia text: Visita la wiki popup: yes)

Hacer defer el javascript es uno de esos temas que preocupan a quienes tienen una pagina web en cuanto al tema de la optimización de la misma.

Hay gente que hace esto:

``` <script type="text/javascript" defer="defer"> ... </script> ```
O también te encuentras con quienes dicen que uses async o que lo pongas al final de la pagina para todos ellos les tengo noticias: ESO NO FUNCIONA --------------- Google, en su gran sabiduría nos deja este script:
``` <script type="text/javascript"> function downloadJSAtOnload() { var element = document.createElement("script"); element.src = "deferredfunctions.js"; document.body.appendChild(element); } if (window.addEventListener) window.addEventListener("load", downloadJSAtOnload, false); else if (window.attachEvent) window.attachEvent("onload", downloadJSAtOnload); else window.onload = downloadJSAtOnload; </script> ```
Creo que no tiene explicación ¿cierto? Por si mismo se explica pero, de igual manera acá les dejo este (link: https://developers.google.com/speed/docs/best-practices/payload#DeferLoadingJS text: enlace popup: yes) para que lean un poco más :) Update: Bueno si, creo que debo explicarlo un poco xD Lo que debemos cambiar del script es lo siguiente:
``` element.src = "deferredfunctions.js"; ```
donde: deferredfunctions.js es nuestro script.

No hace mucho hice un shell script que mostraba la fecha de creación de una cuenta de Twitter pero a las pocas semanas quedo obsoleto por la implementación del API 1.1 que requiere que este tipo de llamas al API sean autenticadas vía OAuth lo cual no es tan sencillo si solo quieres usar bash.

Esta versión esta hecha en Python y a diferencia del anterior proporciona mas información sobre la cuenta. de hecho puede procesar varias cuentas al mismo tiempo, veamos el código fuente de este programa hecho en Python:

from __future__ import print_function, unicode_literals
import requests
from requests\_oauthlib import OAuth1
from urlparse import parse\_qs

handles = raw_input('Enter twitter handles: ').split()

CONSUMER_KEY = " "
CONSUMER_SECRET = " "
OAUTH_TOKEN = " "
OAUTH_TOKEN_SECRET = " "

def get_oauth():
  oauth = OAuth1(CONSUMER_KEY,
  client_secret=CONSUMER_SECRET,
  resource_owner_key=OAUTH_TOKEN,
  resource_owner_secret=OAUTH_TOKEN_SECRET)
  return oauth

if __name__ == "__main__":
  oauth = get_oauth()
  payload={'screen_name':handles}
  r = requests.post(url="https://api.twitter.com/1.1/users/lookup.json",data=payload,auth=oauth)
  user_obj = r.json()
  for line in user_obj:
    print("Handle: " , line['screen_name'])
    print("User ID: " , line['id'])
    print("Verified: " , line['verified'])
    print("Name: " , line['name'])
    print("Account Created: " , line['created_at'])
    print("Followers: " , line['followers_count'])
    print("Following: " , line['friends_count'])
    print("Tweet Count: " , line['statuses_count'])
    print("Favorites: " , line['favourites_count'])
    print('- - - - - - - - - - -\n')

El producto de este script usando mi Twitter handle (orvtech) luce así:

Handle: orvtech
User ID: 4412471
Verified: False
Name: Oliver
Account Created: Thu Apr 12 21:35:06 +0000 2007
Followers: 5710
Following: 558
Tweet Count: 20233
Favorites: 6514


¿Como ver la información de varias cuentas?

Para ver de varias cuentas de Twitter solo debes dárselas a este programa hecho en Python, separadas por espacios en blanco, sin el símbolo de arroba como lo puedes ver aquí:

$ ./user-info.py
Enter twitter handles: orvtech twitter protected


¿Que necesito para correr este script de Python?

Para ejecutar este script necesitas registar tu aplicación y generar unas llaves en apps.twitter.com/app/new para lo que deberás iniciar sesión con tu usuario de Twitter. Una vez registrada tu aplicacion deberas asignar los valores de las constantes CONSUMER_KEY, CONSUMER_SECRET, OAUTH_TOKEN y OAUTH_TOKEN_SECRET en el código fuente del script.

¿Qué es la extensión mysqli de PHP?

La extensión mysqli, o como a veces se le conoce, la extensión de MySQL mejorada, se desarrolló para aprovechar las nuevas funcionalidades encontradas en los sistemas MySQL con versión 4.1.3 o posterior. La extensión mysqli viene incluida en las versiones PHP 5 y posteriores.

La extensión mysqli contiene numerosos beneficios, siendo estas las mejoras principales respecto a la extensión mysql:

  • Interfaz orientada a objetos
  • Soporte para Declaraciones Preparadas
  • Soporte para Múltiples Declaraciones
  • Soporte para Transacciones
  • Mejoradas las opciones de depuración
  • Soporte para servidor empotrado

Para saber más clic (link: http://www.php.net/manual/es/mysqli.overview.php text: aquí popup: yes)

Ahora, vamos a la practica:

Primer paso

``` // Variables para la conexion define('host', 'localhost'); define('user', ''); define('pass', ''); define('db' , ''); //Abriendo una nueva conexion al MySQL server $mysqli = new mysqli(host, user, pass, db); //Salida por si hay algun error en la conexion if ($mysqli->connect_error) { die('Error: ('. $mysqli->connect_errno .') '. $mysqli->connect_error); } ```
Segundo paso: SELECT ====================
``` // Indicamos que es lo que queremos buscar por ejemplo, el id 1 de la tabla user $search_id = "1"; $query = "SELECT * FROM user WHERE id=?"; $statement = $mysqli->prepare($query); //bind parameters for markers, where (s = string, i = integer, d = double, b = blob) $statement->bind_param('s', $search_id); //execute query $statement->execute(); //bind result variables $statement->bind_result($id, $username, $password); //fetch records while($statement->fetch()) { echo '$id'; echo '$username'; echo '$password'; } ```
Tercer paso: DELETE ===================
``` // Indicamos que es lo que queremos buscar por ejemplo, el id 1 de la tabla user $search_id = "1"; $query = "DELETE FROM user WHERE id=?"; $statement = $mysqli->prepare($query); //bind parameters for markers, where (s = string, i = integer, d = double, b = blob) $statement->bind_param('s', $search_id); //execute query $statement->execute(); //bind parameters for markers, where (s = string, i = integer, d = double, b = blob) $statement->bind_param('s', $search_id); //execute query if ($statement->execute()){ echo 'Eliminado'; }else{ die('Error:('.$mysqli->errno.')'.$mysqli->error); } ```
NOTA: Algo que me percate fue que al realizar el DELETE si le colocaba el asterisco me daba un error, quite dicho asterisco y funciono... Extraño no? :| Cuarto paso: insert =================== Este paso lo dejare pendiente porque aun, no logro entender ciertas cosas ;) Quinto paso: Cerrar las conexiones abiertas ===========================================
``` //Esto debemos incluirlo en TODOS y cada uno de las consultas que hagamos $statement->close(); //Cerrando la conexion al MySQL server, debe ser incluido al final para no dejar conexiones abiertas mysqli_close($conexion); ```
Bueno, espero que les sea de utilidad :D FUENTE: (link: http://www.sanwebe.com/2013/03/basic-php-mysqli-usage text: PHP MySqli Basic usage popup: yes)
En una de nuestras publicaciones anteriores les hablamos sobre el proceso de cambio de "Sabor" de Ubuntu (recuerden que los sabores son distribuciones basadas en Ubuntu pero con cambios principales en: Escritorio, Netbook y/o Servidores). Este cambio se realizaba sin tener que instalar el sistema completo, específicamente cambiar de Ubuntu a Xubuntu.

Como comentamos en esa publicación este proceso tiene sus pro y sus contras por lo que hoy, como parte de las publicaciones por el lanzamiento de la nueva versión de Ubuntu Trusty Tahr (este 17 de abril), les vamos a enseñar como en unos pocos pasos pueden realizar la instalación de esta distribución sin mayores implicaciones.
En la imagen a continuación, podrás ver los pasos que debes realizar en cada una de las pantallas que se presentan, al momento de comenzar el proceso de instalación:
Clic para ampliar la imagen
Si quieres una instalación más detallada puedes ver nuestra publicación de instalación de Ubuntu, donde especificamos como hacer particiones en el disco, el procedimiento es el mismo.

 Si tienen alguna consulta o alguna duda, pueden escribirnos a consulta_friki@kioscofriki.com.ve
Y recuerda, si esta información te ayudó y quieres colaborarnos puedes hacer tu donación aquí
 Visita nuestra tienda K!0$C0 FRIKI

Actualización 04/12/2014

[D E P R E C A T E D]

Usar bajo su responsabilidad.


Script para preparar el entorno para compilar una ROM para Firefox OS [DEBIAN]

Firefox OS

Como usar

Simplemente en nuestra consola como ROOT ejecutamos:

``` ./configure.sh ```
Luego, ejecutamos sin ser ROOT:
``` ./b2g.sh ```
Para automatizar el proceso de clonación, actualización y sincronización del repo B2G. userconfig ---------- Este archivo debe ir dentro de B2G/
``` .userconfig ```
Ahí ya tiene todas las variables de entorno necesarias para compilar nuestra ROM. Solo debemos cambiar unas cosas y son:
``` export GAIA_DISTRIBUTION_DIR=/home/abr4xas/B2G export L10NBASEDIR="/home/abr4xas/B2G/gecko-l10n" ```
Por:
``` export GAIA_DISTRIBUTION_DIR=/home/usuario/B2G export L10NBASEDIR="/home/usuario/B2G/gecko-l10n" ```
Donde: usuario es, obviamente tu nombre de usuario y listo. Inari ----- Para iniciar el proceso de creación (UNICAMENTE) de la ROM para el ZTE Open (inari) debemos hacer lo siguiente:
``` ./config.sh inari ```
Esto va a tardar un poco dependiendo la conexión que tengamos contratada ;) Esperamos que termine y luego seguimos con el siguiente paso. vegnuxmod.sh ------------ Luego de darle permisos de ejecución:
``` ./vegnuxmod.sh ```
Este script va fuera de la carpeta
``` B2G ```
NOTA ---- Funciona para debian TESTING :) Recuerden que hay que colocar permisos de ejecución a los archivos para que puedan funcionar ;) Licencia de uso --------------- GPL v2 Ir a (link: https://github.com/abr4xas/workbench text: github popup: yes)