Mostrando entradas con la etiqueta #programación. Mostrar todas las entradas
Mostrando entradas con la etiqueta #programación. Mostrar todas las entradas

martes, 11 de septiembre de 2018

Programación para todos, guía para principiantes y poco experimentados.


Por Ernesto Hernández. 

Esto es un artículo dedicado a todos aquellos que quieren iniciar en el mundo de la programación y para los que aún tienen ciertas dificultades al momento de programar.

CUALIDADES Y ACTITUDES

Primero tengo que hablarte de las cualidades y actitudes que deberías tener o desarrollar para dedicarte al mundo de la programación:

    1)     Disciplina: Es muy importante que tengas el hábito de estudiar, investigar y hacer proyectos en horarios/días establecidos previamente. Recuerda que la programación es de mucha práctica y sólo así podrás convertirte en un buen desarrollador.

       2)     Perseverancia: En el día a día te enfrentarás a todo tipo de problemas y algunas veces tendrás que investigar o buscar la manera para resolverlo. Esto podrá tomarte horas, días o meses, debes ser perseverante y pensar que todo puede tener una solución. No te desesperes, ten paciencia.

     3)  Crear: Como te decía en el punto uno, la única manera de entender la programación es practicando. Te será de gran ayuda crear mini proyectos y fijarte pequeños objetivos para ir entendiendo conceptos y la manera en la que funciona la programación.

     4)     Jugar: Este es un término que siempre he utilizado cuando desconozco una herramienta y necesito entenderla. Para ello me pongo a utilizarla con el único objetivo de entender su funcionamiento. Siempre es necesario explorar la herramienta para saber qué tanto nos ofrece y cómo ayuda a resolver un problema, ya que al explorarla y entenderla podrás dar una mejor solución.

INICIANDO EN EL MUNDO DE LA PROGRAMACIÓN
Si eres completamente nuevo en la programación te recomiendo que empiezas en el mundo web ya que verás resultados más rápidos al momento que estés practicando y te mantendrás motivado.

Si quieres empezar hoy mismo en la programación te recomiendo las siguientes tecnologías para que comiences a practicar:

            NIVEL BASICO
       HTML: Este no es un lenguaje de programación, pero te ayudará a crear tu primera página web y es necesario que aprendas lo básico ya que todas las páginas web que visitas están basadas en este formato.

       CSS: Si quieres que tu primera página web tenga un diseño bonito, este te ayudará a cambiar el color de las letras, el color de fondo y a darle efectos a las imágenes. 

NIVEL INTERMEDIO
       JavaScript: Hoy en día, es unos de los lenguajes de programación más populares y te ayudará a que tu página sea más dinámica, más amigable y a realizar operaciones matemáticas.

     En este punto puedes comenzar a explorar herramientas (librerías o plugins) creadas por terceros, como: Bootstrap, JQuery, FontAwesome, etc.

NIVEL AVANZADO
Si necesitas guardar información de tus clientes entonces necesitarás un lenguaje de servidor, como: PHP, JavaScript, Java, C#, etc… Además de un motor de base de datos, como: MySQL o SQL Server.

COSAS QUE NO DEBERÍAN PREOCUPARTE EN LOS PRIMEROS AÑOS DE PROGRAMACIÓN

Algoritmos: No es necesario conocerlos ya que la mayoría de las herramientas que usarás ya los traen implícitamente.

Aplicaciones de escritorio: En la actualidad la mayoría de los proyectos son basados en web y solo ciertos proyectos necesitarán una aplicación de escritorio.

Conocer todas las tecnologías o herramientas: Hasta ahorita no he conocido a nadie que domine ni la mitad de ellas, ya que es un mundo muy cambiante y que avanza muy rápido. Es mejor que te enfoques en pocas tecnologías, en las que te agraden más y profundices en los conceptos básicos, ya que al dominarlos no te será difícil aprender otras tecnologías cuando sea necesario.

Pensar que lo que haces o tus soluciones están mal: Probablemente sí, pero en un principio no tienes que preocuparte ya que con el paso del tiempo te irás dando cuenta como se hacen las cosas de la manera correcta.

POSIBLEMENTE LA PROGRAMACIÓN NO ES LO TUYO
Por último, me gustaría mencionar que si eres de las personas que no pueden permanecer más de 6 horas sentadas frente a una computadora entonces probablemente la programación no sea lo más adecuado para ti, ya que habrá días que tendrás que estar 14 horas o más frente a la computadora.

Si no eres autodidacta, tienes poca imaginación y creatividad tendrás muchas dificultades al resolver problemas.  Recuerda que una habilidad que se ha hecho sumamente popular en el mercado laboral es que tengas la capacidad de aprender rápido y en ocasiones hacerlo solo.

Espero este pequeño artículo basado en mi experiencia personal te sirva como una especie de guía para que inicies en el mundo de la programación.

Si ya tienes experiencia programando y te interesa crear un código limpio y elegante, da clic aquí

viernes, 27 de abril de 2018

¿Cómo crear una página multi lenguaje en Wordpress?


Por Christian López

Antes de comenzar este tutorial, es importante diferenciar entre dos posibilidades:

Traducir un tema de wordpress: Para este caso, normalmente los temas que se adquieren de manera gratuita o de pago ya incluyen diccionarios en varios idiomas; esto permite configurar nuestro sitio para que sea visto en alguno de los idiomas incluidos. Sin embargo, esto no permite al usuario elegir en qué idioma quiere ver el sitio, por lo tanto, este NO es el objetivo de este tutorial.

Hacer multilenguaje un tema de wordpress: En este caso, nosotros configuraremos los idiomas que queremos ofrecerle a nuestros usuarios y ellos serán libres de elegir en qué idioma quieren ver nuestro sitio.

Aclarado lo anterior, ¡Comenzamos!

Una de las grandes ventajas de wordpress, es la posibilidad que ofrece de agregar funcionalidades robustas a través de plugins y para este caso mencionaré dos alternativas que pueden ser útiles en función de las necesidades que deseamos cubrir:

Google translator:
Este plugin es de fácil instalación y permite elegir a que idiomas debe ser traducido el sitio; la ventaja que ofrece es que opera con Javascript y hace una traducción al vuelo del sitio, por lo tanto, no es necesario que hagamos nada, Google simplemente reemplaza las palabras por las correspondientes a su diccionario en tan solo un par de minutos.

La desventaja de este plugin es que a veces las traducciones son literales, imprecisas o fuera de contexto.

Polylang:
Esta es una alternativa mucho más robusta que google translator, este plugin permite elegir los idiomas que se desea incluir en el sitio y entonces modifica toda la estructura de wordpress para que podamos tener la posibilidad de traducir:

  •         Páginas
  •         Entradas del blog
  •         Categorías
  •         Productos

Esto quiere decir que cada página la tendremos que generar una vez por cada idioma; esto definitivamente implica más trabajo, pero podemos tener la seguridad de que nuestras traducciones serán las correctas o al menos las que nosotros escribimos.

Otra gran ventaja que ofrece este plugin, es la posibilidad de registrar nuestras propias palabras para que éstas puedan ser traducidas; esta opción es importante cuando hay que traducir frases que pertenecen al template de nuestro sitio y que por lo tanto no puede ser editado desde el administrador de wordpress. Para lograr esto usaremos dos funciones:

pll_register_string($nombre,$palabra,$grupo);

Esta función recibe 3 parámetros:

  •       $nombre: Es el nombre de la cadena, la manera en que vamos a identificarla como parte de nuestro diccionario
  •        $palabra: Es la palabra que tendrá que ser traducida
  •      $grupo: Permite clasificar la palabra dentro de un grupo; por ejemplo “Formulario de contacto”; de esta manera sabremos que todas las palabras de ese grupo tienen un propósito en específico.

 Es importante decir que esta función debe repetirse en nuestro código por cada frase o palabra que se quiere integrar al diccionario y su uso deberá darse en el archivo functions.php que se encuentra en la carpeta raíz de  nuestro template.



Después de que registramos nuestras palabras, habrá que ir al administrador de wordpress y seguir los siguientes pasos:

 1-.  Ir a la opción Languages/Strings translations

       2-. En la ventana que se mostrará habrá que filtrar las palabras por su grupo; en este caso nos interesa el grupo llamado “Personalizado” (así lo definí yo en mi ejemplo). Tras filtrar la lista, veremos el conjunto de palabras que hemos registrado en ese grupo y la posibilidad de definir su valor para cada uno de los idiomas que hayamos seleccionado.



Tras completar la traducción habrá que hacer clic en el botón “guardar cambios” ubicado en la parte inferior izquierda de la lista.

pll__($nombre);
Esta función recibe como parámetro el nombre que hayamos definido al registrar nuestra frase en el diccionario y permite imprimir una palabra en el idioma que le corresponda según el elegido por nuestros usuarios en el sitio; y su uso es tan simple como:



De esta forma, tu sitio Wordpress con multilenguaje podrá conectar con clientes de todo el mundo, dándote credibilidad, profesionalismo y, sobre todo, mayor apertura para futuras oportunidades comerciales.

martes, 13 de febrero de 2018

Código Elegante

Por Iván Vázquez. 

Conozco personas que dirán que las matemáticas son la base de la programación o requisito fundamental para ser un buen programador. Otros dirán que no es imprescindible, aun así, nadie podría negar la estrecha relación que existe entre las ecuaciones matemáticas y los algoritmos lógicos.

La manera de abordar y abstraer una solución a un problema puede ser diversa y aún así llegar a un resultado correcto. Sin embargo, puede existir un algoritmo mejor que otro, si se compara algunos de los siguientes puntos: estabilidad, ejecución, mantenimiento, funcionalidad, legibilidad, compatibilidad entre otros muchos más. Está claro que para algunos casos tendrá más importancia cierto factor sobre otro.

Por ejemplo, en algunos dispositivos con recursos limitados podría tener más importancia la velocidad de ejecución sobre la compatibilidad del programa. O por el contrario, el desarrollo multi plataforma que brinda gran compatibilidad, pero podría aumentar la complejidad del código y requerir dependencias.

En cualquiera que sea el caso se pueden aplicar algunas reglas para mejorar la lógica, crear código limpio y tener buenas prácticas de programación. Por eso me gustaría compartir algunos consejos que me han ayudado y que podrían ser útiles.

1-. No copiar y pegar código.
Esto ayuda a razonar y comprender nuestro programa, también evita que dupliquemos código o que se tome código innecesario.

2-. No escribir comentarios.
Podría parecer raro pero el exceso de comentarios en el código es indicador de que el código no es muy fácil de entender. Se puede evitar escribir comentarios representando las entidades, propiedades, métodos y variables con nombres intuitivos.

Por ejemplo:
No es necesario comentar los siguientes métodos, debido a su fácil lectura.

//Código fácil de leer
User::getBy($id);
User::is($root);

3-. No indentar más de 4 llaves.
Generalmente los tabuladores surgen a partir de disyunciones en el flujo del proceso, para los humanos es más fácil seguir un flujo lineal que uno intercalado.

Ejemplo:

//Código complejo y difícil de leer
if ($condicion === true){
  if ($segunda_condicion === true){
    $result = 'A';
  }
  elseif ($segunda_condicion === false){
    $result = 'B';
  }
}else{
  $result = 'C';
}
return $resul;

//Mismo resultado con código fácil de leer
if(!$condicion){
    return 'C';
}
return $segunda_condicion ? 'A' : 'C';

Ambos segmentos de código llegan al mismo resultado, pero uno resulta más complejo que otro debido a las llaves. La intención es escribir un código "bonito", que sea más fácil de leer por humanos y de procesar por ordenadores.

4-. Evitar el Switch
En algunos casos es más difícil reemplazar un switch por un arreglo, pero siempre es más eficiente un arreglo o diccionario que la estructura de control switch ya que internamente funciona como un conjunto de ifs.

Mostraré un caso común;

//Código complejo y difícil de leer
 switch(status)
 {
  case 'new':
    $('.item').addClass('blue');
  brack;
  case 'updated':
    $('.item').addClass('green');
  brack;
  case 'canceled':
    $('.item').addClass('yellow');
  brack;
  case 'deleted':
    $('.item').addClass('red');
  brack;
 }

 // Mismo resultado con código optimizado.
 var colors={"new":"blue","updated":"green","canceled":"yellow","deleted": "red"};
 $('.item').addClass(color.status);
En ambos casos se cumple el objetivo, pero es más eficiente usando un arreglo.

5-. Evitar en php comillas dobles ""
En php las comillas dobles hacen referencia a un string que podría contener variables, esto obliga al intérprete de php a buscar intensivamente variables contenidas en su interior. Mientras que con comillas simples es reconocido como un simple string.

  $world = 'mundo';
  echo "Hola $mundo";
  echo "Hola".$mundo;
  echo 'Hola '.$mundo; // <-- Mejor resultado en tiempo de ejecución.

6-. Evitar el uso de excesivo de loops.
El hecho de intentar resolver algo común sin un ciclo, ayuda a pensar una solución mejor. Debemos evitar al máximo el uso de loops mágicos como FOR IN o EACH que son más lentos.

7-. Utilizar índices en las bases de datos.
En los gestores de bases de datos no existe un límite de registros establecido, el límite es el espacio disponible en el disco duro. De igual forma, la velocidad de lectura y escritura de registros termina siendo controlado por el sistema operativo y los mismos componentes electrónicos, el uso correcto de índices en las tablas permite trabajar con 200 o 300 millones de registros sin problemas. Típicamente se colocan los índices en los campos relacionados con otras tablas o en campos que se utilizan para filtrar.

8-. No hacer consultas con subqueries.
Al contrario que los índices, los subqueries son internamente un loop interno que afecta el performance gravemente. Esto se debe a que ejecuta un query por cada row consultado en el select principal, si se agregan 2 o 3 podría ser muy lento, incluso desbordar la memoria en tablas de pocos rows. Se debe resolver con joins, o ejecutar consultas separadas.

9-. Nivel ensamblador
Es conveniente tomar en cuenta factores de bajo nivel, el programa en lenguajes de alto nivel como Java o PHP termina traduciéndose a ensamblador y, por último, en lenguaje binario en nuestro procesador o memoria ram. Por ejemplo, una variable global requerirá memoria, mientras algún objeto haga referencia a ella. Esto debido al contexto y alcance (scope) de las funciones y objetos. 

En resumen…
Abstraer el problema y razonarlo de la manera más inteligente posible te permite crear código legible, óptimo y elegante.


Te recomendamos