Comentarios Recientes

jsHACK: Framework Javascript desarrollado en Rep. Dominicana

| Categorías internet, Linux, Microsoft, mysql, Personal, Programacion, Tecnologia, telecomunicaciones | | Comentario 2

Number of View: 2994

jsHACK

jsHACK es un framework para Javascript, que está siendo desarrollado actualmente por Dominicanos, a la cabeza su creador, mi amigo Carlos López.   Este framework nació por la necesidad de Carlos de utilizar un Framework ligero y sumamente eficiente.  Este es el resultado de varios años de duro trabajo en el área de desarrollo de Aplicaciones Web eficientes y mucha dedicación al estudio de Javascript a fondo.

Hoy me siento orgulloso de tener en mi país esta clase de proyectos y esa clase de programadores.  Espero que todos le den una oportunidad, así como yo lo estoy haciendo.

PHP: Type Hinting

| Categorías Personal, PHP, Programacion, Tutoriales | | Comentario 0

Number of View: 1440

Aquí les traigo un trozo de código bastante interesante sobre Type Hinting.  Esto se refiere al tipo de parámetros que recibe un determinado método.  Personalmente me parece bastante útil,  ya que obtendremos un Fatal Error si el tipo de dato es incorrecto, esto nos ayuda a trabajar de manera más cuidadosa y prevenir futuros posibles errores, sólo por decir una de las utilidades.

1
2
3
4
5
6
7
8
9
10
11
12
< ?php
/**
 * @author Williams Mendez
 */
class MyClass {
    private $Database;
 
    public function __Construct(MyDB $Database = null) {
        $this->Database = $Database;
    }
   public function Insert(array $Data){ ..... }
}

Se pueden apreciar dos métodos, en el primer caso, se tiene la opción de no pasarle parámetro, pero si es invocado ese método, debe recibir un objeto del tipo MyDB. En el segundo caso, el método sólo debe recibir un parámetro del tipo “array”.

Otra buena aplicación de estas técnicas se puede apreciar en la creación de Interfaces y Clases Abstractas.

Suerte con el código :) .

Libro GNU/Facil de Antonio Perpiñan y la FCLD

| Categorías internet, Linux, Personal, Sistemas Operativos, Software Libre, Tecnologia | | Comentario 0

Number of View: 1907

Antonio Perpiñan es el presidente de la Fundación Código Libre Dominicano, una institución dedicada a la enseñanza y capacitación en Software Libre, en todas las áreas del Software.  Antonio Perpiñan ha escrito varios libros sobre GNU/Linux, desde los niveles más básicos hasta los más avanzados.

Ésta semana, la Fundación Código Libre Dominicano(FCLD) presenta la 4ta edición de GNU/Fácil, un libro orientado al aprendizaje de sistemas GNU/Linux para principiantes, basado en la super popular Distro Ubuntu Linux.  Hace ya unos años yo me apoyé en este libro y realmente lo recomiendo.

Además de este libro, podrán encontrar otros más para niveles más avanzados y aplicaciones más específicas como Networking, por ejemplo.

Pueden descargar los libros desde Aquí.

La Web es el futuro(si no te has dado cuenta que es el presente)

| Categorías facebook, google, internet, Linux, Microsoft, Personal, Redes Sociales, Sistemas Operativos, Tecnologia, telecomunicaciones, twitter | | Comentario 1

Number of View: 1603

Cada día nos hacemos más dependientes de Internet, y ahora aún más con todos los Smartphones que tenemos en el mercado y los que se aproximan.  Las redes sociales nos hacen presión y nos dicen: “No te vayas!! Me necesitas!!”, y les hacemos caso.  Ya no sólo escuchamos música en nuestras computadoras mientras trabajamos o jugamos o navegamos, sino que hay todo un mundo diferente en la Web.

Con la llegada al medio de la Web 2.0, Web services,  Cloud Computing, entre otras cosas, me parece a mí que no hay grandes necesidades de Aplicaciones de Escritorio mas que para aquellas aplicaciones que necesariamente deban acceder el hardware del equipo, es decir, aplicaciones de bajo nivel.

Es por esto que Google ha tenido esa iniciativa de crear un Sistema Operativo basado en un Navegador(Google Chrome).  Hay personas que se están olvidando sus Laptops, pues con su iPhone hacen todo lo que “necesitan”.

Aparte de esto, cada día vemos como empresas han migrado sus Aplicaciones de Escritorio a Aplicaciones Web.  Y esa es la tendencia.  Un ambiente más ligero, más agradable a la vista, más seguro y sobre todo, pero muy sobre todo, totalmente multiplataforma.

Multiplataforma.  Microsoft Windows, GNU/Linux, Mac OS…Chrome OS??? Cual elegirías tú? Cuál versión? Por qué no nos olvidamos de eso y preguntamos: cuál Navegador voy a utilizar? Qué importa! Ya todos son buenos! Multiplataforma, el gran dolor de cabeza de los desarrolladores de Software.

Increíblemente estoy diciendo que Google Chrome OS tendrá su futuro…Yo mismo me negaba a creerlo, pero sí, sólo así podremos romper los problemas de compatibilidad de aplicaciones…Multiplataforma…Multiplataforma…La Web es el Futuro

Parametros en la linea de comandos en PHP

| Categorías Personal, PHP, Programacion, Software Libre, Tutoriales | | Comentario 0

Number of View: 1208

Mucha gente tiene la confusión de si se puede o no correr un programa escrito en PHP desde la línea de comandos.  Pues aquí les respondo que sí y les traigo algo para que vayan comprendiendo su funcionamiento.

El siguiente ejemplo se trata de un pequeño compresor de archivos con una técnica muy barata que he hecho para una clase de Codificación y que luego les mostraré de qué se trata.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
< ?php
/**
* Compress.php
*
* ejemplo de corrida:
* $ php compress.php  ARCHIVO_ENTRADA
* $ php compress.php -d ARCHIVO_ENTRADA  ARCHIVO_SALIDA
*/
//saber los parametros que fueron pasados al correr el programa
if($argc < 2 )
    exit("Debe especificar al menos el archivo de entrada.\n");
 
define('COMPRESS',1);
define('UNCOMPRESS',2);
 
//saber que opcion se ha tomado
/**
 * La opcion '-c' es para comprimir
 * La opcion '-d' es para decomprimir
 * si no se especifica opcion, se va a comprimir
 */
if($argv[1][0] == '-') {
    switch($argv[1]) {
        case '-c':
            $action = COMPRESS;
            break;
        case '-d':
            $action = UNCOMPRESS;
            break;
        default:
            die("Opcion '{$argv[1]}' Incorrecta. Utilice '-c' para comprimir y '-d' para decomprimir.\n");
    }
    //archivo de entrada
    $source_file = $argv[2];
    //se verifica si el usuario especifico archivo de salida, de lo contrario
    // se verifica si se va a comprimir para generar el fichero de salida.
    // Si es para decompresion, se debe especificar el fichero de salida.
    if($argc > 3)
        $destination_file = $argv[3];
    else if($action == COMPRESS){
        $ext = end(explode(".", $source_file));
        $destination_file = str_replace(basename($source_file),str_replace($ext,'wmz',basename($source_file)),$source_file);
    }else{
        die ("Debe especificar el archivo de salida, no se conoce la extension del archivo original\n.");
    }
}
else {
    //Lo mismo que el paso anterior, pero ahora se sabe que es compresion porque
    // no se especificó una opcion y se asume compresion.
    $action = COMPRESS;
    $source_file = $argv[1];
    if($argc > 2)
        $destination_file = $argv[2];
    else {
        $ext = end(explode(".", $source_file));
        $destination_file = str_replace(basename($source_file),str_replace($ext,'wmz',basename($source_file)),$source_file);
    }
}
 
//Incluimos la clase BitMapping
//Notese que se producirá un error Fatal si no existe el fichero BitMapping.php
require_once 'BitMapping.php';
// Crear instancia
$compressor = new BitMapping($source_file,$destination_file);
//Proceder a Comprimir o Decomprimir
switch($action) {
    case COMPRESS:
        $compressor->compress();
        break;
    case UNCOMPRESS:
        $compressor->uncompress();
        break;
}
?>

En los próximos días publicaré la Class que comprime y decomprime =)

Primera Reunion Apoya lo Local !

| Categorías internet, Personal, Programacion, Pymes, Redes Sociales, Tecnologia, telecomunicaciones | | Comentario 0

Number of View: 733

Ayer sábado estuvimos reunidos en Colina’s Mall, Santiago, un grupo de personas que creemos en lo que hacemos, que sabemos  que quizás no somos los mejores del planeta, pero estamos mas conscientes de lo que hacemos que una gran mayoría en nuestro país.  Hemos llegado a esta reunión por un deseo que @davidtavarez y yo (@wm3ndez) nos expresamos hace tan sólo una semana atrás y que fue acojida rápidamente por un gran número de personas.

Luego, vía Twitter(nuestro mejor aliado hasta el momento), fuimos “regando” la idea y hemos tenido apoyo de varias personas en Sto. Dgo. que también piensan que estamos en lo correcto y que es buena iniciativa.  Por esto hicimos una primera reunión informal, a solo unos días de haber decidido que esto era bueno!! :P

Allá llegamos a las 4 PM @ingluisjimenez y yo(@wm3ndez), luego llegó @KDeMoya y al poco rato Hector Marrero y Saury Bravo (aún no conozco sus cuentas de twitter).  El señor @davidtavarez se presentó minutos después con @carlosjln.  Más tarde @Shady y @pavelonsky.

Estando todos allá empezamos a hablar sobre el gran proyecto de @carlosjln y su Framework Javascript, le comentabamos que aparte de todo el conocimiento que él ha adquirido desarrollando su FW es de gran satisfacción para él, pero que el debe darle otro enfoque.  En lo personal, todavía le sugiero que lo de a conocer, porque sin dudas es bastante eficiente.

Hablamos de temas interesantes, como es el hecho de que en nuestro país hay gran cantidad de personas haciendo disparates, dañando nuestra imagen y dañando el mercado.  Hay mucha gente “buscandoselas” en la calle y “pasandose de vivos”, viendiendo sueños y haciendo mega estupideces(si así se puede decir).  Es decir, estabamos tocando el importantísimo punto que nos ha hecho pensar que debemos organizarmos para que cosas como estas no afecten trabajos de calidad.

También planteamos la problemática situación del Ing. Telemático/Informático  que va a la Universidad y “compra” un título y luego tú, que haces un buen trabajo, eres juzgado por el pésimo desempeño como profesional -y quien sabe si como persona- de ese “colega” tuyo.  Es esto lo que andamos buscando, mostrar a nuestro país que esa no es la totalidad de los profesionales, que profesional no es un título, es conocimiento, práctica…

Por otro lado, tenemos el problema de nuestros empresarios: La gente que “tiene los cuartos” en este país aún no sabe lo que significa la palabra “Internet”.  Creen que cada sistema web based que hagas es “una paginita” en una manera despectiva.  Y no sólo los empresarios, sino otros Ingenieros de carreras como Ing. Electromecánica, que están mal informados.  El sector inmobiliario, por ejemplo, es un sector que maneja buen dinero, pero los propietarios de esas empresas de bienes raíces creen que todo es sencillo y quieren que les regalen las cosas!(Abusadores!!!).

Hector Marrero comentaba que nuestros pensamientos e ideales están demasiado adelantados a la de nuestros empresarios.  Gran problema porque  luego no hay forma de confiar en nosotros…

Entre otras cosas, quedamos en crear un Site(que ya está arriba): http://apoyalolocal.com y puedes seguirnos en twitter: @apoyalolocal.  La próxima reunión será en Sto. Dgo., más o menos dentro de un mes(aún no tenemos fecha).

Apoya lo local es más que decir “yo te apoyo”, es un movimiento que pretende destacar lo bueno.  Quiero destacar que cuando hablé de aquellos que andan “buscandoselas”, no me refiero a que hay que hundirlos y desaparecerlos, más bien sugiero orientarlos y si de verdad quieren crecer, se les ayuda, pero que no hagan daño a los que si hacemos lo correcto.

Perseguimos que nuestro país reconozca nuestro trabajo, reconozca que hay gente que hace bien las cosas, que no hay que buscar peruanos, colombianos, etc. para implementar soluciones de Software o de cualquier cosa que “huela” a tecnología.

Tu que estás leyendo esto, abre los ojos, mira lo que hay en tu país y #apoyalolocal @apoyalolocal http://apoyalolocal.com

Apoyemos lo nuestro!

| Categorías Apple, General, internet, juegos, Linux, mysql, Personal, PHP, PostgreSQL, Programacion, Pymes, Redes Sociales, Sistemas Operativos, Tecnologia, telecomunicaciones, Windows, Zend Framework | | Comentario 0

Number of View: 572

Ayer mi compañero David Tavarez hizo un tweet diciendo que debemos apoyar lo nuestro, los dominicanos generalmente no apoyamos nuestras cosas, nuestra cultura, nuestra gente, nuestras creaciones, nada nuestro.  Es por eso que David y yo estamos en el plan de empezar a unir a todos los desarrolladores de Software y amantes de la tecnología de la región, principalmente de Santiago.

La iniciativa pretende unir, en encuentros sociales, a todos aquellos que sean muy famosos como aquellos que no lo sean tanto pero que se identifican con lo que hacen porque les encanta igual que a nosotros…

Apoyemos lo nuestro!!

Difference between a nerd, a geek, and a dork

| Categorías Apple, General, internet, Linux, mysql, Personal, PHP, PostgreSQL, Programacion, Pymes, Redes Sociales, Sistemas Operativos, Tecnologia, telecomunicaciones, Windows, Zend Framework | | Comentario 0

Number of View: 973

Source: http://ask.yahoo.com/20060818.html

We’ve been called all three, and to be honest, we always assumed they meant the same thing. However, according to the cool kids, there are differences.

Official definitions for nerd, geek, and dork each use the words “inept” and “foolish.” Nerds have the added distinction of being “unattractive.” Ouch. While it’s hard to argue with the dictionary, we sought out definitions from the Internet at large.

According to Whatis.com, nerds are people of above-average intelligence who place little importance on their appearance. Nerds are often aware of their status, but they don’t mind. In fact, many take pride in the putdown, as it means they’re smart and not wrapped up in superficial worries.

Geek is a more specific term. Back in the day, geeks worked at carnivals, and (according to the dictionary) “bit the heads off live chickens.” Thankfully, the term now has a different connotation. Like nerds, geeks are smart, but they tend to focus more on technology. As Urban Dictionary explains, these are the people you make fun of in high school and later work for as an adult.

Being called a “dork” is the biggest insult of the three. There’s no way you can spin it into something positive. After all, even the dictionary writes that dorks are “stupid” people. And to make matters worse, dorks assume they’re cool. Oh, and they smell, too.

Por que uso Linux?

| Categorías Linux, Personal, telecomunicaciones | | Comentario 1

Number of View: 921

Quizas esto diga de que se trata el movimiento del Software Libre y de que se trata Linux….

Detalles del Congreso

| Categorías General, internet, Linux, Personal, Programacion, Pymes, Sistemas Operativos, Tecnologia, telecomunicaciones, Windows | | Comentario 0

Number of View: 723
Información del Evento
Objetivo
Transmitir la idea y concepto de Software y Conocimiento Libre. Mostrar cómo Linux es aplicado en la actualidad en diferentes areas del ámbito profesional y personal. Repercusiones del Software Libre a nivel nacional y ventajas sobre las soliciones privativas. Introducir y Orientar a futuros profesionales al mundo de Linux y las Alternativas Libres.
Temas
  • Software Libre, Historia – Filosofía – Evolución y Futuro (Antonio Perpiñan)
  • Migraciones Exitosas (FCLD)
  • Linux en las PyMEs
  • Desarrollo de Juegos en Linux (VideoConferencia)
  • RECESO
  • Blender, creando un mundo Libre en 3D
  • Robótica + Linux
  • GIS (­Sistema de Informacion Geografica)
Fecha: 22 de Octubre de 2009
Hora: 2:00 pm – 6:00 pm
Lugar: Auditorio de Ciencias de la Salud – PUCMM Santiago
Web: http://www.atreveteaserlibre.org/
Precio: RD$ 0.00
Se Ofrecerá:
Material sobre Linux, Distribuciones en CD.
Nota: Se ofrecerá Refrigerio!!!!

1er Congreso Software y Conocimiento Libre PUCMM Santiago

| Categorías General, internet, Linux, Personal, PHP, Programacion, Pymes, Sistemas Operativos, Tecnologia, telecomunicaciones, Windows | | Comentario 0

Number of View: 1584

Me complace invitarles al 1er Congreso de Software Libre en PUCMM, Campus Santiago, que tendrá lugar en el Auditorio de Ciencias de la Salud, el próximo Jueves 22 de Octubre, sin costo alguno.  En este Congreso tendremos la participación de profesores de la Universidad, estudiantes como David Tavarez y Eduardo Hernandez , Ing. en Sistemas e Ing. Telemática respectivamente, también la participación de la Fundación Código Libre Dominicano(FCLD), y una invita especial desde Venezuela, Maria Leandro, quien participará a modo de Video Conferencia.

Congreso Software y Conocimiento Libre PUCMM 2009

Puntos de seguridad a tomar en cuenta en PHP

| Categorías General, internet, Personal, PHP, Programacion, telecomunicaciones | | Comentario 2

Number of View: 776

Un gran poder representa una gran responsabilidad, es por esto que en PHP debemos ser cuidadosos con lo que hacemos y las herramientas que utilizamos.  Por esto les dejo esta lista de puntos a cuidar cuando desarrollamos aplicaciones en PHP.

  • Error Reporting en modo Verbose
  • Registrer Globals
  • Uso de la variable Global $_REQUEST
  • Magic Qoutes
  • Prevenir XSS (Cross-site scripting)
  • SQL Injection
  • Code Injection
  • Uso de la función “eval()”
  • Recuerda usar RegEx(Regular Expressions)
  • Minimiza uso de Comandos Externos

Aunque hay muchos otros puntos de seguridad, de seguro muchos de nosotros hemos sufrido algún problema por cualquiera de los puntos anteriores mencionadas, cosas que no hacemos y cosas que no tomamos en cuenta.

Creando imagenes PNG con PHP

| Categorías General, internet, Personal, PHP, Programacion, Tecnologia | | Comentario 0

Number of View: 976

De esta manera puedes crear una imagen a partir de otra y hacer ciertas modificaciones sobre ella.

1
2
3
4
5
6
7
8
9
10
11
12
< ?php
 
header("Content-type: image/png");
$string = $_GET['text'];
$im     = imagecreatefrompng("images/button1.png");
$orange = imagecolorallocate($im, 220, 210, 60);
$px     = (imagesx($im) - 7.5 * strlen($string)) / 2;
imagestring($im, 3, $px, 9, $string, $orange);
imagepng($im);
imagedestroy($im);
 
?>

Zend Framework: Manejar Ajax Request

| Categorías General, internet, Personal, PHP, Programacion, Zend Framework | | Comentario 0

Number of View: 1314

Cuando nos estamos iniciando en MVC y Zend Framework, nos hacemos la pregunta: ¿Cómo voy a usar AJAX y olvidarme del Layout del site? Bueno, aquí les dejo un controlador que se auxilia de unos métodos dispuestos para esta misma situación:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
< ?php
 
/**
 * MyController
 *
 * @author Williams Mendez
 */
 
 
class MyController extends Zend_Controller_Action  {
	public function init(){
		parent::init();
		if($this->_request->isXmlHttpRequest())	{
			$this->_helper->Layout->disableLayout(); // No cargar el Layout
			$this->_helper->viewRenderer->setNoRender(); //No cargar la Vista
		}else
		$this->_helper->layout ()->setLayout ( 'my_layout' );
 
	}
	public function indexAction(){
		......
	}
}
?>

Resources en Zend Framework: Bootstrap.php

| Categorías General, internet, Personal, Programacion, Zend Framework | | Comentario 0

Number of View: 1676

Actualmente estoy trabajando en un proyecto para la Universidad en el cual estoy utilizando ZendFramework. El proyecto consiste en una aplicacion de aprendizaje virtual o colaboracion, tipo “Moodle”.

Mi sistema de archivos se ve asi:

application/
   modules/
      estudiantes/
         models/
            DbTable/
      admin/
         models/
            DbTable/
      profesor/
         models/
            DbTable/

Aqui les dejo un ejemplo de mi Bootstrap:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
< ?php
 
/**
 * Application bootstrap
 *
 * @uses    Zend_Application_Bootstrap_Bootstrap
 * @package QuickStart
 */
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
	/**
	 * Bootstrap autoloader for application resources
	 *
	 * @return Zend_Application_Module_Autoloader
	 */
	protected function _initAutoload()
	{
		$autoloader = new Zend_Application_Module_Autoloader(array(
            'namespace' => 'Default',
            'basePath'  => dirname(__FILE__),
		));
		$autoloader	->addResourceType('estudiantes','modules/estudiantes','Estudiantes')
					->addResourceType('estudiantes_model','modules/estudiantes/models/','Estudiantes_Model')
					->addResourceType('profesor','modules/profesor','Profesor')
					->addResourceType('profesor_model','modules/profesor/models/','Profesor_Model')
					->addResourceType('admin','modules/admin','Admin')
					->addResourceType('admin_model','modules/admin/models/','Admin_Model')
					;
 
 
		return $autoloader;
 
	}
 
	protected function _initFrontController()
	{
		$front = Zend_Controller_Front::getInstance();
		$front->addModuleDirectory(dirname(__FILE__) . '/modules');
		$front->setDefaultModule('default');
 
		return $front;
	}
 
	/**
	 * Bootstrap the view doctype
	 *
	 * @return void
	 */
	protected function _initDoctype()
	{
		$this->bootstrap('view');
		$view = $this->getResource('view');
		$view->doctype('XHTML1_STRICT');
	}
}