jueves, 30 de junio de 2016

Q&A Preguntas y respuestas acerca de la administración del sistema UNIX

¿Cuál es la función del administrador de un sistema UNIX?

El administrador de un sistema UNIX es el responsable de configurar y mantener el sistema funcionando correctamente.

¿Qué debe entender el administrador de un sistema para realizar sus responsabilidades adecuadamente?

Entender el hardware y el software del sistema, así como (y esto es lo más importante) las necesidades de los usuarios.

¿Cuales son las responsabilidades de un administrador de sistemas UNIX?

Responsabilidad del Hardware, Software y hacia los usuarios.

Además del conocimiento en Hardware y Software ¿qué otras habilidades son necesarias para un buen administrador de sistemas UNIX?

El conocimiento de un lenguaje de programación Scripting.

¿Cuales son los campos del archivo /etc/password?

  1. user name
  2. encrypted password
  3. user id
  4. group id
  5. comment field
  6. login directory
  7. startup program

¿Cuales son los campos del archivo /etc/group?

  1. group name
  2. password
  3. group id
  4. group list

¿Cuál es la diferencia entre el archivo /etc/profile y .profile?

¿Para qué sirve el comando wall?

¿Para qué sirve el archivo /etc/motd.?

¿Para qué sirve el comando dmesg?

¿Cuál es la diferencia entre un archivo de bloque (block) y un archivo de caracteres (character)?

¿Qué es un archivo de dispositivo?

¿Para qué sirve el comando ln?

¿Cómo se controla el run-level (niveles de arranque) de un sistema UNIX?

¿Cuál es el propósito del archivo /etc/inittab ?

¿Cómo se obtiene el actual run-level del sistema?

¿Cuál es la diferencia entre apagar el sistema con shutdown -h o con reboot -halt?

¿Para qué sirve el comando fsck?

¿Para qué sirve el archivo /etc/fstab?

¿Qué es el root access (ingresar como superusuario)?

¿Cuál e s la diferencia entre memoria física y memoria virtual?

¿Para que sirven los comandos pwck y grpck?

miércoles, 29 de junio de 2016

¿Qué son los Internet Standards: RFCs?

Para saber más acerca de una parte fundamental de Internet como lo es la familia de protocolos TCP/IP existen documentos que explican a detalle las funcionalidades de cada uno de ellos. Estos documentos se conocen como RFCs (Requests For Comments).

Los RFCs son una colección de borradores y textos que abarcan desde documentos de interés general hasta detalladas especificaciones de los protocolos estándares como HTTP, FTP o NNTP, etc. Para que un documento propuesto sea publicado como una especificación estándar necesita ser aprobado por e l IESG (Internet Engineering Steering Group https://www.ietf.org/iesg/) del IETF (Internet Engineering Task Force https://www.ietf.org/). Una cosa importante: todos los estándares de Internet son RFCs pero no todos los RFCs son estándares.

¿Cómo se desarrolla un estándar RFC?

Todos los estándares RFCs propuestos comienzan cuando una persona o un grupo tiene una propuesta y construye un prototipo. Si este prototipo funciona y se vuele popular más allá del grupo que lo desarrolló. La IETF forma un grupo de evaluación de la propuesta para documentar el protocolo en un borrador de Internet (Internet Draft) este borrador es modificado frecuentemente hasta que la propuesta llegue a una madurez técnica aceptable.

El proceso de creación de un RFC no es rápido, ya que el proceso es rígido y normalizado por lo que se tienen demoras considerables. Este proceso es delicado, ya que la IETF debe moldear la especificación para que funcione en Internet sin tener conflicto con los protocolos que ya están funcionando.

Claro que en este proceso hay excepciones, como por ejemplo: el protocolo HTTP que en 1996 no había alcanzado el status experimental pero como al IESG le gusto tanto que le asignó de inmediato un número RFC y lo publicó como un RFC experimental después de algunos cambios.

Existen también aspectos jurídicos que es necesario considerar. Muchos borradores contienen algoritmos y tecnologías que podrían tener una patente o una protección de copyright. El proceso para convertir un borrador en un RFC consta de los siguientes pasos:

1-. Diseñar y organizar el borrador.

Cualquiera puede redactar una propuesta y enviarla para un análisis. En ocasiones puede ser una empresa que envía un documento que se convierte en borrador para volverse un RFC, pero son los grupos de trabajo de la IETF los que inician la mayoría de borradores.

2-. Analizar el borrador.

El IESG analiza el borrador presentado para decidir si merece un análisis técnico. En algunos casos, el EISG crea un grupo técnico para analizar el documento por si el estándar propuesto pudiera afectar el funcionamiento de Internet. Este grupo analiza técnicamente el borrador y evaluá sus efectos sobre la configuración de Internet ya establecida.

3-. Publicar el borrador.

Una vez concedida la aprobación inicial, el IESG autoriza la publicación del documento como estándar propuesto para toda la comunidad. Los borradores tienen una validez de seis meses. Durante este periodo el grupo puede modificar, reemplazar o incluso eliminar el borrador ya que los borradores carecen de status oficial.

4-. Revisar el borrador.

A medida que la gente estudia y comenta el borrador su contenido se modifica. En este periodo, el IESG y la comunidad de Internet evaluá los cambios y el impacto de la propuesta. Si los efectos son muy drásticos entonces el IESG podría ampliar el periodo de evaluación o bien devolverlo al principio del proceso de evaluación de estándares. Estas idas y vueltas provocan que algunos documentos tarden años o meses de retraso para recorren el proceso RFC.

5-. Conseguir la aceptación del borrador

Una vez que el borrador paso el periodo de análisis y si la IETF decide aprobar el borrador entonces este se convierte en un RFC. La RFC se dirige al editor del RFC y con autorización de la ISOC (Internet Society http://www.internetsociety.org/) para que el editor del RFC publique las RFC y es el responsable del último análisis de los documentos. Una vez aceptado se le asigna un número de STD y se convierte en un RFC STD. Cuando se publica una nueva versión de un RFC, la anterior recibe la categoría de Obsolete.

El éxito de un RFC dependerá que tan bien ese estándar funcione en la presencia de vendedores, inversores capitalistas y entusiastas que buscan tecnologías particulares para sus proyectos.

Además del proceso de desarrollo, un RFC tiene un requerimiento de nivel. Los posibles requerimientos de nivel son:

Required: los RFCs de esta categoría deben estar en todas las máquinas de Internet. Hay muy pocos protocolos en esta categoría. IP (RFC 791) por ejemplo es uno, incluso protocolos importantes como TCP o UDP están en la categoría recommend. Los protocolos que están en categoría son axiales para el funcionamiento de las máquinas en Internet.

Recommended: estos RFCs deben ser implementados por todos los los hosts de Internet que no tengan una razón para no implementarlo. RFCs por ejemplo: como TCP,UDP ,SMTP, Telnet, etc. Están en esta categoría.

Elective: estos RFCs pueden estar implementados por decisión propia para quien desee usar el protocolo. Por ejemplo: el del protocolo MIME ( RFC 1521) tiene este estatus.

Limited Use: estos RFCs deberían ser implementados en ciertas situaciones especiales, que no es indispensable para la mayoría de hosts.

Not recommended: los RFCs de esta categoría no deben ser utilizados por nadie.

Historic: un status para identificar RFCs que están clasificados como obsoletos.

Informational: en esta categoría hay dos grupos de RFC: El primer grupo define protocolos que están ampliamente utilizados pero no fueron desarrollados dentro del conjunto normal de pasos de un estándar de Internet y no han estado dentro del proceso formal de estandarización. Un buen ejemplo de esto es el Network File System (NFS) de Sun que está descrito en el RFC 1813. El segundo grupo de RFCs proporciona información como manuales de usuario pero no documenta un protocolo.

Enlaces:

domingo, 29 de mayo de 2016

¿Qué es el análisis postmortem en un proyecto de software?

En el contexto de los proyectos de desarrollo de software, un análisis Postmortem es el proceso de revisar la historia del proyecto para entender cómo cada uno de los eventos contribuyo al éxito o fracaso del proyecto.

En resumen: es el análisis retrospectivo realizado por todos los miembros del equipo de trabajo una vez que el proyecto concluye, sea exitosa o no esta conclusión.

Al realizar este análisis se busca identificar los aspectos positivos aplicados en el proyecto para que puedan repetirse, así como plantear soluciones y mejoras de los aspectos negativos, asimilando la experiencia para que no vuelvan a repetirse. Todo ello se conoce de forma simple como Lecciones Aprendidas.

Beneficios

Realizar un análisis de las experiencias buenas y malas adquiridas en el proyecto, es necesario para:

  • Identificar los aspectos que pueden mejorarse en proyectos futuros.
  • Obtener las experiencias de todos los involucrados en el proyecto, concentrando opiniones , puntos de vista y generando conclusiones en grupo.
  • Formar una base de conocimientos de “Lecciones Aprendidas” para que sean conocidas, revisadas y consideradas en otros proyectos con características similares.
  • Si hay un proyecto nuevo los recursos nuevos que tengan acceso a las lecciones aprendidas no tendrán justificación para repetir los mismos errores que se cometieron en sus proyectos anteriores.
  • Aplicar las lecciones aprendidas al proceso de estimación de un proyecto de software proporciona un par de beneficios, en principio, ayuda a la organización a prevenir desarrollar proyectos que no generan ganancias. Segundo, se orilla a que la estimación sea más precisa y exacta ya que la organización podría emplear un presupuesto inflado. Cuando la organización tiene confianza en sus estimaciones, es una organización más competitiva.

Actividades

  1. Aplicar cuestionario Postmortem.
  2. Realizar la reunión Postmortem.
  3. Registrar lecciones aprendidas.

Aplicar cuestionario Postmortem esta actividad se realiza para obtener las experiencias de los recursos que participan en algún momento en el proyecto y que por algún motivo salen antes de que este concluya. En la ejecución de esta actividad participan: el responsable del proyecto quien se asegura de que todos los recursos que salen antes de que el proyecto concluya, apliquen el cuestionario y el miembro del equipo de trabajo que sale del proyecto se requiere que conteste el cuestionario. Los cuestionarios que se recopilen serán revisados por el responsable del proyecto para concentrar las experiencias obtenidas y resumirlas en la presentación Postmortem.

Realizar la reunión postmortem Los datos del proyecto que deben considerarse en esta presentación, son:

  • Datos generales del proyecto
  • Evaluación del alcance
  • Evaluación de la planeación
  • Evaluación de la capacitación
  • Evaluación de la calidad
  • Evaluación del proceso
  • Oportunidades y conocimientos adquiridos
  • Evaluación de la percepción del cliente

Registrar lecciones aprendidas: aquí se obtiene un resumen de las lecciones identificadas por todos los miembros del equipo de trabajo para clasificarlas y registrarlas en el repositorio de lecciones aprendidas de la organización.Registrar lecciones aprendidas: aquí se obtiene un resumen de las lecciones identificadas por todos los miembros del equipo de trabajo para clasificarlas y registrarlas en el repositorio de lecciones aprendidas de la organización.

Consideraciones

Al ejecutar esta actividad es muy importante tomar en cuenta los siguientes aspectos:

  • Planear las actividades necesarias para ejecutar el proceso postmortem en todos los proyectos.
  • La reunión postmortem debe ejecutarse inmediatamente al concluir el proyecto.
  • Es necesario contar con las aportaciones de todos los recursos que en algún momento se vieron involucrados en el proyecto.
  • Deben exponerse los aspectos positivos y negativos registrados en el proyecto.
  • Calificar al proyecto, no a las personas.
  • Realizar recomendaciones que complementen las lecciones aprendidas.
  • Los datos obtenidos en la presentación postmortem son utilizados en la presentación de cierre del proyecto.

Cuestionario Postmortem

La recopilación de las experiencias adquiridas por todos los recursos que participaron en algún momento en el proyecto se realiza a partir de la aplicación del cuestionario Postmortem en el caso de los recursos que participaron hasta el cierre del proyecto. A continuación un ejemplo de las secciones de un cuestionario Postmortem

1.Datos generales

[Aquí describe tu participación dentro del proyecto]

  1. Nombre completo:
  2. Rol:
  3. Periodo de participación: [Total o parcial, especifique el periodo en el que permaneció en el proyecto, este será total si participo en todas las fases del proyecto, será parcial si solo participo en una fase del proyecto]
  4. Jefe inmediato/ Rol:[Especifique el nombre del jefe inmediato y su participación]

2. Evaluación de la planeación

[Sección dedicada a describir la percepción respecto a la planeación de actividades en el proyecto, poner las razones en cada respuesta]

  1. ¿Existieron diferencias entre el número planeado de artefactos/productos contra el real?
  2. ¿Se presentó alguna diferencia entre el tiempo planeado contra el real?
  3. ¿Existe alguna diferencia entre las disciplinas en las que se tiene planeada tu participación y en las que realmente participaste?

3. Evaluación de la Capacitación

[Aquí se pone la percepción respecto a las actividades de entendimiento del negocio]

  1. ¿Recibiste la capacitación técnica necesaria para realizar tus funciones?
  2. ¿Consideras que recibiste la capacitación necesaria del conocimiento del negocio de acuerdo a tu perfil?

4. Evaluación de la calidad

[Aquí indica los productos que fueron generados durante el proyecto, pudiendo ser documentos, código, modelos o diagramas]

5. Evaluación del Proceso

[Sección dedicada a evaluar el proceso de desarrollo de software] En un proyecto similar, qué acciones, actitudes y decisiones tendrían que ser diferentes y cuáles podrían repetirse en cuanto a:

  1. La capacitación para el proyecto.
  2. Las disciplinas ejecutadas en el proyecto.
  3. Las herramientas utilizadas para el proyecto.
  4. La infraestructura con la que contó el proyecto.
  5. La administración del proyecto.

NOTA: Hay que tener en cuenta que los cuestionarios Postmortem pueden variar de acuerdo a la organización o a la metodología que se utilice.

martes, 24 de mayo de 2016

Cómo utilizar el control Kendo UI NumericTextBox

El control Kendo UI NumericTextBox está diseñado para dar formato numérico y limitar los datos de entrada de los controles INPUT únicamente a los rangos que se especifiquen según sea especificado en la configuración del control.

Entre los formatos que este control puede manejar se encuentran las siguientes:

  • Monedas
  • Porcentaje
  • Números enteros
  • Números con precisión

Además si se utiliza el control con la sentencia kendo.culture este control puede dar formato de acuerdo al lenguaje y a las propiedades especificas de cada región o cultura.

Bien ahora mostraré un código en donde se verán todas las propiedades de este control, en este ejemplo se muestran 6 controles Kendo NumericTextBox, 4 de ellos configurado para mostrar cantidades monetarias, 1 de ellos configurado para mostrar cantidades enteras y el último para mostrar una cantidad porcentual.

Fig 1 La ejecución de la página con 6 controles NumericTextBox.

Introduciendo los valores, observamos como los controles le dan formato numérico a las entradas de datos.

Fig 2 Primer ejemplo: Introduciendo las cantidades numéricas.

Fig 3 Completando las entradas numéricas del primer ejemplo.

Fig 4 Un segundo ejemplo, introduciendo las cantidades numéricas.

Fig 5 Un segundo ejemplo, completando las entradas numéricas.

Como primer paso hago la iniciación de los controles, con la sintaxis:

Aquí algunas de las propiedades que utilizo en los controles de este ejemplo:

  • format: Especifica el tipo de formato que se usará en la cantidad numérica. Su valor predeterminado es numérico “n”.
  • spinners: Con esta propiedad se muestran las flechas de incremento/decremento del control.

Algunos de los eventos que utilizo:

  • change: Este evento se ejecuta cuando el valor del control se cambia.

martes, 10 de mayo de 2016

Utilizando el bloque try/catch en SQL Server para manejar errores

Desde la versión 2005 de Sql Server se incorpora el bloque try/catch para el manejo de errores en el código T-SQL, esta característica similar a la que tienen los lenguajes .NET consiste de dos partes:


BEGIN TRY
 --Sentencias T-SQL de funcionalidad
END TRY

y el bloque CATCH
BEGIN CATCH
 --Sentencias T-SQL para el manejo de error
END CATCH

Cuando se genera un error dentro del bloque TRY, inmediatamente el flujo del programa continua en el bloque CATCH donde el error se procesa de diferentes maneras, sino se genera un error el flujo se salta el bloque CATCH y continua hasta terminar el programa.

Dentro del bloque CATCH puedes utilizar las siguientes funciones del sistema para obtener información del error.

  • ERROR_LINE() - El número de línea que causo el error o donde se ejecutó la orden RAISERROR.
  • ERROR_MESSAGE() - Un texto resumen que indica la naturaleza de error.
  • ERROR_SEVERITY() - Regresa la severidad del error.
  • ERROR_STATE() - Regresa un valor entero que regresa NULL si se ejecutó afuera de un bloque CATCH.
  • ERROR_NUMBER() - Regresa el número de error que causo el error. Esta función regresa el número de error cuando se ejecuta adentro de un bloque CATCH, sino se ejecuta dentro un bloque CATCH regresa NULL.
  • ERROR_PROCEDURE() - regresa el nombre del store procedure o trigger donde ocurrió el error.
  • ERROR_PROCEDURE() - Regresa NULL si el error no ocurre dentro de un STORE PROCEDURE, si se ejecuta dentro de un STORE PROCEDURE o TRIGGER regresa entonces el nombre del STORE PROCEDURE o TRIGGER.

Una de las recomendaciones para la utilización del bloque TRY/CATCH es poner una sentencia ROLLBACK TRANSACTION en el bloque CATCH para que en caso de transacciones parciales se conserve la integridad de la información.

Bien a continuación un ejemplo de como programar un bloque TRY/CATCH en T-SQL:

Cuando se ejecuta este código con el número 25 positivo el programa se ejecuta correctamente y no generará una excepción :

Fig 1 Ejecutándose con un número positivo no genera excepción.

En cambio si se ejecuta con un entero negativo se lanzará una excepción que el bloque CATCH procesará correctamente.

Fig 2 Ejecutándose con un numero negativo genera excepción.

Consultando el catalogo sys.messages

Se puede consultar el catalogo sys.messages para ver la lista completa de números de error y sus correspondientes mensajes con la siguiente sentencia:

SELECT *FROM sys.messages ORDER BY message_id
Fig 3 Consultando el catalogo sys.messages para ver la lista completa de errores y mensajes.

miércoles, 4 de mayo de 2016

Entendiendo los arreglos en C#

Una de las estructuras de datos básicas en C# son los arreglos, los arreglos son estructuras que contienen elementos del mismo tipo relacionados y de longitud fija. Estas estructuras conservan la misma longitud una vez que se crean; pero esto puede cambiar si a la variable asignada se le asigna un nuevo arreglo con una longitud diferente, a continuación muestro unos ejemplos de como declarar un arreglo:

      int[] array= new int[6];
      int[] array2= {0,1,2,3,4,5};
      var array3 = new int[6]{0,1,2,3,4,5}; 
    

Los elementos de un arreglo pueden ser primitivos, objetos u otros arreglos. Aqui algunos ejemplos: un arreglo con primitivos, objetos y arreglos.

      string[] array4 = new string[6];

            Point[] array5 = new Point[6];

            int[][] jaggedArray = {
                new int[] {0,1},
                new int[] {2,3,4},
                new int[] {5,6}
            }; 
    

Para identificar a un elemento dentro de un arreglo se utiliza la posición del elemento dentro del arreglo, a esta posición se le conoce como el índice del elemento. Es importante recordar que para el primer elemento de cualquier arreglo su índice es zero y que el índice siempre es un entero no negativo.

Cuando se crea un arreglo y a sus elementos no se les proporciona un valor predeterminado entonces cada elemento se crea con su valor predeterminado: 0 para los elementos numéricos, false para los boolean y null para las referencias. La longitud de un arreglo se obtiene con la propiedad Length. Los elementos de un arreglo pueden recorrerse utilizando una iteración for utilizando un indice o bien con una instrucción foreach, la instrucción foreach itera entre los elementos desde el índice 0 hasta el final del arreglo. La instrucción foreach se recomienda para el recorrido de arreglos de solo lectura sin alteración del valor de los elementos, en operaciones donde no se requiere utilizar el indice o bien para los arreglos de tipo objetos.

El siguiente programa con el algoritmo Bubblesort muestra con más claridad las propiedades de los arreglos:

Al ejecutar este programa se mostrará el siguiente resultado:

jueves, 14 de abril de 2016

Libros de programación en JavaScript

Libros de programación en JavaScript para descargar, consultar en línea o con un precio accesible.

Para ver el catálogo completo a este enlace jsbooks.revolunet.com