sábado, 22 de abril de 2023

Google Colab + Python

 



¿Que es Google Colab?

Colab es una plataforma cloud, que permite a sus usurios programadores trabajar sobre una plataforma primero multilenguajes con un hardware potente que no tendrias en tu equipo personal para que lo puedas usar y trabajar en linea sin necesidad de instalar un IDE en tu equipo.

Luego esta es una plataforma robusta para trabajar en Data Sciences a traves de un framework denominado notebook de colab con el cual podes trabajar como si lo tuvieras instalado en tu propia maquina; Se puede instalar distintas librerrias externas que se requieran, paquetes que necesites para correr tu proyecto, te permite depurar tu codigo y ejecutar ambientes graficos de ejecucion.

Una buena opcion para estudiantes y colegas docentes que necesiten tener un ambiente de desarrollo y pruebas para los proyectos que se definen en clases y asi contribuir en la colaboracion de codigo con los estudiantes y la comunidad de desarrollo. 

Este es un ambiente gratuito con su version de pago tambien si es que quiere trabajar ya con proyectos grandes para tu empresa o clientes externos.

Ruta para que puedas crear tu ambiente de forma gratuita: https://colab.research.google.com/








Se hace muy facil el desarrollo con python a traves de este ambiente online de desarrollo, por su puesto no es el unico hay muchos que trabajan de la misma forma, otro de ello es CodeSpace de github una plataforma muy parecida y diferentes particularidades que en otro blog le estare mostrando.

Si quieres saber un poco mas puede vistar este link: https://github.com/jpeinado

lunes, 29 de julio de 2019

¿ Qué no es Docker ?


En primer lugar Docker, no es una maquina virtual ya que este no requiere de una disposición física ya preconfigurada como una maquina virtual y tambien no requiere de recursos ya predispuestos por la maquina para su funcionamiento. Todo esto hace que nuestro hardware y recursos sean limitados por la maquina extendida que queramos poner a funcionar. 

Diferencias entre una arquitectura y la otra, para mejorar el entendimiento de estas dos plataforma que hoy en día esta como las plataformas mas usadas por los desarrolladores y la gente de infraestructura en las empresas.

Arquitectura de una VM (wmware o virtualBox):


Como su nombre lo dice una maquina virtual es una extensión de una maquina que permite que muchos sistemas operativos puedan usar el mismo hardware de manera compartida, con la limitante de sus recursos.

En esta arquitectura hay una capa que es la principal que es el Hipervisor, que es un software que permite exponer los recursos del hardware al sistema que se esta virtualizando, de manera que este pueda usarlo como si fuera propio de él.

Arquitectura de un Contenedor (Docker o Kubernete):

Como su nombre lo dice un contenedor es una manera de encapsular una serie de aplicativos, libreria,  empleando los recurso del sistema operativo anfitrión, sin degradar el rendimiento del mismo.

En este momento solo estoy hablando de Docker por ser uno de los mas populares del momento. Docker permite correr multiples contenedores con la facilidad de no tener que esperar una eternidad hasta que estos esten listos para su ejecución.
Docker es muy util en los procesos de desarrollo ya que permite tener una serie de plataformas corriendo y vinculadas para realizar las pruebas y puesta en producción de todo lo que vayamos contruyendo. Tiene una serie de imagenes que permite reultilizarse entre aplicativos las cuales estan expuesta en el cloud para su uso de forma directa.

Docker permite transportar aplicaciones, de una maquina a otra sin ningún problema, hoy en día se puede transporta entre sistemas operativos (Linux, Mac OS, Windows), por este motivo se a convertido en uno de los mas usados.


"La mayoría del software actual es muy parecido a una pirámide egipcia, con millones de ladrillos puestos unos encima de otros sin una estructura integral, simplemente realizada a base de fuerza bruta y miles de esclavos"
Por: Alan Kay. 

jueves, 1 de febrero de 2018

WordPress una Excelente Plataforma Para la publicacion de Contenidos


WordPress Excelente Plataforma para Gestionar Contenidos

 

Antecedentes.-
WordPress es una plataforma que en sus inicios en los años 2003, nace como una plataforma gestora de blogger, pero mientras van pasando los año esta va madurando y hoy en dia es una de las plataforma mas completas en la gestion de contenidos (CMS). Por esta cituacion es que la tomo en cuenta para poder hablar en este momento sobre sus bondades.

¿Por qué WordPress?

Actualmente en el mundo 40% de los sitios web estan desarrollados bajo la plataforma de wordpress es una de mas utilizadas para la creacion de sitios comerciales, paginas personales o blogger, LMS en la educacion, ect.
Es una plataforma de codigo abierto, tiene muchisimos seguidores que aportan en la comudidad libre, tiene bastante documentacion relacionada sobre la plataforma y tiene un grupo muy grande de desarrolladores que aportan a la plataforma con plugins que se pueden agregar a la plataforma de forma facil.

Este framework es modular y facil de integrar ya que no se requiere muchos conocimientos de programacion y es muy facil de crear codigo que pueda ser portado a la plataforma, para ello existe mucha documentacion a la mano de los desarrolladores en esta plataforma.

miércoles, 14 de septiembre de 2011

ASEGURAMIENTO DEL SOFTWARE (SDL)

MODELO DE MADURES PARA EL ASEGURAMIENTO DE SOFTWARE

Muchas organizaciones de desarrollo de software, incluidos los productos y grupos de servicios en línea de Microsoft, utilice el desarrollo ágil de software y métodos de gestión para crear sus aplicaciones. Históricamente, la seguridad no se le ha dado la atención necesaria en el desarrollo de software con métodos ágiles. Dado que los métodos ágiles se centran en la rápida creación de funciones que satisfacen las necesidades de los clientes directos, y la seguridad es una necesidad del cliente, es importante que no sea pasado por alto. En el actual mundo altamente interconectado, donde existen importantes requisitos legales y de privacidad para proteger los datos privados, la seguridad debe ser tratada como una alta prioridad.
Existe la percepción actual de que los métodos ágiles no crear código seguro, y, en su posterior análisis, la percepción es la realidad. Hay muy poco "seguro ágil" los conocimientos técnicos disponibles en el mercado hoy en día. Esto tiene que cambiar. Pero la única manera de la percepción y la realidad puede cambiar es la forma activa de tomar medidas para integrar los requisitos de seguridad en los métodos de desarrollo Agile.
Microsoft ha puesto en marcha un conjunto de mejoras de procesos de software de desarrollo llamado Security Development Lifecycle (SDL). La SDL se ha demostrado que reducir el número de vulnerabilidades en el software de envío de más del 50 por ciento. Sin embargo, desde un punto de vista de Agile, el SDL es pesado, ya que fue diseñado principalmente para ayudar a asegurar productos de gran tamaño, tales como Windows y Microsoft Office, los cuales tienen largos ciclos de desarrollo.
Si los profesionales ágiles son la adopción de la SDL, dos cambios se deben realizar. En primer lugar, las adiciones SDL a procesos ágiles debe ser magra. Esto significa que para cada función, el equipo funciona SDL sólo lo suficiente para esa función antes de trabajar en la siguiente. En segundo lugar, las fases de desarrollo (diseño, ejecución, verificación y liberación) asociados con la clásica cascada de estilo SDL no se aplican a los ágiles y debe ser reorganizado en un formato más ágil de usar. Con este fin, el equipo de SDL en Microsoft desarrolló y puso en práctica un método simplificado que combina los métodos ágiles y la seguridad del ciclo de vida de desarrollo de seguridad para el desarrollo ágil (SDL-Agile).

Proceso de modelado empleados en el aseguramiento de software


The SDL Threat Modeling Process

domingo, 27 de marzo de 2011

Desarrollando Aplicaciones Moviles

Plataformas utilizadas en el Desarrollo de Aplicaciones Móvile

Windows 7 series, a nueva versión del sistema operativo de Microsoft para SmartPhone que vino hace unos dias y que, al menos con previews, dejó impresionados a muchos, no estará disponible para ningún aparato que cuenta ahora con Windows Mobile 6.1 o 6.5. Microsoft se ha puesto mucho más estricto con los requisitos de cada uno de los celulares que traerá Windows Phone 7 (para mejorar la experiencia del usuario), y por lo tanto, al no contar con los 3 botones necesarios (3 botones, exactamente), el HD2 de HTC no califica para actualizarse al Windows 7.

htc-hd2-angled

El primero de nueva gama de HTC de Mobile World Congress del mes pasado, y trazando una línea directa de nuevo a un teléfono casi 12 meses de edad, el HTC Increíble debe dejarnos fríos.Embalaje ni la gran pantalla de la Touch HD , ni correr el sistema operativo más reciente, como la inminente deseo , es un núcleo de teléfono único en lo que es rápido perfila como un núcleo mundo dual. Lo que pasa es más débil dispositivos tienen la costumbre de sorprender a usted, y el no es diferente. Echa un vistazo a la completa revisión SlashGear.


Comentario
A mi parecer en este momento estas son las dos plataformas mas empleada en nuestro país para el desarrollo de aplicaciones móviles, en este momento las dos cuentan con una gran gama de celulares que tienen su sistema operativo en ellos los mas populares htc, samsung, nokia, etc.
Su framework de desarrollo como ser su sdk de ambos son gratis para bajar, es por ello que muchos desarrolladores lo emplean en sus proyectos, pero como dicen el mejor de ambos es el que mejor domine el desarrollador y al que le puedan sacar lo mejor de cada uno.

domingo, 13 de marzo de 2011

OWASP - SEGURIDAD EN APLICACIONES WEB
El proyecto abierto de seguridad en aplicaciones Web (OWASP por sus siglas en inglés) es una comunidad abierta y libre de nivel mundial enfocada en mejorara la seguridad en las aplicaciones de software. la misión es hacer la seguridad en aplicaciones "visible", de manera que las organizaciones pueden hacer decisiones informadas sobre los riesgos en la seguridad de aplicaciones. Todo mundo es libre de participar en OWASP y en todos los materiales disponibles bajo una licencia de software libre y abierto. La fundación OWASP es una organización sin ánimo de lucro 501c3 que asegura la disponibilidad y apoyo permanente para su trabajo.

COMENTARIO

En la actualidad son pocas las empresas que incorporan la seguridad en sus desarrollos, ya que suponen que es un gasto el agregar técnicas y estándares de seguridad en sus procesos, por considerarlos tediosos y caros su implementacion.
Es por causa de este tipo de acciones que nuestro software en la actualidad es subvalorado por nuestros clientes ya que creen que es un software de menor calidad que el importado.

Si quieres conocer un poco sobre la organización OWASP puedes hacerlo aquí. http://www.owasp.org/index.php/Main_Page

domingo, 30 de mayo de 2010

Creando una Aplicacion Web Basada en Arquitectura N-Capas

Introduccion

El desarrollo de software es una tarea que requiere tener conocimientos variados, tanto de capacidad de diseño, capacidad de analisis, capacidad de programacion, todas estas actividades deberian ser realizadas por un equipo, conformados por profesionales multidisiplinarios que reunan todos sus conocimientos en la elaboracion o desarrollo de un producto.

Una de estas Capacidades es la de poder representar una arquitrctura tanto logica como fisica a traves de Algoritmos que permitan recrear esta idea y transformarla en algo que se pueda ver mediante un IDE y un lenguaje de programacion.

Diseño Arquitectonico N-Capas


Capa de Acceso a Datos (Persistencia)

La Capa de acceso a datos la representaremos a traves de librerias de clases que permitan interactuar con una fuente datos.

Ejemplo en codigo VB.Net


#Region "Libreria"
Imports System.Data.Common
Imports System.Data.SqlClient
Imports System.Data.SqlTypes
Imports BESEC = BE.Seguridad
#End Region
Namespace Seguridad
Public Class PersonaDAO

#Region "Manejador de Datos Sql"

Public Function Conectar() As Boolean
Dim Estado As Boolean = False
Dim cn As SqlConnection = New SqlConnection()
Dim cmd As SqlCommand = New SqlCommand()
Try
cn.ConnectionString = "Data Source=JCPEINADO-PC\SQLEXPRESS;Initial Catalog=dbPrueba;Integrated Security=True"
cn.Open()
cmd.Connection = cn
cmd.CommandType = CommandType.Text
cmd.CommandText = "SELECT * FROM RegPersona"
Dim obj As SqlDataReader = cmd.ExecuteReader()
Catch ex As Exception
Return Estado
Finally
Estado = True
End Try
cn.Close()
cmd.Dispose()
Return Estado
End Function

Capa de Negocio (BC)

La capa de Negocio permite interactuar con la capa de acceso a datos, permitiendo asi la separacion de funciones o delegacion.


#Region "Librerias"
Imports DAL.Seguridad
Imports BE.Seguridad
#End Region
Namespace Seguridad
Public Class Personas
Public Function Conectar() As Boolean
Dim DALObj As PersonaDAO = New PersonaDAO()
Return DALObj.Conectar()
End Function

Public Function Listado() As List(Of Persona)
Dim ObjPersona As PersonaDAO = New PersonaDAO()
Return ObjPersona.Listado()
End Function
End Class
End Namespace

Capa de Presentacion

La capa de presentacion se sirve de la capa de negocios para poder presentar los datos que la capa de negocio le entrega.


Imports BC.Seguridad
Partial Class _Default
Inherits System.Web.UI.Page

Protected Sub form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles form1.Load
Dim BcObj As Personas = New Personas()
If BcObj.Conectar() Then
Response.Write("La coneccion fue exitosa !!!")
End If
dgPersona.DataSource = BcObj.Listado()
dgPersona.DataBind()
End Sub

viernes, 10 de abril de 2009

Estandarizacion en el proceso de desarrollo de software

Estandares en el Proceso de Desarrollo de Software.


Los estandares son parte muy importante de la gestion del desarrollo de software, sin estos la elaboracion de cualquier proyecto seria algo insirto, ya que no contaria con mecanismos para poder gestionar y controlar de forma correcta todo el ciclo de vida del proyecto de software a elaborar.

Comentario.

Las empresas de desarrollo de software en la actualidad no toman en cuenta los aspecto de seguridad en el proceso de desarrollo del software, ni emplean estándares o normas para el ciclo de vida del mismo, es por ello que las empresas locales no son competencia para empresas extranjeras que cumplen con las normativas internacionales y pueden ofertar sus productos en cual parte de mundo por que tienen el aval de instituciones que las garantizan.

Es por ello que las acciones que tiene que tomar una organización para poder medir de alguna manera en que situación se encuentra con respecto a la seguridad en cada fase del proceso de desarrollo de software, es bastante tedioso de la manera en la que se lo afronta en la actualidad, sin contar con las herramientas, Metodología, estándares y normas que apoyen este tipo de proceso.

Esto ocasiona que la organización incurra en muchos gastos por que tienen que contratar con personal altamente capacitado o contratar empresas externas que se encarguen de este tipo de procesos, ya que el personal es muy reducido y están obligados a realizar diferentes tipos de tareas, ya que no existe una estructura en la organización bien definida.

El personal al no contar con herramientas de apoyo comienza a buscar alternativas para poder evaluar su propio software, haciendo que el compañero revise y valide lo que el otro a realizado, haciendo informal un proceso que es muy importante para el proceso de desarrollo.

Uno de los objetivos principales es el de adoptar una norma, modelo ya existente a nivel internacional adecuándola la realidad local, y proponerla como una normativa que cubra todos los aspectos de seguridad para el desarrollo de software.

Entre los objetivos puntuales es el de contar con normas y estándares de seguridad para cada uno de las fases del ciclo de vida del desarrollo de software.
Contar con herramientas de apoyo en cada una de estas fases que faciliten y guíen el proceso de desarrollo.

Adoptar los patrones planteados para emplearlos en el proceso de desarrollo.
Contar con metodologías y herramientas de test para poder medir el nivel de seguridad en el que se encuentra cada una de las fases del proyecto de desarrollo de software.

Para ello se adoptara una norma internacional que servirá para la elaboración de una guía que servirá de apoya a la norma, estas dos herramientas permitirán a las empresas que quieran auditar y elaborar un sistema lo puedan hacer de forma rápida y segura.

Esta guía contara con métodos para resolver cada uno de los puntos planteado por la norma a través de ejemplos prácticos y en algunos casos asiendo uso de técnicas y herramientas que ya son utilizadas por otras empresas internacionales con bastante existo.

La norma que se pretende utilizar o adoptar como la norma madre será la ISO/IEC 15408-3, que será interpretada y plasmada en la guía que se pretende presentar como solución al problema de implementación de software seguro en empresas locales, ya que esta cuenta con todos los puntos relevantes necesario para garantizar el desarrollo de un proyecto de software con todas las garantía necesaria.

miércoles, 13 de febrero de 2008

Desarrollando aplicaciones con FrameWork, .net, java

Framework

Esquema de desarrollo de software a traves de codigo manejado, que permiten el uso de herramientas, controles, liberias, que permiten el desarrollo de aplicaciones robustas.


Email: Jpeinadop@gmail.com

Google Colab + Python

  ¿Que es Google Colab? Colab es una plataforma cloud, que permite a sus usurios programadores trabajar sobre una plataforma primero multile...