Ir al contenido principal

Entradas

Mostrando las entradas etiquetadas como Español

Patrón DAO en PHP (Data Access Object in PHP)

Este patrón es de gran ayuda a la hora de separar la manipulación de datos y acceso a la DB de la lógica propia de la aplicación. Una versión simplificada de este patrón posee tres componentes principales: El acceso a los datos El objeto de transferencia de datos (value object) El cliente que consume esos datos Antes de presentar el diagrama de clases analicemos el problema el cual consiste en encontrar una forma de manipular los datos de manera tal que el modo de acceder a los mismos sea transparente al cliente que los consume. Esto quiere decir que el cliente no tiene la necesidad de conocer cómo se acceden a los datos (SQL, conectores, motor de base de datos, tipo de base de datos, etc.). El objeto de acceso a los datos debe ser capaz de poder proveer lo que el cliente requiera y además el cliente debe poder utilizar cualquier otro objeto de acceso sin que esto afecte su lógica interna asegurando así que el sistema funcionará aún cuando se cambie de motor de base de...

Como llevar a cabo una refactorización

Introducción La refactorización siempre es uno de los procesos de desarrollo más complejos y riesgosos, sin embargo es crucial para la evolución del software que se está desarrollando. La forma de comenzar un proceso de refactorización depende de tres factores: Madurez del equipo de desarrollo Antigüedad del proyecto y de las herramientas utilizadas Evolución del cliente Estos factores pueden propiciar el proceso o bien bloquearlo por completo. Razones por las cuales refactorizar Aquellos que piensen que una refactorización no debería suceder nunca, están equivocados, este proceso es la clave de la evolución de todo software. No es factible comenzar desde cero cada vez que hay una revolución en la tecnologia o el mercado. Basta con que el cliente decida invertir para cambiar la tecnología lo cual impacta directamente en los sistemas que tenga implementados y en consecuencia en la velocidad que nuestro producto deba adaptarse. Pero hay muchas más razones por las cuales es n...

Cómo implementar clases testeables

Clases testeables lineamientos básicos Para lograr una implementación testeable se recomienda cumplir con los siguientes lineamientos: Bajo acoplamiento Capa de acceso a datos intercambiable Minimizar las interfaces privadas Comportamiento de cada interface debe ser parametrizable y tener valor de retorno División en componentes más pequeños Reutilizar la mayor cantidad de componentes posible Cada uno de estos puntos contribuye a la implementación de una clase testeable. Esto garantiza que podrá ser modificada sin propagar errores inprevistos a otras partes del sistema. Bajo acoplamiento El bajo acoplamiento es uno de los principales puntos a tener en cuenta a la hora de programar, pero no siempre se cumple. Capa de acceso a datos intercambiable El origen de los datos no suele cambiar periodicamente durante la vida de un sistema pero si durante el desarrollo, más aún en la etapa de investigación. Implementar una capa de acceso a datos que no sólo permita utilizar cualq...

Por qué la planificación es importante

La importancia de planificar radica no sólo en la enumeración de  pasos, especificación de tiempos del proyecto sino en detectar los desvíos (hechos eventuales que alteran el curso normal del proyecto) más probables y determinar los cursos de acción para tales eventos. Este ejercicio es vital para que el equipo pueda trabajar sobre suelo firme la mayor parte del tiempo posible. Siempre habrá momentos de incertidumbre pero reducir esa incertidumbre al mínimo es lo que marca la diferencia entre planificar y no planificar. Una buena planificación debería brindar las herramientas necesarias para afrontar los momentos de incertidumbre además de indicar el camino del proyecto. Cuando uno sabe exactamente qué hacer la planificación deja de ser explícita, se interioriza hasta el punto de ser un conjunto de actos reflejo. Esto sólo ocurre cuando se adquiere la suficiente experiencia en la materia al punto tal de convertirse en un experto. Aún así siempre será necesario plani...

Cómo elegir tu nueva notebook?

Tips para elegir tu notebook Al momento de elegir una nueva (o la primera) notebook muchos me consultan ¿cuál es la mejor? Es una pregunta simple pero que para cada uno tiene una respuesta diferente. Mi idea al responderla es siempre averiguar el uso que esa persona le dará a la notebook ya que en definitiva la mejor elección es la que se adapta a la vida de su usuario. Si estás buscando comprarte una nueva notebook yo te recomiendo hacer lo siguiente: Establece un presupuesto máximo . Es muy importante saber hasta cuánto puedes invertir, para mi un buen presupuesto no supera los $4000 (ARS) con un margen aceptable de $500 (ARS) Busca promociones o descuentos . Una muy buena opción a la hora de comprar es buscar los lugares que ofrecen descuentos o promociones con diferentes medios de pago esto te permitirá adquirir un buen producto a un mejor precio Elige tres marcas . De todos los fabricantes disponibles en el mercado  elige los tres que más te gusten por alguna de estas...

Herramientas para el desarrollo de software

En el desarrollo de software se conjugan muchas habilidades, personas, conocimientos, áreas, entre muchas otras cosas; y como es de esperarse también se necesitan muchas herramientas diferentes. En este artículo se intenta dar un pequeño listado de herramientas que ayudan a llevar la ardua tarea de desarrollar software de la manera más cómoda y eficiente posible. Cada una de las herramientas aquí listadas tienen un propósito, sin embargo su uso no es obligatorio ni indispensable pero sí de gran ayuda a la hora de realizar un trabajo ordenado y en equipo. Análisis y Diseño ArgoUML y Gaphor , son aplicaciones para crear diagramas diversos, principalmente utilizando UML. En el caso de ArgoUML, en mi opinión, es uno de los mejores en su categoría por tres detalles que lo destacan: 1) es Open Source, 2) al estar desarrollado en JAVA corre en cualquier SO, 3) permite crear diagramas de clases desde archivos fuentes y viceversa. Sin embargo, uno de los puntos en con...

Cómo aplicar el patrón DAO en Force.com (Parte 1)

En ocasiones es necesario añadir comportamiento tanto a objetos estándar (Standard Objects) como a objetos personalizados (Custom Objects) y a la vez desacoplar los objetos nativos de Force.com para que el componente desarrollado pueda ser reutilizado. El patrón de diseño que permite dejar la implementación nativa en una capa más baja y crear capas superiores de manera tal de potenciar las funcionalidades es el patrón de diseño DAO. Este patrón de diseño utiliza tres clases: Una clase para el acceso a los datos (Data Access Object) Una clase intermedia que representa una instancia del dato (Transfer Object) Una clase que procesa o utiliza los datos (Business Object) ¿Cómo funciona esta implementación? La clase DAO, por la cual recibe el nombre este patrón, es la que se encarga de la recuperación, actualización e incorporación de datos a la base de datos. Force.com se basa en otro patrón de diseño como lo es MVC (Model-View-Controller) el acceso directo a la ba...

OpenCV - Computer Vision Library

OpenCV es una librería Open Source para la visión artificial o visión por computadora (del inglés computer vision) escrita en C y C++. Corre bajo Linux, Windows y Mac OS X. También se puede utilizar con lenguajes como Python, Ruby, Matlab entre otros. Esta librería fue desarrollada originalmente por Intel en sus laboratorios de investigación, y fue concebida como una manera de hacer disponible universalmente la infraestructura para la vision artificial. Con el objetivo de que OpenCV sea utilizada para promover el uso comercial y la investigación, es abierta y libre. Esto quiere decir que puede ser embebida completa o parcialmente en otras aplicaciones sin la obligación de que esas aplicaciones sean abiertas o libres. Esta librería puede ser encontrada en SourceForge.net donde podrán descargarla o ir a la documentación en línea, la cual es muy completa. ¿Qué se puede hacer con OpenCV? Bueno, las posibilidades solo tienen el límite de quien la utilice, sin embargo algunas de las aplicaci...

Novedades en Virtual Library for Moodle

Hace exactamente 7 meses que Virtual Library for Moodle fue liberada y hemos superado las 600 descargas!! .. y siguen aumentando . El sitio oficial fue recientemente actualizado para mejorar la navegabilidad y poder brindar a nuestros usuarios un lugar donde encontrar información relativa al proyecto, descargar el software y la documentación además de obtener un método para contactarse. Como todo proyecto Open Source estamos más que felices de recibir participación en su desarrollo; ya sea traduciendo a algún idioma aún no disponible, realizando correcciones, o simplemente utilizándola. Varios de los actuales usuarios han hecho sus aportes comentándonos sus experiencias y sugerencias, en general, han superado con creces nuestras espectativas. En pocos meses estaremos lanzando una nueva versión beta para que todos tengan la posibilidad de probar las últimas correcciones realizadas como así también algunas características incorporadas, como por ejemplo un instalador tanto para Windows ...

Headmouse, moviendo el puntero con la cabeza

Una empresa que se dedica al desarrollo de tecnología, ha desarrollado diversos tipos de aplicaciones orientadas a las personas con capacidades disminuidas, entre esas aplicaciones se encuentra una muy interesante desde casi todo punto de vista. Esta aplicación, se llama Headmouse y permite mover el puntero del mouse mediante movimientos de la cabeza y expresiones faciales gracias al uso de otro dispositivo como lo es la webcam. Lo importante de destacar de esta aplicación son sus características: Es gratis Permite que cualquier persona, niños y adultos, puedan utilizar una computadora aún si no puede manejar un mouse La tecnología que utiliza está disponible a muy bajo costo en todas partes del mundo Desde el punto de vista técnico, lograr interpretar los movimientos de la cabeza y expresiones faciales para mover el puntero del mouse, hacer click, arrastrar, etc. merece ser reconocido. Quizás para algunos, esto no tenga ningún valor, pero pensando en un niño o niña que por cualquier m...

Pedir pizza desde la consola ... Siiii, en serio y te la llevan a tu casa!!!

Desde hace mucho tiempo Linux es visto por los usuarios del ventanitas como un bicho raro, más aún cuando observan horrorizados, con asco y casi teniendo lástima por los que tenemos que tipear comandos en una terminal. Para todos ellos y con mucho agrado para los linuxeros les informo que ahora no necesitan dejar de tipear, ni siquiera necesitan agarrar el telefono para pedir una pizza a domicilio .. no se imaginan? ... siiiii HAY UN COMANDO PARA PEDIR PIZZA!!!! No leyeron mal, el comando en cuestión es pizza_party se trata de un script que, mediante una cuenta en Domino's Pizza, envía un pedido a esta cadena de pizzerías, y en aproximadamente 30 minutos la pizza llega a su domicilio. El script posee varios argumentos que le permiten elegir el tipo de pizza (ingredientes), la cantidad y el espesor. Además antes de enviar el pedido el script consulta si está de acuerdo con el pedido e informa el importe de la pizza como así también el tiempo de espera para recibir su pedido. Asomb...

Touchscreen en Linux

Quizás sean pocos los que posean un touchscreen (marca Elotouch, puntualmente) en su poder, pero aquellos que necesiten hacerlo funcionar en un Linux, en este caso un Slackware, sigan los siguientes pasos: Descargar el siguiente driver xf86-input-evtouch-0.8.8.tar.bz2    Descomprimir el fichero en un directorio cualquiera Una vez descomprimido, ingresen al directorio recién creado y hagan:       $ ./configure    $ make    $ su    # make install Con esto ya tienen el driver instalador ahora solo queda configurar el servidor Xorg para que utilice el touchscreen como dispositivo de entrada. Editar el fichero xorg.conf, generalmente ubicado en /etc/X11/xorg.conf. Añade las siguientes líneas: Section "InputDevice"     Identifier "touchscreen"     Driver "evtouch"     Option "Device" "/dev/input/event1"     Option "DeviceName" "touchscreen"  ...

Biblioteca Virtual para Moodle

Con motivo de la realización del Trabajo Final de Aplicación de la carrera de Licenciatura en Sistemas de la FaCENA - UNNE el autor de este blog ha desarrollado un componente para la plataforma educativa Moodle que consiste en un bloque que provee una Biblioteca Virtual, dicho trabajo ha obtenido la calificación más alta en su presentación ante esta casa de altos estudios. Características : Open Source. Distribuido bajo GPL. Bloque para Moodle 1.8 o superior Desarrollado en PHP Base de datos MySQL (en versiones futuras se espera extender el soporte a otros motores) Basado en los formatos MARC 21 para la representación y comunicación de material bibliográfico y relacionado Sencilla instalación Capacidad de Regionalización Las funcionalidades que brinda la Biblioteca Virtual para Moodle © son las siguientes: Catalogación de items Búsquedas dentro del catálogo por Título, Autor e ISBN Visualización del registro catalográfico en formato MARC 21 Exportación e Importación de items catalog...

Configurar Wi-Fi en Slackware

Ahora es común tener una notebook pero no lo es tanto el tener un linux en ella y mucho menos tener un Slackware en la notebook. Sin embargo, es posible tenerlo por lo que vale la pena dedicarle unas líneas a la configuración del Wi-Fi. Primero que nada hay que saber cuál es la placa de red inalambrica que posee la notebook, es decir su marca y modelo. Si ya está Linux instalado en la notebook solo se debe ejecutar el siguiente comando para saber cuál es la marca y modelo de la placa de red inalambrica: # lspci Este comando dará como resultado algo similar a esto: 09:00.0 Ethernet controller: Marvell Technology Group Ltd. Unknown device 4354 (rev 12) 0b:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG Network Connection (rev 02) En estas líneas se puede observar que la segunda hace referencia a la placa de red inalambrica que posee la notebook, en este caso una Intel PRO/Wireless 3945ABG . Con esta información lo que se debe hacer es buscar cuál es el módulo que se deb...

Paquetes para Slackware

Para aquellos que recién comienzan a utilizar Slackware , esta grandiosa distribución GNU/Linux una de las más antiguas, estables y seguras que existen; de seguro se habrán encontrado con la tarea de instalar algún programa extra y que no es distribuido junto con Slackware. Uno de los mejores sitios para encontrar software empaquetado para esta distro es Linuxpackages.net ; en este sitio podrán realizar búsquedas en versiones específicas de Slackware inclusive en la última versión liberada, la 12.1. Los paquete que aquí se encuentran ya han sido precompilados por lo que no deberán realizar los típicos pasos "./configure","make" y "make install"; sino que solamente podrán utilizar las herramientas installpkg, pkgtool o kpackage para instalar los paquetes descargados desde este sitio. Claro que no siempre encontrarán el soft que buscan en este excelente sitio, en esos casos siempre es bueno recurrir a los sitios del autor del soft en cuestión para obtener l...

Slackware Linux en una Dell Inspiron 1525

La instalación de Linux en cualquier máquina siempre trae algunas dificultades o más bien requiere un esfuerzo extra al momento de la puesta a punto del sistema operativo. Mayormente estas dificultades se relacionan con el hardware (en muchas ocasiones ocurre con el hardware nuevo en el mercado o poco utilizado por linuxeros). Puntualmente la instalación de Slackware 12 ( descargar DVD de instalación - md5sum ) en una Dell Inspiron 1525 (cuyo sistema operativo era Windows Vista) resulta ser muy simple, más allá de algunas cuestiones al momento de configurar algunos dispositivos. Los dispositivos que requirieron un esfuerzo extra fueron: 1. Cámara web integrada 2. Wi-fi Otras caracterísiticas aún no han sido exploradas, como por ejemplo: 1. Micrófono integrado (si conectan un microfono a la salida frontal anda perfectamente) 2. Teclas multimedia 3. Control remoto (solo funcionan algunos botones, los botones especiales para controlar el volumen y cosas así no son detectados) 4. Puert...

¿Qué hace un Licenciado en Sistemas?

Muchas veces, conocidos que no son informáticos, me han preguntado ¿qué hace un Licenciado en Sistemas? ...... " Buena pregunta " - sonaba en mi cabeza. Yo sé lo que yo quiero hacer en mi vida profesional pero realmente ¿qué perfil tiene un Licenciado en Sistemas? Es sencillo saber qué hace un médico, un veterinario, un ingeniero civil, etc. Por ejemplo si su perro se enferma ¿a quién llaman? si quieren construir un puente ... ¿a quién llaman? si ustedes están enfermos ¿a quién llaman? Ahora, si necesitan un sistema para su empresa ¿a quien llaman? ... ¿a un Lic. en Sistemas? ¿a un Ing. en Sistemas? ¿a un programador de aplicaciones? ¿a un analista en sistemas? ¿a un consultor informático? o ¿al amigo que se la pasa en internet y que sabe "todo" sobre computadoras e hizo un montón de cursos (word, excel, windows, redes, etc.)? Esta situación se presenta a menudo; es tan confuso que muchas veces hasta los mismos profesionales informáticos o entendidos en la materia ...