Archivo de la categoría: Programacion

Articulos, noticias y tips sobre programación (php, c, c++, delphi, java, etc)

Se muda el blog

seguimos siendo napster2011 pero con otra url y haciendo enfasis en temas de seguridad informatca https://seginfo2013.wordpress.com/

Estos son los países interesados en software colombianos

La fuerza laboral capacitada, la calidad y los precios competitivos son los tres factores que le están permitiendo al país consolidarse como proveedor mundial de tecnología.

Estos son los líderes mundiales del mercado del software. Colombia potencial exportador de software.

Colombia potencial exportador de software.

Proexport identificó cuatro países donde las empresas colombianas de software tienen grandes oportunidades.

Según la entidad, Chile ofrece posibilidades, pues su mercado de software es uno de los más activos en Latinoamérica, especialmente el enfocado en educación, comercio, industria y servicios financieros.

En México hay empresas medianas y pequeñas que buscan actualizarse tecnológicamente para ser más eficientes y responder a las necesidades de sus clientes.

Éstas buscan soluciones de software adaptadas a las nuevas regulaciones del sistema financiero mexicano para prevenir el lavado de activos, gestión hospitalaria y programas de e-learning institucional, entre otros.

Panamá busca soluciones para bancos, hoteles, puntos de venta e inventarios. Además, como la Cámara Panameña de las Tecnologías de la Información tiene por objetivo para 2018 consolidar a ese país como líder en la región en el sector de las tecnologías de la información y las comunicaciones, hay un nuevo interés de las empresas en productos elaborados en el extranjero, creando así complementariedad.

Finalmente, Alemania, es un país importador neto de productos del sector tecnológico.

Las empresas que exporten a Alemania tienen que estar seguras de que sus productos cuentan con la certificación CE, la cual identifica un producto que cumple con los estándares de salud y seguridad de la Unión Europea.

Asimismo, los productos tienen que ser modificados de acuerdo a las costumbres del país y el lenguaje.

Los factores fundamentales que le están permitiendo al país consolidarse como proveedor mundial de tecnología: fuerza laboral capacitada, calidad y precios competitivos.

Un estudio de Proexport destaca que Colombia es la tercera economía en la región latinoamericana con el mayor número de graduados en las áreas de Negocios e Ingeniería, de acuerdo con un reporte de Euromonitor 2012.

El Ministerio de Educación reveló que entre 2001 y 2011 se graduaron 21.593 ingenieros, de especialidades como eléctrica, electrónica, industrial e informática.

Según Daniel LeBlanc, comprador de Estados Unidos, “antes le compraba a países como India y las Filipinas, pero los precios subieron. Acá en Colombia hay más protección legal, las puertas están abiertas debido al Tratado de Libre Comercio, el precio es bueno, el talento también y además tienen hambre por entrar a nuevos mercados y por hacer negocios”.

Por su parte, José Carlos Aguilar, de Perú, aseguró que su “país aún tiene mucho por desarrollar y definitivamente Colombia está mucho más avanzando en ese aspecto, por lo que hay muchas demandas que pueden ser cubiertas por las empresas colombianas. Por ejemplo, a nivel financiero y empresarial, que ayuden en el desarrollo de los procesos, los productos a medida y fábrica de software, hay de todo”.

Tanto Estados Unidos como Perú son países en los que hay oportunidades para las empresas colombianas, así como en Centroamérica y el Caribe.

Fuente: Revista Dinero

Las especificaciones finales del estándar HTML 5 se podrían cerrar en 2014

Los directores del grupo de trabajo HTML de la organización W3C han presentado un plan con el que buscan que se apruebe una especificación HTML5 estable antes de que termine el año 2014.

La idea es que durante ese año se definan las carácteristicas el estándar HTML 5.0 y sus diversas funciones y las posteriores revisiones se añadan en unaextensión denominada HTML 5.1, que llegaría en 2016.

El problema actual de HTML 5.0 es que a pesar de que han llegado nuevos editores del código este verano, demasiadas áreas se encuentran todavía en fase de construcción y en otras apenas se han producido cambios reseñables en los últimos meses.

Asimismo, algunas tecnologías cuyas definiciones estaban incluidas en HTML5, como es el caso de Web Workers, WebSockets y Microdata, han pasado ahora a dividirse en especificaciones separadas.

En cualquier caso, lo cierto es que a pesar de que no haya una especificación oficial para HTML5, los desarrolladores web ya utilizan muchas funciones y han sido integradas en los navegadores.

Por otro lado, la política de patentes de la W3C, que desea que HTML5 se presente como un estándar libre de royalties, necesita que haya una especificación oficial para que esa estrategia entre en vigor.

Fuente: IT Security EOG

Como crear un Log de Transacciones en PHP

Hola de nuevo, esta vez les comparto a todos ustedes una clase en PHP que nos permite crear un Log de Transacciones para cualquier Clase que vayamos a desarrollar en nuestra aplicación, para este ejemplo utilizamos la clase Usuarios:

<?
/**
* @class: LogUsuario
* @author: Ricardo Rosero
* @version: 1.0
*/
class LogUsuario{
/**
* @atributos
*/
private $cedula_usuario_log;
/**
* @function: __contructor
* @author: Ricardo Rosero.
* @param: $cedula_usuario_log
* @description: Este metodo le asigna los valores por defecto para la construccion de la clase.
* @access: public.
*/
public function __construct($cedula_usuario_log){
$this->modificarCedulaUsuarioLog($cedula_usuario_log);
}
/**
* @function: obtenerCedulaUsuarioLog
* @author: Ricardo Rosero.
* @param:
* @description: Este metodo obtiene la cedula de usuario que realiza la instancia del objeto usuario.
* @access: public.
* @return: integer.
*/
public function obtenerCedulaUsuarioLog(){
return $this->cedula_usuario_log;
}
/**
* @function: modificarIdConexion
* @author: Ricardo Rosero.
* @param: $cedula_usuario_log
* @description: Este metodo modifica la cedula de usuario que realiza la instancia del objeto usuario.
* @access: public.
*/
public function modificarCedulaUsuarioLog($cedula_usuario_log){
$this->cedula_usuario_log=$cedula_usuario_log;
}
/**
* @function: agregarLogUsuario
* @author: Ricardo Rosero
* @description: Esta funcion agrega el log de transaccion de un registro de un usuario. Retornara true si se agregaron los datos, false de lo contrario.
* @param: $cedula_usuario, $cedula_usuario_registro, $id_rol, $estado_usuario, $tipo_log
* @access: public
* @return: boolean
*/
public function agregarLogUsuario($cedula_usuario, $id_rol, $estado_usuario, $tipo_log){
$usuario=new Usuario($this->obtenerCedulaUsuarioLog());
$rol=new Rol($this->obtenerCedulaUsuarioLog());
if(($cedula_usuario==”)||($id_rol==”)||($estado_usuario==”)||($tipo_log==”)){return false;}
if(($estado_usuario!=’Activo’)&&($estado_usuario!=’Inactivo’)){return false;}
if(($tipo_log!=’Agregar’)&&($tipo_log!=’Eliminar’)&&($tipo_log!=’Modificar’)&&($tipo_log!=’Consultar’)){return false;}
if(($usuario->existeUsuario($cedula_usuario)==false)||($usuario->existeUsuario($this->obtenerCedulaUsuarioLog())==false)||($rol->existeRol($id_rol)==false)){return false;}
else{
$fecha_log=time();
$cedula_usuario_log=$this->obtenerCedulaUsuarioLog();
$sql=”insert into log_usuario (cedula_usuario, cedula_usuario_registro, id_rol, estado_usuario, fecha_log, tipo_log) values (‘$cedula_usuario_log’, ‘$cedula_usuario’, ‘$id_rol’, ‘$estado_usuario’, ‘$fecha_log’, ‘$tipo_log’)”;
$resultado=mysql_query($sql);
return $resultado;
}
return false;
}
}
?>

Napster2011

Clase PHP para realizar envío de correo electrónico

Buen día, muchos de nosotros hemos desarrollado aplicaciones web que requieran enviar correo electrónico a los usuarios al momento de registrar usuarios a nuestras aplicaciones, algunos de ustedes seguramente no tienen idea como se hace esta operación, otros en cambio saben que existe una función de PHP llamada PHPMailer(), pero no tienen idea de como utilizarla, debido a ésto, he decidido compartir con ustedes la siguiente clase:

<?
class Correo{
var $cedula_usuario_log;
/**
* @function: __contructor
* @author: Ricardo Rosero
* @param: $cedula_usuario_log
* @description: Esta funcion permite construir la clase
* @access: public
*/
function __construct($cedula_usuario){
$this->cedula_usuario_log=$cedula_usuario;
$this->servidor= “ssl://smtp.gmail.com”; // servidor de correo electronico, en este caso estoy utilizando como servidor de salida smtp de gmail
$this->puerto= 465;
$this->nombre_usuario=”cuenta.de.correo@servidor.com”; //nuestra cuenta de correo desde la cual vamos a enviar los mensajes
$this->clave_usuario=”P4ssW0Rd.”; // password de nuestra cuenta de correo electronico
$this->id_conexion=$id_conexion;
$this->cedula_usuario=$cedula_usuario;
}
/**
* @function: enviar_mail
* @author: Ricardo Rosero
* @param: $mail_destino,$nombre_destino,$asunto,$mensajehtml,$mensajetxt
* @description: Esta funcion envia un correo electronico desde una cuenta de correo.
* @access: public
*/
function enviar_mail($mail_destino,$nombre_destino,$asunto,$mensajehtml,$mensajetxt){
$mail = new PHPMailer();
$mail->IsSMTP();// send via SMTP
$mail->Host= $this->servidor;// SMTP servers
$mail->Port= $this->puerto;// puerto
$mail->SMTPAuth=true;// authenticacion SMTP
$mail->Username=$this->nombre_usuario;// SMTP usuario
$mail->Password=$this->clave_usuario;// SMTP clave */
$mail->From=”cuenta.de.correo@servidor.com”;// Mail Remite
$mail->FromName=”Correo de Prueba”;// nombre remite
$mail->IsHTML(true);// enviar como HTML
$mail->AddAddress($mail_destino,$nombre_destino);// direccion y nombre del destino
$mail->WordWrap=50;
$mail->Subject=$asunto;// asunto del e-mail
$mail->Body=$mensajehtml;// cuerpo del e-mail en html
$mail->AltBody=$mensajetxt;// cuerpo alternativo en texto
$resultado=false;
if(!$mail->Send()){
$resultado=false;
//$xsend[1]=”Error: “.$mail->ErrorInfo;
}
else{
$resultado=true;
}
return $resultado;
}
}
?>

Napster2011

Clase PHP para conectarnos a una Base de Datos

Buen día, siguiendo con los pequeños tutoriales, esta vez les comparto una clase en PHP para conectarnos a una base de datos, en este caso, nuestro servidor es mySQL.

<?
/**
* @class: BaseDatos
* @author: Ricardo Rosero
* @version: 1.0
*/
class BaseDatos{
/**
* @atributos
* @author: Ricardo Rosero
*/
var $servidor;
var $usuario;
var $clave;
var $base_datos;
var $id_conexion;
var $desconexion;
/**
* @function: __construct
* @author: Ricardo Rosero
* @description: Esta funcion instancia los datos de la conexion a la base de datos
* @access: public
*/
function __construct(){
$this->servidor=”localhost”; //direccion ip o nombre servidor
$this->base_datos=”nombre_base_de_datos”;
$this->usuario=”root”;
$this->clave=”m1p4ssW0rd.”;
$this->id_conexion=0;
$this->desconexion=false;
}
/**
* @function: conectar
* @author: Ricardo Rosero
* @description: Esta funcion conecta a la aplicacion hecha en php con la base de datos.
* @access: public
* @return: int
*/
function conectar(){
$this->id_conexion=mysql_connect($this->servidor,$this->usuario,$this->clave) or die (‘Error, La aplicacion no se pudo conectar a la base de datos. Intenete mas tarde.<br/>’.mysql_error());
mysql_select_db($this->base_datos,$this->id_conexion) or die (“”+mysql_errno($this->id_conexion).”: Error en la seleccion de la base de datos, “.mysql_error($this->id_conexion));
return $this->id_conexion;
}
/**
* @function: desconectar
* @author: Ricardo Rosero
* @description: Esta funcion desconecta la aplicacion hecha en php de la base de datos, dadpo el identificador de la
* conexion.
* @param: $id_conexion
* @access: public
* @return: int
*/
function desconectar($id_conexion){
$this->desconexion=mysql_close($id_conexion);
return $this->desconexion;
}
/**
* @function: obtenerNombreServidor
* @author: Ricardo Rosero
* @description: Esta funcion retorna el nombre del servidor
* @access: public
* @return: String
*/
function obtenerNombreServidor(){
return $this->servidor;
}
/**
* @function: obtenerBaseDatos
* @author: Ricardo Rosero
* @description: Esta funcion retorna el nombre de la base de datos
* @access: public
* @return: String
*/
function obtenerBaseDatos(){
return $this->base_datos;
}
/**
* @function: obtenerNombreUsuario
* @author: Ricardo Rosero
* @description: Esta funcion retorna el nombre del usuario que se conecta a la base de datos
* @access: public
* @return: String
*/
function obtenerNombreUsuario(){
return $this->usuario;
}
/**
* @function: obtenerClaveUsuario
* @author: Ricardo Rosero
* @description: Esta funcion retorna el password del usuario que se conecta a la base de datos
* @access: public
* @return: String
*/
function obtenerClaveUsuario(){
return $this->clave;
}
}
?>

Napster2011

Clase en PHP para la manipulación de archivos

Buen día queridos lectores, en esta ocasión les comparto la siguiente Clase en PHP, la cuál es muy útil para todos los que desarrollamos aplicaciones Web y además necesitemos manipular cualquier tipo de archivo desde nuestra aplicación Web.

<?
/**
* @class: Archivo
* @author: Ricardo Rosero
* @version: 1.0
*/
class Archivo{
/**
* @atributos
*/
var $cedula_usuario_log;
/**
* @function: __contructor
* @author: Ricardo Rosero
* @param: $cedula_usuario_log
* @description: Esta funcion permite construir la clase
* @access: public
*/
function __construct($cedula_usuario){
$this->cedula_usuario_log=$cedula_usuario;
}
/**
* @function: esArchivoValido
* @author: Ricardo Rosero
* @description: Esta funcion retornara true si el tipo de un archivo cumple con los siguientes formatos: JPG, GIF, PNG, MP3, MPEG, SWF, FLV, DOC, DOCX, ODT, STW, PDF, TXT, CSV, RTF, PPSX, PPTX, PPT, PPS, ODP, STI, XLSX, XLS, ZIP, RAR.
* @param: $tipo_archivo
* @access: public
* @return: boolean
*/
function esArchivoValido($tipo_archivo){
if(($tipo_archivo==’image/pjpeg’)||//JPG
($tipo_archivo==’image/gif’)||//GIF
($tipo_archivo==’image/jpeg’)||//JPEG
($tipo_archivo==’image/png’)||//PNG
($tipo_archivo==’audio/mp3′)||//MP3
($tipo_archivo==’audio/mpeg’)||//MPEG
($tipo_archivo==’application/x-shockwave-flash’)||//.SWF archivo de flash
($tipo_archivo==’video/x-flv’)||//Video FLV
($tipo_archivo==’application/octet-stream’)||//.flv Videos en flash
($tipo_archivo==’application/msword’)||//DOC 2003
($tipo_archivo==’application/vnd.openxmlformats-officedocument.wordprocessingml.document’)||//DOCX 2007
($tipo_archivo==’application/vnd.oasis.opendocument.text’)||//ODT (PROCESADOR DE TEXTO, HOJA DE CALCULO)
($tipo_archivo==’application/vnd.sun.xml.writer.template’)||//STW (PROCESADOR DE TEXTO, HOJA DE CALCULO)
($tipo_archivo==’application/vnd.oasis.opendocument.spreadsheet’)||//ODT (PROCESADOR DE TEXTO, HOJA DE CALCULO)
($tipo_archivo==’application/vnd.sun.xml.writer.template’)||//STW (PROCESADOR DE TEXTO, HOJA DE CALCULO)
($tipo_archivo==’application/pdf’)||//PDF
($tipo_archivo==’text/plain’)||//TXT
($tipo_archivo==’text/csv’)||//CSV
($tipo_archivo==’application/rtf’)||//RTF
($tipo_archivo==’application/vnd.openxmlformats-officedocument.presentationml.slideshow’)||//PPSX 2007
($tipo_archivo==’application/vnd.openxmlformats-officedocument.presentationml.presentation’)||//PPTX 2007
($tipo_archivo==’application/vnd.ms-powerpoint’)||//PPT 2003 y PPS 2003
($tipo_archivo==’application/vnd.oasis.opendocument.presentation’)||//ODP
($tipo_archivo==’application/vnd.sun.xml.impress.template’)||//STI
($tipo_archivo==’application/vnd.openxmlformats-officedocument.spreadsheetml.sheet’)||//XLSX 2007
($tipo_archivo==’application/vnd.ms-excel’)||//XLS 2003
($tipo_archivo==’application/zip’)||//ZIP
($tipo_archivo==’application/octet-stream’)||//RAR
($tipo_archivo==’application/rar’)//RAR
){
return true;
}
else{
return false;
}
}
/**
* @function: esArchivoDocumentoTextoValido
* @author: Ricardo Rosero
* @description: Esta funcion retornara true si el tipo de un archivo de tipo de imagen valido
* @param: $tipo_archivo
* @access: public
* @return: boolean
*/
function esArchivoDocumentoTextoValido($tipo_archivo){
if($tipo_archivo==’application/pdf’)//PDF
{
return true;
}
else{
return false;
}
}
/**
* @function: esArchivoImagenValido
* @author: Ricardo Rosero
* @description: Esta funcion retornara true si el tipo de un archivo es una imagen es valida
* @param: $tipo_archivo
* @access: public
* @return: boolean
*/
function esArchivoImagenValido($tipo_archivo){
if(($tipo_archivo==’image/pjpeg’)||//JPG
($tipo_archivo==’image/jpeg’)//JPEG
){
return true;
}
else{
return false;
}
}
/**
* @function: esArchivoImagenValido
* @author: Ricardo Rosero
* @description: Esta funcion retornara true si el tipo de un archivo es una imagen es valida
* @param: $tipo_archivo
* @access: public
* @return: boolean
*/
function esTamanoArchivoValido($tamano_archivo){
$tamano_archivo=$tamano_archivo/1024;//convertimos a megabytes
if(($tamano_archivo>=1)&&($tamano_archivo<=1024)){ //Archivos con tamaño maximo 1.0 Mb
return true;
}
else{
return false;
}
return false;
}
/**
* @function: crearNombreArchivoUnico
* @author: Ricardo Rosero
* @description: Esta funcion recibe como paramatro el nombre de un archivo y retorna un nombre unico para el archivo dado, para que no haya problemas con archivos de nombres iguales.
* @param: $tipo_archivo
* @access: public
* @return: boolean
*/
function crearNombreArchivoUnico($nombre_archivo){
$nuevo_nombre.=uniqid(‘bc’).$this->obtenerExtensionArchivo($nombre_archivo);
return $nuevo_nombre;
}
/**
* @function: obtenerNombreUrlArchivo
* @author: Ricardo Rosero
* @description: Esta funcion recibe como parametro una direccion url en donde se encuentra un documento, y se retorna el nombre del docuemto, ejemplo:
* ../../operaciones/Imagenes/bc44441556cdcd2_Kiddy_Grade_1024x768.jpg
* bc44441556cdcd2_Kiddy_Grade_1024x768.jpg
* @param: $tipo_archivo
* @access: public
* @return: boolean
*/
function obtenerNombreUrlArchivo($url){
$cadena=strrev($url);
$trozo=explode(“/”,$cadena);
$nombre_archivo=strrev($trozo[0]);
return $nombre_archivo;
}
/**
* @function: obtenerExtensionArchivo
* @author: Ricardo Rosero
* @description: Esta funcion recibe como parametro una direccion url en donde se encuentra un documento, y se retorna la extension del docuemto, ejemplo:
* ../../operaciones/Imagenes/bc44441556cdcd2_Kiddy_Grade_1024x768.jpg
* .jpg
* @param: $tipo_archivo
* @access: public
* @return: boolean
*/
function obtenerExtensionArchivo($nombre_archivo){
$cadena=strrev($nombre_archivo);
$trozo=explode(“.”,$cadena);
$extension_archivo=”.”.strrev($trozo[0]);
return $extension_archivo;
}
}
?>

Napster2011