Monday, August 11, 2014

Ataques de negación de servicios, donde están sucediendo?

Como parte de mi investigación para mantenerme al tanto de lo nuevo en seguridad informática me topé con éste sitio:

http://map.ipviking.com/

Este sitio muestra en tiempo real los ataques de tipo DDOS detectados en el mundo y el país de origen-destino.

Mas allá de la parte informativa, abre los ojos la cantidad de ataques que empresas pequeñas sufren a manos de éstos mercenarios, recordemos en centroamérica los ataques a los sitios web de Migración en Honduras y al periódico Universidad en Costa Rica.

Los hackers no solo buscan objetivos grandes, a veces atacan empresas pequeñas para probar sus habilidades, y si no tiene un mecanismo de seguridad que le permita, en el peor de los casos, recuperar su información, está a merced de quien pueda entrar.

Una empresa responsable debe tener un oficial de seguridad informática debidamente informado que le permita defenderse y defender su negocio.

Un firewall inteligente puede filtrar los paquetes repetitivos de una misma dirección IP, por ejemplo el ASA de CISCO.

Mantener una adecuada política de respaldos puede evitarle desde dolores de cabeza hasta la quiebra de su negocio.

Los ataques de negación de servicios son más comunes de lo que cree, esperará hasta ser el próximo?

Saturday, August 9, 2014

Oracle 12c Está preparado para una sorpresa?

Oracle 12c es un cambio de paradigma y los DBA que no hayan investigado se van a sorprender de los cambios implicados.

Afrontémoslo, Oracle ha cambiado muy poco al través de los años y ésta versión realmente cambia todo el paradigma al que nos ha tenido acostumbrados.

Oracle 12c implementa una instancia en memoria, pero la divide en una partición "root" que controla varias bases de datos bajo el concepto de "pluggable databases", cada una de estas bases de datos son parcialmente independientes tanto en usuarios como en espacio en disco.

Esto hace totalmente necesario renovar las herramientas que utilicemos para manejar nuestro Oracle previamente a migrar a 12c.

Por ejemplo el PowerStudio XE5 de Embarcadero es compatible con 12c así que es un magnífico set de herramientas para empezar.

Tuesday, July 29, 2014

Desea una aplicación móvil? Hágala bien!

Su empresa es un proyecto que usted ha alimentado, por el que usted ha invertido horas de su vida y la de sus seres queridos, por ello está tan viva como lo está usted, su misión es ayudarla a evolucionar en éste nuevo ambiente.

Hoy tenemos a clientes para los cuales visitarlo es una inversión de tiempo y recursos que sólo harán si están convencidos de que sus productos llenan sus expectativas, incluso si pueden ni siquiera lo visitarán para comprarle.

La industria de comercio en línea ha revolucionado el mercado y su evolución a dispositivos móviles ha sido un siguiente paso lógico, ya no se le pide al usuario que se quede frente a su laptop todo el tiempo para poder ganar una subasta, ahora la sigue desde su celular.

Que puedo hacer para que mi empresa participe de ésta cultura?


El primer paso es el clásico de la administración de negocios, haga un estudio de Fortalezas, Oportunidades, Debilidades y Amenazas (FODA) de su empresa.

Con ese estudio, analice cuál es la entrada principal de dinero en su empresa, y enfoque su estrategia en fortalecerla y complementarla.

Su aplicación móvil debe seguir el esquema que usted descubra y proveerle al cliente de un valor agregado sobre su actividad, tal y como comprar desde su dispositivo, aprender sobre sus productos y obtener ideas y/o ayuda sobre como utilizarlos en su actividad.

No tema ser creativo!


Su aplicación puede ahorrarle mucho dinero siempre que pueda incorporarla correctamente a su ciclo de trabajo, recuerde que la tecnología no necesariamente reemplaza su estructura, sino que también puede complementarla.

Cree algo que le de vitalidad a su negocio, que le recuerde a sus clientes cuál fue su razón de ser desde el momento en que fundó su compañía, que lo motivó y cuál fue la razón de la aceptación que ahora goza.

No se quede atrás y participe de la revolución móvil

Monday, July 21, 2014

Programación para Móviles... Gratis!


Sea parte de la revolución en tecnología

Embarcadero Technologies ha creado un Framework llamado Appmethod que permite el desarrollo rápido de aplicaciones enfocado a tecnología multiplataforma y así crear apps de manera rápida, segura y nativa.

Appmethod permite trabajar en C++ o en Objective Pascal. Su código es compilable a IOS, Android, PC y Mac sin hacer ningún cambio.

Usted puede crear aplicaciones que utilicen las tecnologías Cloud, BaaS, Middleware Application Server o conectarse directamente a su Base de Datos Empresarial de manera directa y segura; ésta herramienta incluye los componentes de seguridad más utilizados en el mercado.


Appmethod le permite crear aplicaciones para Android GRATIS; utilizando un sistema de suscripción, adquiera lo que usted o su negocio demanden.

Los Retos actuales de la Seguridad Informática

Estamos en una época de cambio constante, lo cual no es secreto pero aún así existe resistencia, ahora no nos enfrentamos exclusivamente a ataques anárquicos sino a ataques con objetivos de ganancia monetaria y/o comercial.

Las empresas han aprovechado el concepto de seguridad globalmente, sus aplicaciones de negocio se enfocan al mantenimiento de los procesos y a la continuidad.
Asimismo los sistemas antipenetración han evolucionado para detectar paquetes de información salientes en lugar de buscar código malicioso.

Porque ya no es posible analizar el código malicioso de una aplicación?


Las personas que escriben troyanos (virus capaces de infiltrar la computadora) son personas muy inteligentes las cuales tienen entre su propósito no ser detectados así que efectúan una encripción de su código lo cual impide que la mayoría de los antivirus no puedan detectarlos.

Como se detecta un troyano?


Los troyanos se detectan inicialmente por su comportamiento, la mayoría de los troyanos buscará la manera de transmitir información desde la computadora infectada a través de puertos válidos.

Los analizadores modernos buscan patrones de conducta anómalos y los bloquean mientras el administrador de red analiza si es o no un comportamiento válido.

Cuál es la diferencia de un troyano, un malware o un adware?

Básicamente la única diferencia entre los 3 es su comportamiento:

Un troyano es un código que al ejecutarse buscará cumplir un objetivo de manera anónima, por lo general (aunque no en todos los casos), abrir un "backdoor" en la computadora o enviar un registro de teclas pulsadas.

Un Malware se diferencia del troyano en que es obvio, o sea el programa hará pública su presencia y cometerá acciones obvias en perjuicio de la computadora.

Un Adware es un código que presentará publicidad no solicitada  en cualquier momento.

Cómo elimino éstas amenazas?


Programas antivirus actualizados como el Kaspersky y el Avast eliminan muchos de los troyanos identificados.
Aún así es recomendable compensar con programas Antimalware como el Malware Bytes o el Spybot los cuales se enfocan en los programas maliciosos que normalmente evaden a los antivirus

Thursday, July 10, 2014

Cómo Formatear Campos de una Base de Datos?

Un desafío que enfrentan los programadores es el de formatear los campos de las bases de datos a la manera que deben verse.

Por ejemplo:

Es muy diferente el ver un precio así: 6820.50
a verlo así: $6,820.50

Una manera en que podemos verlo en Delphi es utilizando el evento AfterGetRecords e implementando el siguiente código:

TFloatField(NombredelDataSet.FieldByName('Campo')).DisplayFormat := '$ #,##0.00';

Esto formateará el campo de la manera deseada

Para más información por favor visite 
http://docwiki.embarcadero.com/Libraries/XE6/en/Data.DB.TNumericField.EditFormat

Thursday, June 26, 2014

Programando para Móbiles

¿Porqué compilar en lenguaje nativo es mejor?

El compilar en lenguaje nativo contrario al ejecutar tecnologías híbridas como el html5 tiene muchas ventajas para el desarrollador serio:

La aplicación es más rápida tanto de instalar como de ejecutar

Las aplicaciones nativas no traen tanto bagaje de gráficos extras ni máquinas virtuales que provocan grandes pausas de latencia en los teléfonos que no son aparatos diseñados para tener capacidad de procesamiento.

En un tiempo donde la transmisión de datos sigue siendo un recurso premium no podemos darnos el lujo de obligar a nuestros clientes a bajar una gran cantidad de datos simplemente por una mala planificación y/o mala decisión a la hora de elegir una herramienta para trabajar.

La aplicación es más segura

Una aplicación compilada en lenguaje nativo está encapsulada, así que sus datos están protegidos, no se puede decir lo mismo de html5 por lo cual sus aplicaciones son muy reducidas.

El uso de herramientas personales esta restringido
Un desarrollador de aplicaciones móviles es obligado a utilizar las herramientas que vienen con el framework, y rara vez éste les permite crear sus componentes propios.

El soporte a gráficos es limitado

Los frameworks para desarrollo no nativo tienen un soporte de gráficos muy limitado debido a las diferencias tan marcadas de manejo entre las diferentes plataformas, y no permiten un buen uso de 3d

In-eficiencia del código

Los framework de programación móvil orientadas a Web dependen de librerias de traducción de código que no son eficientes lo que dificulta la correcta ejecución del diseño original de la app.


Como solicitar permisos de uso de funciones en el teléfono desde mi aplicación Delphi

Un aspecto muy importante en el desarrollo de aplicaciones para teléfono que utilicen las capacidades de hacer llamadas, leer y enviar mensajes de texto o accesar bluetooth, es el de solicitar el permiso al dueño del teléfono para hacerlo.

En nuestras aplicaciones Delphi logramos ésto entrando en las opciones de nuestro proyecto


 Dentro de nuestro cuadro de opciones vamos a elegir la opción "Uses Permisions"("Utilizar Permisos") y dentro del cuadro que se muestra elegimos el perfil que deseemos. recordemos que nuestra aplicación Delphi es compilable en lenguaje nativo en Android y en IOS.


Una vez hecho ésto escojemos las opciones que necesitamos


Ahora cuando nuestra aplicación se instale en el teléfono, solicitará el permiso para utilizar los recursos que necesita.

ADVERTENCIA
Este proceso NO es opcional.
Los recursos del teléfono están protegidos por defecto y no permitirán que un programa sin permisos los utilice, Delphi agrega por defecto las solicitudes de sus unidades nativas pero cualquier programa que utilice API's debe revisar que todas las solicitudes de permisos estén agregadas

Thursday, June 12, 2014

¿Qué es un botnet?

Creo que a las personas que les interesa la seguridad de la información han escuchado los conceptos de:

Ataque de Negación de Servicio (DOS - Denial of Service)
Ataque distribuido de Negación de Servicio (DDOS - Distributed Denial of Service)
Ataque de pitufos (Smurf Attack)
Ataque de zombies (Zombie attack)

Estos tipos de ataque tienen rasgos muy interesantes en común, todos implican una o varias computadoras enviando suficientes solicitudes al sistema "víctima" (para llamarlo de algún modo), de manera que éste colapse y no pueda cumplir su función.

Una de las maneras más sencillas de desarrollar un ataque efectivo es el de tener un número de computadoras que podamos utilizar para el mismo y que no sean posibles de rastrear.

El término "botnet" aparece cuando ingenieros crean un código que permite que varias computadoras hagan una tarea en común aprovechando el poder de procesamiento de cada una como si fueran una sola y como toda buena idea, alguien encontró una manera de corromperla.

Existen varios virus que obtienen control de la computadora, crean puertos de comunicación adicionales y reciben órdenes de personas que no son los dueños legítimos, ésta computadora se ha convertido en un bot.

Uno de los virus más conocidos por su facilidad de uso y su infectabilidad es el ZEUS, incluso en el mercado negro se venden los servicios de botnets creadas con esfuerzo y paciencia para efectuar los ataques descritos.

F-Secure ha liberado una página web que le permite saber si está infectado por ZEUS:
http://campaigns.f-secure.com/en_global/zeus/ols/

Le recomiendo una visita ya que el servicio es gratuito

Conección a un Mainframe IBM usando SNA en Delphi

El mainframe IBM es una máquina utilizada en empresas que requieren un procesamiento rápido y poderoso, Instituciones financieras y de gobierno son algunos ejemplos.

Las nuevas tecnologías han dejado de lado la conexión directa a éstos gigantes de la industria en un mundo donde la multitud de tecnologías han buscado el cambio y la renovación antes que el soporte a tecnologías robustas que ahora son llamadas "legacy".

¿Cómo podemos utilizar un lenguaje moderno como delphi para conectarnos de manera segura a un mainframe que todavía utiliza SNA?


Delphi necesita una herramienta para conectarse ya que no posee una conexión directa, pero la diversidad de opciones que soporta le permite utilizar una de éstas opciones:

Un emulador de terminal como Rumba http://www.microfocus.com/products/terminal-emulator/index.aspx

Otra opción es utilizar el Microsoft Host Integration Server (HIS) para convertir la conexión SNA a un servicio Web consumible como SOAP

y exite la opción también de escribir sus propios componentes COM como los descritos para VB en éste documento de ibm
ftp://public.dhe.ibm.com/software/cics/ccl/cclhaq00.pdf

Tuesday, June 10, 2014

¿Como Optimizar SQL de manera visual?

Uno de los retos del día a día es optimizar los SQL que deben ejecutarse en nuestras bases de datos.

Muchos preguntarán el porqué de ésto, tomando en cuenta las capacidades procesales de las máquinas de hoy en día pero la respuesta es justamente que la capacidad de procesamiento es costosa, y debemos llegar a un punto de equilibrio muy por debajo del techo de la capacidad promedio de procesamiento si deseamos estar preparados para las "horas pico"

Los motores de bases de datos actuales nos permiten hacer búsquedas muy específicas y aunque nos parezcan ínfimas las velocidades de búsqueda, la cantidad de éstas es simplemente inmensa y una diferencia de 0.1 segundo entre una búsqueda y otra es una ventaja enorme.

Optimizar sentencias pequeñas no presenta problema, pero que tal una de ésta categoría?

SELECT C.Phone_Number, C.Honorific, C.First_Name, C.Last_Name,
C.Suffix, C.Address_ID, A.Address_ID, A.Street_Address_Line1,
A.Street_Address_Line2, A.City_Name, A.State_Abbreviation,
A.ZIP_Code, OD.Deferred_Shipment_Date, OD.Item_Count,
ODT.Text, OT.Text, P.Product_Description, S.Shipment_Date
FROM Orders O, Order_Details OD, Products P, Customers C, Shipments S,
Addresses A, Code_Translations ODT, Code_Translations OT
WHERE UPPER(C.Last_Name) LIKE :Last_Name||'%'
AND UPPER(C.First_Name) LIKE :First_Name||'%'
AND OD.Order_ID = O.Order_ID
AND O.Customer_ID = C.Customer_ID
AND OD.Product_ID = P.Product_ID(+)
AND OD.Shipment_ID = S.Shipment_ID(+)
AND S.Address_ID = A.Address_ID(+)
AND O.Status_Code = OT.Code
AND OT.Code_Type = 'ORDER_STATUS'
AND OD.Status_Code = ODT.Code
AND ODT.Code_Type = 'ORDER_DETAIL_STATUS'
AND O.Order_Date > :Now - 366
ORDER BY C.Customer_ID, O.Order_ID DESC, S.Shipment_ID, OD.Order_Detail_ID;

Por eso hoy voy a mostrar un método muy usado, VST

Para empezar vamos a clasificar las partes de la consulta de la siguiente manera, vamos a crear un diagrama de tipo autómata en la que:
Las tablas usadas en la consulta serán los nodos.
Los Joins serán las líneas de conexión entre los nodos
y los filtros nos guiarán con la ruta a seguir.

De ésta manera la consulta anterior se reclasificaría así:

Tablas
Orders O,
Order_Details OD,
Products P,
Customers C,
Shipments S,
Addresses A,
Code_Translations ODT,
Code_Translations OT


Joins
OD.Order_ID = O.Order_ID
O.Customer_ID = C.Customer_ID
OD.Product_ID = P.Product_ID(+)
OD.Shipment_ID = S.Shipment_ID(+)
S.Address_ID = A.Address_ID(+)
O.Status_Code = OT.Code
OD.Status_Code = ODT.Code

Filtros
WHERE UPPER(C.Last_Name) LIKE :Last_Name||'%'
AND UPPER(C.First_Name) LIKE :First_Name||'%'
AND OT.Code_Type = 'ORDER_STATUS'
AND O.Order_Date > :Now – 366
AND ODT.Code_Type = 'ORDER_DETAIL_STATUS'

y armamos el diagrama de la siguiente manera

Para que quede un diagrama como éste

El siguiente paso es ordenarlo para que nos permita determinar la ruta más discriminatoria y por lo tanto la que va a acelerar nuestra consulta:


Aquí podemos definir que la ruta mas restrictiva es ésta:


Por lo tanto nuestra consulta debe empezar por efectuar los joins a las tablas OD, O y C antes de continuar con las demás para considerarla optimizada.

 

Monday, June 9, 2014

Problemas conectando su aplicación a Oracle? tal vez no sea su culpa

Hoy en día existen muchas empresas que mantienen licencias de bases de datos por más tiempo del recomendado, es una práctica común ya que si la base de datos cumple con su función no es necesaria su actualización.

Oracle tiene sus pequeños detalles y fui recordado de uno de ellos hace poco.

Oracle no acepta conexiones de programas que tengan los siguientes caracteres en el nombre del programa o en el nombre de los folders que lo contienen: <:/\|?*()%&'$@^~#">



Eso basado en los siguientes drivers de conexión:

Oracle Net Services - Version: 8.1.7.0 to 10.2.0.1

Oracle Data Provider for .NET - Version: 8.1.7.0 to 10.2.0.1

Oracle Objects for OLE - Version: 8.1.7.0 to 10.2.0.1

Oracle Provider for OLE DB - Version: 8.1.7.0 to 10.2.0.1

Oracle ODBC Driver - Version: 8.1.7.0 to 10.2.0.1



Así que si tratan a conectarse a Oracle y sus drivers de conexión están entre las versiones mencionadas y su programa está en un subdirectorio tal como "c:\program files (x86)", no van a poder conectarse, les dará un error como éste : ORA-12154: TNS:could not resolve the connect identifier specified o éste ORA-6413: Connection not open.


De modo que lo único que pueden hacer es reinstalar el programa que necesitan conectar a la base de datos en un subdirectorio sin ésos caracteres.


en WindowsX aún así dependiendo del tipo de programa instalará lo que pueda dentro de "c:\program files (x86)", pero si todas las referencias apuntan al otro directorio deberían poder mover lo que tengan en Program Files (x86) al directorio que crearon.

Monday, May 26, 2014

¿Qué es un modelo de datos?

Un modelo de datos es un mapa, así de simple, un mapa que describe el camino que sigue la información de un punto a otro de un proceso.

En un proceso de negocio se documentan los movimientos de información, servicios, productos y/o dinero, de la correcta ejecución del proceso depende que el negocio opere de manera exitosa, y la mejor manera de controlar esa ejecución es documentar el proceso.
El primer paso de la creación de un proceso es definir cuál es la meta del proceso, ésta definición nos permitirá definir qué información requerimos para cumplirla.
Por ejemplo:
Tenemos una tienda que vende batidos de sabores así que ofrecemos varios sabores y opciones de batidos:
Base:
Agua      $5
Leche    $8
Yogurt   $8

Sabores:
Banana
Melón
Chocolate
Sandía
Limón
Naranja
Dos Sabores       +$2
Tres Sabores      +$3

Ejercicios
¿Cuál sería la meta de un modelo de datos basado en ésta información?

¿Qué información necesitamos para definir el proceso de negocio asociado?

Wednesday, May 21, 2014

Como ver el valor de una variable en una sentencia SQL ejecutándose en Oracle

Uno de los problemas generalizados en Oracle es el poder ver el valor de una variable incluida en una sentencia ejecutada.

¿a que me refiero con ésto?

En Oracle podemos usar una sentencia de éste tipo:

INSERT INTO emp VALUES
    (:empno, :ename, :job, :sal, :deptno)

donde los valores son incluidos por parámetro en variables, 
en éste caso es fácil de saber cuál valor es cuál cierto?

¿Que tal cuando las variables son incluidas ... así? 


INSERT INTO emp VALUES
    (:E1, :E2, :E3, :E4, :E5)


aunque no lo crea es un formato muy utilizado, 
¿cómo sabría usted cuál variable es cuál?

La manera difícil es generar un sql parecido a éste, por cada variable:


select sesion.sid,
       sesion.serial#,
       sesion.username,
       sesion.sql_id,
       sesion.sql_child_number,
       optimizer_mode,
       hash_value,
       address,
       sql_text
  from v$sqlarea sqlarea, v$session sesion
 where sesion.sql_hash_value = sqlarea.hash_value
   and sesion.sql_address    = sqlare

La manera fácil es con una herramienta de optimización como 
el DBOptimizer de Embarcadero:

Como ven aquí nos muestra todas las variables relacionadas al SQL 
con sólo un click


Tuesday, May 20, 2014

Mapas de Calor en Delphi

Un mapa de calor o "Heatmap" es un mapa que cambia de color por zonas dependiendo de un dato, es muy usado para estadísticas de producción en regiones geográficas.

Por ejemplo si queremos un mapa que nos mida las ventas por país como éste:

o como éste


Tenemos algunas maneras interesantes de hacerlas:

Lo primero es dibujar o importar el mapa, el mapa por lo general está definido en formato svg el cual es un formato de coordenadas, que se ve como ésto:

<svg height="210" width="500">
  <polygon points="200,10 250,190 160,210" style="fill:lime;stroke:purple;stroke-width:1" />
  Sorry, your browser does not support inline SVG.
</svg> 

pero claro ése es un triángulo, su mapa se verá como ésto:


perdonen, éste es solo un segmento del mapa, pero se debe incluir en nuestro programa cada segmento a estudiar y formar el mapa con la unión de todos ellos.



En nuestro programa creamos un objeto TPATH y en TPath.data insertamos los puntos vistos que forman nuestra región, crearemos un objeto para cada región que forma nuestro mapa.




Una vez completada la inserción de todas las regiones ( y debidamente identificadas ) podemos manipular su color con un simple case.




begin

FireDAC.Connected := True;
try
FDQuerySelect.Open;
FDQuerySelect.First;
while(not FDQuerySelect.EOF)do 
begin
Case (FDQuerySelect.FieldByName(‘MType’).AsInteger) of
1 : Pathlist[FDQuerySelect.index].fill.color := Green;
0 : Pathlist[FDQuerySelect.index].fill.color := Red;
else 
Pathlist[FDQuerySelect.index].fill.color := Blue; 

end;
FDQuerySelect.Next;

end;

Form.Redraw;

end;

Éste es tan sólo un ejemplo de lo que podemos hacer con Delphi, los reto a hacer lo mismo con Live Bindings



Monday, May 19, 2014

El Mercadeo en la programación moderna


En el mundo de hoy como ingenieros nos enfrentamos a una competencia globalizada, ya no existe la ventaja de ser locales en este campo de batalla mundial, el avance de las telecomunicaciones e internet han contribuido a que nuestra competencia pueda proveer sus servicios a mejor precio y con mejor infraestructura que nosotros como si estuviera aqui!

Se necesita mantener una visión de mercadeo de nuestras habilidades para descubrir la manera de llegar al usuario global, poder hacer aplicaciones para mejorar la vida de las personas sin importar donde estén y de ésta manera vender nuestro trabajo.

Debemos abrir nuestras mentes no solo al hacer por hacer, sino obtener una visión de negocio, nos gusta pensar en nosotros mismos como artistas, pero estamos en un mundo donde nuestras herramientas no pueden ser perfectas para todos.

La creación de herramientas computacionales que se ajustan a la manera de trabajar de todas las empresas es un sueño, hay tantas maneras de trabajar como empresas y un sistema que se ajuste a todas es una locura.

La era del software a la medida llegó a su fin hace mas de 15 años atrás, estamos en una era donde se utilizan herramientas que se complementan entre ellas para llegar a soluciones económicamente rentables.

Hay que volver a la raíz de la ingeniería y disolver los grandes problemas en problemas pequeños.

Debemos mercadear soluciones a un problema simple, que se puedan combinar para solucionar problemas complejos.


Raúl Morales Víquez raul.morales.víquez@hotmail.com / http://informatica-raulmorales.blogspot.com
Consultor en informática e Instructor, certificado en Seguridad Informática, Graduado en la Universidad Latina de Costa Rica con más de 10 años de experiencia en diversas áreas de cultura organizacional en empresas multinacionales.

Cuáles son sus temas favoritos?

Cuáles son sus problemas en el día a día?
Han tenido alguna situación que se arregló de una manera que no los dejó satisfechos?

Por favor hagan sus preguntas a raul.morales.viquez@hotmail.com


Tuesday, May 6, 2014

Cómo hacer una aplicación multilenguaje en Delphi

Lo primero que necesitamos para éste ejercicio es un objeto Tlang el cual incluiremos en la aplicación que deseemos tenga posibilidad multilenguaje.

Una vez finalizado y funcionando el programa, vamos a agregar un control que nos permita elegir el lenguaje que deseemos, puede ser parecido a éste:

TLang1.jpg

Una vez hecho ésto le damos doble click al componente TLang y él traerá a enfoque la siguiente ventana:

TLang2.jpg

La ventana solicita el código del lenguaje en la parte superior y a continuación lista todas las etiquetas del programa que hicimos, a la derecha de cada una podemos colocar nuestra traducción de cada una.

ADVERTENCIA
Sólo las etiquetas que traduzcamos manualmente y que tengan la propiedad "AutoTranslate" activada se traducirán cuando se cambie el idioma.

El lenguaje cambia cuando se actualiza la propiedad "lang" del control TLang como en éste ejemplo:
Lang1.Lang := ListBox1.Selected.Text;


Friday, May 2, 2014

Como trabajo con JSON en Delphi?

Para trabajar en JSON se utiliza el objeto TJSONObject, de la siguiente manera:

Si uno está generando la información a enviar puede usar el siguiente método:

var
  LJSONObject: TJSONObject;
 
begin
  LJSONObject:= TJSONObject.Create;
  LJSONObject.AddPair(TJSONPair.Create(TJSONString.Create('Hola'),
                                       TJSONString.Create('Mundo')));

Rápido y sencillo verdad?
Pero digamos que tenemos que utilizar un header predefinido como éste:

const
  GJSONString =
'{'+
    '"glossary": {'+
        '"title": "example glossary",'+
  '"GlossDiv": {'+
            '"title": "S",'+
   '"GlossList": {'+
                '"GlossEntry": {'+
                   ' "ID": "SGML",'+
     '"SortAs": "SGML",'+
     '"GlossTerm": "Standard Generalized Markup Language",'+
     '"Acronym": "SGML",'+
     '"Abbrev": "ISO 8879:1986",'+
     '"GlossDef": {'+
                        '"para": "A meta-markup language, used to create markup languages such as DocBook.",'+
      '"GlossSeeAlso": ["GML", "XML"]'+
                    '},'+
     '"GlossSee": "markup"'+
                '}'+
            '}'+
        '}'+
    '}'+
'}';

Entonces se utiliza la funcion parser del objeto TJSONObject de ésta manera:

procedure ConsumeJsonBytes;
var
  LJSONObject: TJSONObject;
 
begin
  LJSONObject := nil;
  try
    LJSONObject := TJsonObject.Create;
    { convert String to JSON }
    LJSONObject.Parse(BytesOf(GJSONString), 0);
 
    { output the JSON to console as String }
    Writeln(LJSONObject.ToString);
  finally
    LJSONObject.Free;
  end;
end;

Produciendo el objeto deseado.


Tuesday, April 22, 2014

Solución de Modelado de Datos

Cuánto tiempo de verdad le dedicamos al modelado de nuestro software?

Recuerdo mis clases de "Estructura de Datos" y de UML, en ése tiempo trabajaba como programador y mi jefe me decía que no había tiempo para hacer ésa documentación (utilizaba la metodología de prototipos).

La realidad de ése tiempo es que si querías hacer un proyecto "barato" tenías que tener un producto listo ¡ya!...

¿Qué ha cambiado?

Las empresas que invierten en productos baratos quedan casadas con el programador al igual que uno queda casado con un mecánico barato... " Yo ya le había visto eso de los frenos pero sólo le arreglé la llanta".
La realidad es que la búsqueda de la calidad no es un lujo, es una necesidad, las empresas que creen poder perder clientes, los pierden!, recuperar clientes no es un asunto sencillo y poder crear resultados es un proceso.

¿Qué debemos utilizar para modelar nuestros diagramas?

El modelado del software es un asunto delicado, es un mapa que seguirán nuestros colegas y que de estar incorrecto influirá en la calidad del software y el costo del proyecto.

Se debe escoger una herramienta que permita el crear los diagramas y de ser posible el hacer ingeniería inversa sobre lo que ya tenemos.

Por eso me gusta usar el E/R studio de embarcadero, tiene la facilidad del Erwin con una robustez que no he visto en otros sistemas.

La posibilidad de manejar grupos grandes de diseñadores gracias al CONNECT, de una manera fácil y hasta cierto punto entretenida (se parece un poco a una red social), facilita la comunicación y la creatividad.

Asimismo permite importar modelos hechos en otras herramientas como Erwin y Powerdesigner.

Por favor no duden en enviar sus preguntas a raul.morales.viquez@hotmail.com
o comentar aqui.

Wednesday, April 9, 2014

Metadatos o ¿Como sé que estoy guardando?

Nuestra era es llamada "La era de la información" y con mucha razón, ahora se guarda una cantidad enorme de información sobre empresas y personas en intentos elaborados de predecir que pasará en nuestro entorno y aprovechar esas situaciones a nuestro favor.

Pero ¿como sabemos que guardamos?, ¿Que sistemas lo utilizan?, ¿Para qué utilizamos esa información?

Hay miles de empresas que sufren problemas de espacio para bases de datos y estudios en como normalizar las bases de datos para reducir la redundancia en las tablas, pero la verdad es que sin un diseño unificado de la base de datos a nivel de empresa la realidad es que las bases de datos y sus contenidos son repetidos una y otra vez.
Al no saber que tenemos en éste momento o para que lo utilizamos, muchas veces  los administradores eliminan datos útiles simplemente porque no saben si son usados o si van a ser accesados en el futuro.

Para evitar éstas situaciones se ha implementado a nivel mundial un sistema de documentación integral, se llama "metadatos".

Los metadatos describen otros datos, identificando los aspectos importantes que la empresa o persona desee, utilizando valores como "tema", "responsable", "sistema", etc.

Existen varios tipos de metadatos:

  • Catalogación: porque pueden describir contenidos a nivel individual (como una página web) como en colecciones.
  • Estandarización: pueden describir el estándar utilizado para tipos de datos, modelos, columnas, reportes, etc.
  • Búsqueda de recursos: su aplicación facilita el trabajo de los motores de búsqueda.
  • Firmas digitales: formatos como RDF permiten codificar las firmas digitales, requisito fundamental a la hora de crear una web de confianza. 
  • Clasificación de contenidos: permiten establecer los contenidos que los usuarios desean ver.
  • Otras aplicaciones: marcados de políticas y preferencias de privacidad y los derechos relativos a la propiedad intelectual. 
Las librerías de metadatos le permiten a la empresa tener una catalogación de temas y directrices de importancia para la consulta de sus empleados que evitan doble trabajo y errores en procesos clave desde un simple reporte a una migración de bases de datos.

Ningún software de arquitectura de datos viene sin la opción de creación e inserción de metadatos, ¿lo está utilizando usted hoy en día?

Fuentes:
http://en.wikipedia.org/wiki/Metadata
http://www.bn.gov.ar/descargas/catalogadores/ponencias/251109_10a.pdf

Monday, March 31, 2014

¿Como empiezo a programar en Delphi?

Esta pregunta es mas común de lo que se cree y se debe al modo en que se está enseñando a programar en éste momento.

En Java, Python y la mayoría de los lenguajes la manera de programar comienza desde la declaración de clases, debes declarar en código una clase main que es la que va a llamar a los diferentes procedimientos.

En Delphi se comienza por una ventana main la cual vamos a ir llenando con los componentes respectivos, es una manera gráfica de pensar contrario a la manera de código, cada vez que se piensa en una funcionalidad estamos pensando en un componente o en una serie de comportamientos.

Delphi se presta de excelente manera a lo que es UML por que le enseña a uno a programar por comportamientos y seguir las líneas de ejecución basadas en el diseño hecho en el diagrama de secuencia.

¿Cuales son las ventajas de programar en Delphi?

Delphi utiliza una serie de componentes preprogramados que permiten desde hacer cosas sencillas como obtener un dato en texto hasta controlar la capacidad GPS del teléfono.

Existen miles de ejemplos de algoritmos que se pueden hacer en delphi, por favor pregunten por lo que necesiten hacer y con gusto publicaré lo que requieran

Friday, March 28, 2014

5 errores básicos de tratar de migrar a estructura móvil

Los países desarrollados están adoptando la tecnología móvil a su infraestructura, interesante ¿verdad?.

En Latinoamérica no se ha dado ese paso por miedo al cambio, lo cual es una lástima, pero podemos aprovechar éste rezago al analizar los problemas y las propuestas que han surgido de ésta migración.


  1. No es necesario migrar TODO a móvil
    Los dispositivos móviles nos dan una plétora de opciones y de datos implícitos sin que el usuario necesite llenarlos, nos permiten comunicación en tiempo real en donde esté el dispositivo (siempre y cuando la red lo permita), pero eso no significa que sistemas completos deban ser migrados cuando no es necesario mas que añadir algunos módulos.
  2. Es importante mantener metadatos de la compañía
    Es tristemente impresionante la cantidad de empresas que no mantienen una base de metadatos, ésta base es una serie de convenciones que garantizan la compatibilidad de información de las bases de datos de la compañía entre módulos diferentes, por ejemplo: todos los campos "nombre" son varchar de 25 dígitos, hay que aprender a uniformar los sistemas para evitar los múltiples problemas que enfrentan las empresas.
  3. Aprovechen el espacio local!
    Parte de las ventajas del desarrollo móvil es la de mantener un centro de información, pero recordemos las fallas de sistemas y las zonas de conexión muerta, es muy buena idea mantener un cache de información local en el dispositivo para acelerar el rendimiento y permitir el trabajo offline.
  4. Debe elegirse una base de datos acorde a lo que queremos hacer
    Una base de datos gratuita sin encripción  es totalmente aceptable para una aplicación gratuita y sin importancia, pero una aplicación para una empresa importante con datos de los clientes y de sus productos merece una base de datos con rendimiento y seguridad, no hay que ahorrar en lo importante.
  5. La seguridad es lo primero!
    "Toda empresa debe maximizar los ingresos y minimizar los gastos", es la máxima de toda empresa, pero existen dos reglas que parecen olvidar los gerentes de hoy en día, "obtienes el valor de lo que pagas" y  "Para ganar dinero debes invertir dinero", debemos recordar que la seguridad de nuestra información  es lo primero, cada vez más países reglamentan y castigan la pobre seguridad de la información y la seguridad es de las pocas cosas en las que NO se debe ahorrar, cada día aparecen más y más agujeros públicos en las plataformas conocidas, es cierto se puede tener mucha seguridad en un ambiente de código abierto si y solo si invertimos en un genio de código abierto comprobado, debemos aprender todos los días e invertir en tecnologías seguras.
Raúl Morales Víquez
Consultor en informática e Instructor, certificado en Seguridad Informática, Graduado en la Universidad Latina de Costa Rica con más de 10 años de experiencia en diversas áreas de cultura organizacional en empresas multinacionales.


Fuentes






¿Que es la ciberguerra?

Hoy en día estamos en una guerra, una guerra a través de Internet, ¿que significa ésto?.

Todos estamos conscientes de lo difícil que está la vida en ésta época, cómo el dinero es cada vez más difícil de obtener y cómo cada vez más personas buscan maneras "fáciles" de obtener el dinero de los demás.

Hay miles de personas literalmente buscando información rentable o "paydata" para venderla, hoy en día es común la compra y venta de información privilegiada para usos semipúblicos, por ejemplo empresas de investigación de crédito cuyas actividades no son legales en todos los países en los que operan.

Existen personas que utilizan virus tipo troyanos para tomar control remoto de partes de la computadora y vender sus servicios en ataques en contra de sitios e incluso utilizan virus de tipo gusano para robar información de teléfonos y computadoras sobre cuentas bancarias.

Esto es la ciberguerra, la lucha entre protectores de la información en contra de ladrones de información, es la guerra en la que están involucrados todos aquellos que deciden entrar en la Internet, en la que si no tomas consciencia te conviertes en víctima, consulte a un profesional en seguridad si no está seguro de que tan segura está su información.

Wednesday, March 26, 2014

La Derrota ¿Cómo superarla?

Uno de los sentimientos más destructores es la derrota, en éste momento de la historia tan convulso no tenemos defensa contra la derrota, nos enseñan que los derrotados son los perdedores que están condenados y olvidados por los demás.

Mis padres fueron adoctrinados a que al ir a una universidad, el trabajo estaba asegurado, hoy eso es una vil mentira, un título universitario no es una garantía de trabajo, a veces es incluso un obstáculo para personas que estén buscando un empleo.
El título universitario es una ventaja cuando se utilizan esos conocimientos en crear nuevas maneras de mejorar la calidad de vida de nuestros colegas,

Nuestro ambiente está diseñado para que la derrota sea algo cotidiano, y estamos adoctrinados a aceptarla y trabajar con la cabeza agachada.

Debemos encontrar la fuerza dentro de nosotros, debemos tener la fuerza para hacer, lo que sea pero hacer algo, debemos avanzar aunque sea un poco cada día y superarnos.

La necesidad de ser mejor hoy de lo que fui ayer debe ser la tónica de nuestras vidas y aceptar la derrota no como algo que se espera, sino como una corrección del rumbo, ver las cosas como son y así como no debemos dejar que nuestras ilusiones nos gobiernen sin metas no permitir que nuestras pesadillas nos gobiernen sin obstáculos reales.

Pues no son obstáculos reales el "no puedo" sin un "voy a intentarlo", no es un obstáculo el "no sé" sin un "voy a investigar".

Sé que es duro, estamos en un ambiente donde nos educaron a ser "ganadores", pero la debacle está en que no podemos serlo a pesar de nosotros mismos, debemos ser ganadores reales aprendiendo a ser positivos y a adaptarnos al ambiente, y no pretendiendo adaptar el ambiente a nosotros

Tuesday, March 25, 2014

¿En que puesto estamos en la ciberguerra?

Kaspersky tiene un mapa en tiempo real que utiliza los reportes que obtienen de virus, vulnerabilidades y ataques desde la nube que puede verse en éste enlace

http://cyberwar.kaspersky.com/

Friday, March 21, 2014

Capacitación para desarrollar Apps Android e iOS

MÓDULO I : DELPHI XE5 BASE
del Lunes 21 al Jueves 24 de Abril de 2014 - de 2 a 7pm
________________________________________


Configuring the Project.
Object Oriented Programming.
The Singleton Design Pattern.
Basic Interface Elements.
Visual Form Designer and Code Editor.
LiveBinding Designer.
Exception Handling.
Delphi´s Debugger.
Advanced Database Development.
Using DBExpress to Access Database.
Using FireDAC to Access Database.
TClientDataSet.
Introduction to XML.
Introduction to JSON.

MÓDULO II : DELPHI XE5 - DATASNAP      
del Viernes 25 al Miércoles 30 de Abril de 2014 - de 2 a 7pm
________________________________________
Introducción y Arquitectura.
Servidores DataSnap
- Ayudantes.
- DataSnap Server REST.
- DataSnap WebBroker.
- Métodos del Servidor. Proxies.
- Usando CallBacks.
- Ciclo de Vida de la Clase del Servidor.
- Monitoreando y Controlando TCP/IP Conexión.
Clientes DataSnap
- Conectando los clientes con un Servidor DataSnap.
- Filtros.
- Validación de Certificados HTTPS.
Serialización de Objetos usando JSON.
Autenticación y Autorización.
Manejo de Sesiones.
Deployment.
Conectores DataSnap para Dispositivos Móviles.

MÓDULO III : DELPHI XE5  APLICACIONES MÓVILES  
del Lunes 5 al Jueves 8 de Mayo de 2014 - de 2 a 7pm  
________________________________________
Configuración del Ambiente
- iOS.
- Android.
Creación de Interfaz de Usuario.
- LiveBinding Design.
Usando la funcionalidad del Dispositivo.
- Tomar y Compartir Fotos.
- Usando el Sensor de Localización.
- Usando el “Notification Center”.
- Haciendo Llamadas con el Celular.
- Entre otros sensores.
Uso de Base de Datos.
- DBExpress.
- FireDAC.
Conectándose a Base de Datos Empresariales.
- DataSnap Client.
Avanzado.
- Usando Componentes Nativos iOS y Android.
Ejemplo Práctico Completo.
- Servidor DataSnap.
- Client Mobile
Persistencia Local

________________________________________
Instructor
Luis Felipe González - Venezuela – MVP
Profesor, Instructor y destacado Consultor en Programación Avanzada y desarrollo de Aplicaciones Distribuidas, con más de veinte años de experiencia. He entrenado profesionales en Starteam, VisiBroker (Jave y C++), JBuilder, C++Builder y Delphi, en diferentes países de Latinoamérica. Director Ejecutivo de VisiNet Soluciones, empresa de consultoría de software y desarrollo de proyectos a la medida y llave en mano, en Caracas, Venezuela. Como entusiasta desarrollador sigue experimentando con las tendencias tecnológicas actuales en el mundo de la computación avanzada. www.lfgonzalez.visiblogs.com

________________________________________

Lugar:                                          New Horizonts Costa Rica – 200 metros
                                                     sur de la Librería Universal de la Sabana –
Monto de Inversión:                  $795,00 por persona, por módulo
Incluye:                                       Refrigerios y certificados

Thursday, March 13, 2014

¿Que es AppMethod?

Appmethod es una versión de C++ Builder y Delphi enfocada al desarrollo multiplataformas que no es compatible con las versiones de delphi anteriores a XE2 ya que todas las aplicaciones programables utilizan el framework "FireMonkey".

¿Que es Firemonkey?
Firemonkey es un Framework especializado para multiplataformas que utiliza librerías que le permiten al código escrito y diseñado en él, ser compilado para diversas plataformas (Windows, MacOS, Android y IOS) en código nativo sin utilizar máquinas virtuales.

¿Cúal es la diferencia entre AppMethod y RAD Studio?
Rad Studio incluye muchas mas opciones para el desarrollador que AppMethod, AppMethod es recomendado para el programador cuyo objetivo sea las aplicaciones pequeñas

Wednesday, March 12, 2014

Como hacer update de una aplicación en windows en general

Una opción al problema de actualizar el programa que desarrollamos es utilizar una plataforma de creación de instalador llamada Innosetup http://www.jrsoftware.org/isinfo.php


Innosetup es gratuita, soporta todas las versiones de windows y aún mejor su código fuente esta disponible en Delphi.

Esta solución es válida para todos aquellos que no deseen programar la suya propia o deseen algo completo en poco tiempo.

Tuesday, March 11, 2014

Delphi y Bluetooth

Un muy buen ejemplo de una aplicación Bluetooth con Delphi es ésta aplicación creada por
Björn Hansen
https://www.youtube.com/watch?v=vesPd5WvykA

Utiliza Bluetooth para conectarse a un sistema de iluminación e ilustra las facilidades de Delphi para conectarse a dispositivos Bluetooth

Como definir código para diferentes plataformas

Otra pregunta muy popular ha sido el ¿como utilizo una parte de código solamente para
un plataforma en Delphi?

Muy sencillo:

utilizando el condicional $ifdef como este ejemplo:
  {$DEFINE DEBUG}
  {$IFDEF Android}
         Writeln('Código para android.'); 
         // Este código se ejecuta si la plataforma es android.
  {$ELSE}
         Writeln('Codigo para cualquier otra plataforma.');   
         // Este código se ejecuta si la plataforma no es android.
  {$ENDIF} 
 
De ésta manera tenemos código opcional para las diferentes opciones 
de plataformas que tengamos y más puesto que podemos discriminar entre 
diferentes procesadores para código optimizado
 
Pueden encontrar el cuadro completo de opciones aca:
http://docwiki.embarcadero.com/RADStudio/XE5/en/Conditional_compilation_%28Delphi%29
 

Friday, March 7, 2014

Como actualizar nuestro programa en Delphi automáticamente

Ayer me llegó ésta pregunta y en el momento me pregunté si Embarcadero tenía un componente para hacerlo automágicamente, la respuesta es:   nosotros tenemos que programarla.

Pero lo bueno es que hay varias técnicas para hacerlo y existe una lógica para que deba ser programado por nosotros los desarrolladores, cuando el mismo código fuente funciona para plataformas autoactualizables como las móviles, hacer un componente de éste tipo es redundante.

Las técnicas dependen del estilo de programación que utilicemos, por ejemplo si tenemos un solo programa ejecutable ejemplo: un sólo archivo ".exe" debemos pensar en crear un pequeño programa de tipo "loader" que sea el que se ejecute previamente, revise la versión en nuestro sitio y sobrescriba el archivo principal.

Si utilizamos archivos .dll y nuestro programa está bien diseñado como para que las actualizaciones solo necesiten reescribir el dll, sólo necesitaríamos escribir la rutina en nuestra aplicación principal.

Aqui adjunto algunos ejemplos de rutinas que pueden ser utilizadas:

Este algoritmo reescribe nuestro programa a un .bak para poder descargar una nueva versión

EXE:=ParamStr(0);
BAK:=ChangeFileExt(EXE,'.BAK');
IF FileExists(BAK) THEN DeleteFile(BAK);
<If Update Available and ready for download>
  RenameFile(EXE,BAK);
  <Save downloaded file as EXE>
  <Execute EXE>
  ExitProcess(0) 
<End>

Aqui una muestra de código para ejecutar ésta idea

If strtoint(versionweb) > strtoint(versionlocal) Then
  begin
  Showmessage('Existe una nueva actualizacion
disponible...');
  Data := TMemoryStream.Create;
  IdHTTP2.Get('http://servidor.com/prog.exe',Data);
  Data.SaveToFile('prog.e_e');
  data.Free;

  content :=  'DIM WshShell, resultado'#10#13'Set
WshShell = WScript.CreateObject ("WScript.Shell")'#10#13+
              'resultado = Msgbox("Se va a realizar
una actualizacion al
tarificador...",64,"AutoUpdater")'#10#13+
              'WshShell.Run "%windir%\System32\cmd.exe
/C del /Q prog.exe ",0,true'#10#13+
              'WshShell.Run "%windir%\System32\cmd.exe
/C move prog.e_e prog.exe",0,true'#10#13+
              'resultado = Msgbox("Se realizo proceso
de actualizacion.",64,"AutoUpdater")'#10#13+
              'WshShell.Run "prog.exe"'#10#13+
              'WshShell.Run "%windir%\System32\cmd.exe
/C del /Q update.vbs",0,true'#10#13+
              'WScript.Quit()';

  Stream := TFileStream.Create('update.vbs', fmCreate);
  Stream.WriteBuffer(Pointer(content)^, Length(content));
  Stream.Free;

 
ShellExecute(Form1.Handle,nil,PChar('update.vbs'),'','',SW_SHOWNORMAL);
//  WinExec ('', 0);
  Application.ShowMainForm := False;
  Application.Terminate;
  end;

Raúl Morales Víquez raul.morales.víquez@hotmail.com / http://informatica-raulmorales.blogspot.com
Consultor en informática e Instructor, certificado en Seguridad Informática, Graduado en la Universidad Latina de Costa Rica con más de 10 años de experiencia en diversas áreas de cultura organizacional en empresas multinacionales.

Wednesday, March 5, 2014

Criptomonedas, Moneda del Futuro?

¿Que es una criptomoneda?


Mucho se ha hablado de las criptomonedas, cosas buenas y malas, pero lo cierto es que llenan una necesidad de la sociedad moderna.

Existen muchas criptomonedas, aunque la más famosa y valiosa es sin lugar a dudas el bitcoin, existen criptomonedas privadas ligadas a empresas de transferencia de dinero y existen criptomonedas públicas, se puede ver una lista completa en http://www.coinwarz.com/cryptocurrency, las cuales son utilizadas en diversos sitios como opciones al bitcoin.

¿Cómo se determina el valor de una criptomoneda?

La criptomoneda es un certificado de seguridad con un número de "dueño" que por acuerdo general tiene un valor flotante, su comportamiento es muy parecido a un título negociable o las acciones de una compañía, su valor crece o decrece de acuerdo a varios factores como:
  • demanda: como todo bien de mercado entre más personas la compren mayor será su valor
  • confianza: como cualquier título valor, cuando alguna empresa que se dedica a la comercialización de criptomonedas sufre un robo o pérdidas, la criptomoneda pierde valor ante el público.
  • aceptación: toda moneda es tan valiosa como su capacidad de ser convertida es productos, servicios o en otro tipo de moneda.
¿Qué necesito para tener una billetera de criptomonedas?

La evolución a criptomoneda exige de las personas una nueva forma de actuar con respecto a la seguridad de su dinero, necesitan informarse sobre las llaves públicas y privadas que rigen la seguridad de sus cuentas, por ejemplo, muchas personas utilizan la billetera de criptomoneda en el celular, pero si guardan las llaves privadas en el mismo teléfono existen maneras de copiarlas y obtener acceso a su billetera.

Para explicarme mejor, la billetera de criptomoneda es una larga línea de caracteres que lo identifica a usted, y es generada y registrada por el programa con el que decida guardar sus criptomonedas, el acceso a su billetera se da en dos partes, para depositar y saber que existe, se envía lo que se llama una llave pública que identifica su cuenta, y para hacer cambios y accesar los fondos se necesita un acceso privilegiado que se escribe en un archivo llamado llave privadael que tenga una copia de su llave privada tiene acceso a su billetera.

¿Quién controla los movimientos de dinero?

La respuesta a ésta pregunta es interesante, todos los movimientos de dinero son públicos, existe un archivo que crece y es mantenido por las computadoras que específicamente se dedican a validar éstos movimientos.
Existe un proceso que es vital para las criptomonedas, el "mineo" o "mining", éste proceso significa utilizar los recursos de procesamiento de la computadora para validar una cadena de transacciones, el premio por utilizar la computadora para éste proceso es un paquete de criptomonedas nuevas en nuestra cuenta.
En pocas palabras todas las computadoras dedicadas al "mining" controlan los movimientos de su cuenta, haciendo el proceso de hackeo difícil si no imposible, el diseño del proceso de mineo hace muy difícil el falsificar una transacción.

¿Es ilegal tener bitcoins?

No es ilegal el tener bitcoins en ningún país del mundo hasta ahora, incluso varios gobiernos estudian la posibilidad de cargar impuestos a las ganancias en ésta moneda.
La anonimidad de las billeteras virtuales ha impulsado a personas inescrupulosas a utilizar varios tipos de criptomonedas en sus pagos por sus productos y servicios ilegales, pero las criptomonedas en sí no son ilegales.

Raúl Morales Víquez
raul.morales.víquez@hotmail.com / http://informatica-raulmorales.blogspot.com
Consultor en informática e Instructor, certificado en Seguridad Informática, Graduado en la Universidad Latina de Costa Rica con más de 10 años de experiencia en diversas áreas de cultura organizacional en empresas multinacionales.



Sunday, March 2, 2014

Ingeniería Social, el punto débil de cualquier organización

Ingeniería Social, el punto débil de cualquier organización


Hoy en día es común el recibir correos de príncipes africanos que sólo necesitan nuestra información bancaria para salvar sus millones a cambio de una comisión o de loterías de internet que sólo requieren de $200 de impuesto para que nos envía $4 millones de dólares, pero ¿cuantas personas cayeron ante estos engaños?, ¿Cuánta gente sigue cayendo?
El robo de información de la empresa Kickstart, la empresa que ha conseguido capital para las nuevas empresas a través de internet, no fue algo inesperado, por lo menos no para los profesionales de seguridad, sino algo que era de esperarse luego de los grandes robos contemporáneos.
Sony y Target son empresas aún más grandes que han sufrido ataques informáticos en los últimos años, la seguridad informática es algo que ni siquiera es prioridad para los programadores y gerentes de empresas, es sólo otro gasto ¿verdad?, pero cuando pasa algo como esto uno no duda en preguntarse, ¿no es un error lógico y fácil de evitar?
La verdad, difícil de tragar, es que la culpa es nuestra como usuarios, ¿cuántos de nosotros leen los términos de licencia de un programa, o le encargamos a un abogado a que lo haga y nos los explique?, ahora bien ¿cuántos leemos siquiera lo que nos piden en las pantallas emergentes?, ¿cuándo es mejor presionar “cancelar” que presionar “ok”?
Hace poco me llegó un correo que fue novedoso, me guio a una página igual a paypal, una página muy conocida de pago con tarjeta de crédito, y me alarmó mostrándome un cargo al que yo no había accedido, siendo honesto yo ya sospechaba algo raro por el comportamiento de la página, ya que todos los links me pedían “resetear” la cuenta antes de darme más información e insistían en que debía “refrescar” los datos de tarjeta de crédito, ¡Alerta! Las páginas reales te dan la información una vez que uno se autentica, no le piden más datos hasta que uno intente cambiar algo y le informan de lo que pasa sin tener que autenticarse varias veces.

¿Cómo reconocer una página falsa de una real?

1.       Revise el campo de dirección: Las páginas falsas utilizan nombres de dominio alternos o de países diferentes como http://Bancogeneral.freewebs.com o http://Bancogeneral.com.ru
2.       Los enlaces van todos hacia un mismo destino: rara vez los artistas del engaño dedican mucho tiempo en la creación de páginas falsas así que para ahorrar tiempo envían todos los enlaces de la página a obtener su información
3.       Exigen más información de la necesaria para acceder: por lo general estos artistas son muy ambiciosos y apuestan a obtener toda su información de una sola vez

Recuerde

1.       Siempre acceda a sus páginas financieras escribiendo la dirección directamente, nunca desde un enlace.
2.       Si sospecha que entró a una página falsa, ¡Cambie su clave!
3.       Si recibe un email sospechoso, envíelo a la oficina de seguridad informática de su empresa financiera
4.       Elija empresas financieras que tengan oficinas de seguridad informática.

¿Qué es ingeniería social?

El tema de la ingeniería social es utilizar las habilidades sociales de una persona o grupo para obtener información, esto se da a través de:
·         Llamadas telefónicas: Cuando el “administrador del sistema” ocupa su clave para hacer un mantenimiento de su cuenta, los administradores tienen control absoluto del sistema y no requieren de claves para respaldar su correo electrónico.
·         Correos electrónicos: ahora es posible el esconder virus en fotos y archivos de música que se vuelven indetectables para muchos antivirus, solo abra los archivos que vienen de fuentes fidedignas.
·         Acceso físico: hay miles de tipos de dispositivos electrónicos diseñados para copiar y rastrear información.

Recuerde, conforme la empresa es más grande, la información es más valiosa.

El método de defensa de las empresas pequeñas que les permite mantener cero o muy poco presupuesto en seguridad es que el costo de violar su seguridad es más alto que la ganancia potencial, esto no se da en empresas cuya base de datos incluya información sensible de funcionarios de otras empresas o gobierno.
El error de muchas empresas es minimizar el valor de sus activos, es recomendable invertir entre el 20% y el 30% de sus ganancias en diversos dispositivos de seguridad y respaldo para su información.
Ahora siempre va a existir un límite entre lo aceptable y lo inverosímil, un juego de espías es muy poco probable conforme es una pequeña empresa, pero en una gran empresa con negocios de millones de dólares, los micrófonos y cámaras espías no son gran inversión contra la ganancia potencial.

Defiéndase de la Ingeniería Social

La ingeniería social depende del desconocimiento de sus empleados del valor de lo que hacen y de la información  recabada por parte de los intrusos, la manera más fácil de defenderse es negativizar ésta ecuación.
Sus empleados deben conocer el valor de la información interna de la compañía y no revelarla a personas externas, sus mercadólogos deben ser expertos en el arte de revelar información que atraiga a sus clientes y posibles inversores, pero que sea inútil a personas que deseen hacerle daño a su compañía.
Sus auditorías de  seguridad deben apoyar a sus empleados dándoles herramientas para bloquear fugas de información y reiterándoles el valor de su actividad y su valor en la empresa.
Recuerde el 75% de los ataques (maliciosos y accidentales) dentro de cualquier empresa son causados por sus mismo empleados.
Raúl Morales Víquez
raul.morales.víquez@hotmail.com / http://informatica-raulmorales.blogspot.com
Consultor en informática e Instructor, certificado en Seguridad Informática, Graduado en la Universidad Latina de Costa Rica con más de 10 años de experiencia en diversas áreas de cultura organizacional en empresas multinacionales.


Friday, February 28, 2014

CodeRage Latinoamérica. 11 Marzo 2014.

Este mes de Marzo la comunidad de desarrolladores está de suerte.
La programación para móbiles está de moda y si desea aprender, aprenda de los mejores!


  • Todo lo que necesita saber para comenzar con iOS y Android en Delphi y C + + Builder
  • Buenas prácticas en el diseño de la interfaz gráfica de sus aplicaciones móviles
  • Aplicaciones iOS y Android con base de datos en Delphi y C + + Builder
  • Aplicaciones iOS y Android con soporte para arquitecturas Multi-capas utilizando DataSnap 
 Regístrese ahora!

Wednesday, February 26, 2014

LiveBindings en Delphi

Que son LiveBindings?

LiveBindings es la respuesta de Delphi para acelerar la programación de varios comportamientos de manera rápida y eficaz.
LiveBindings utiliza una interfaz gráfica para conectar las propiedades de los elementos del programa, ya sea visibles o invisibles, de manera que no hay que programar un evento para habilitar o deshabilitar por ejemplo un edit, o el cambiar el texto de una etiqueta (Tlabel), sino que simplemente encadenamos el Tlabel.Caption a un TEdit.text.

Cómo se hace un LiveBind?

Acá hay un video de como se hace un binding
http://www.youtube.com/watch?v=BSq7JBHU0oo

Como vemos la interfaz gráfica permite agregar los componentes que deseamos unir y nos muestra las propiedades típicamente usadas, si queremos encadenar una propiedad que no se utiliza típicamente podemos hacer clic derecho en el componente y elegir de las propiedades del objeto.

Que beneficios que provee aprender a utilizar LiveBindings?

LiveBindings genera comportamientos elegantes en el programa que genera aceptación en el usuario final, permite crear un programa completo de manera rápida sin escribir una sola línea de código lo cual acelera la producción.

Raúl Morales Víquez
raul.morales.víquez@hotmail.com / http://informatica-raulmorales.blogspot.com

Consultor en informática e Instructor, certificado en Seguridad Informática, Graduado en la Universidad Latina de Costa Rica con más de 10 años de experiencia en diversas áreas de cultura organizacional en empresas multinacionales.

Exploring the Differences between Red-Teaming and Blue-Teaming in Cybersecurity: Why Red-Teaming is Sexier; but Blue-Teaming is More Crucial

When it comes to cybersecurity, there are two teams that often get confused: redteams and blueteams. Redteams are the hackers, the ones w...