Ganadores de “Microsoft Imagine Cup 2008 Paris”

Desarrollo Web, Diseño, Internet Sin Comentarios »
Publicado por juank

ha anunciado hoy a los ganadores de Imagine Cup 2008 en el Museo del Louvre, tras una semana de intensa competición entre los finalistas elegidos de una encuesta realizada a más de 200.000 estudiantes procedentes de unos 100 países y regiones entre ellas .

Como celebración del primer lugar, el Equipo SOAK de Australia ganó la invitación mundial de de Software, el Equipo Trail Blazers de Singapur se hizo con la invitación de Integrado, mientras que el Mother Gaia Studio de Brasil ganó el reto de de Juego. Imagine Cup, la principal competición mundial para estudiantes de tecnología, proporciona a los estudiantes una oportunidad para sacar a la luz su genio creativo y construir soluciones que sirvan para hacer frente a los problemas del mundo real a los que se enfrenta la sociedad actual.

Lastima que ninguno de los concursantes colombianos ganara en alguna categoria, tal vez el proximo año. En el 2009 “imagine cup” se celebrara en egipto.

“MYSQL vs POSTGRESQL” ….”DELFIN vs ELEFANTE”

Desarrollo Web, Programación Sin Comentarios »
Publicado por juank


Me parece importante recalcar que muchos de nosotros estamos acostumbrados a utilizar como gestor de BD, pero hay muchos otras opciones. A continución un versus interesante entre dos de los mejores.

CARACTERISTICAS:


Soporta distintos tipos de datos, además del soporte para los tipos base, también soporta datos de tipo fecha, monetarios, elementos gráficos, datos sobre redes (MAC, IP …), cadenas de bits, etc. También permite la creación de tipos propios.   Incorpora una estructura de datos array.    Permite la declaración de funciones propias, así como la definición de disparadores”TRIGGERS”. Soporta el uso de índices, reglas y vistas.     Incluye herencia entre tablas (aunque no entre objetos, ya que no existen), por lo que a este gestor de bases de datos se le incluye entre los gestores objeto-relacionales.

 
 Aprovecha la potencia de sistemas multiprocesador, gracias a su implementación multihilo.   Soporta gran cantidad de tipos de datos para las columnas.    Dispone de ’s en gran cantidad de lenguajes (C, C++, Java, , etc)   Gran portabilidad entre sistemas.   Soporta hasta 32 índices por tabla.   Gestión de usuarios y passwords, manteniendo un muy buen nivel de seguridad en los datos.

PARA RESALTAR:

 
  Posee una gran escalabilidad. Es capaz de ajustarse al número de CPUs y a la cantidad de memoria que posee el sistema de forma óptima    Implementa el uso de rollback’s, subconsultas y transacciones, haciendo su funcionamiento mucho más eficaz.     Tiene la capacidad de comprobar la integridad referencial, así como también la de almacenar procedimientos en la propia base de datos, equiparándolo con los gestores de bases de datos de alto nivel, como puede ser Oracle. 


su velocidad a la hora de realizar las operaciones, lo que le hace uno de los gestores que ofrecen mayor rendimiento.Su bajo consumo lo hacen apto para ser ejecutado en una máquina con escasos recursos sin ningún problema. Las utilidades de administración de este gestor son envidiables para muchos de los gestores comerciales existentes, debido a su gran facilidad de configuración e instalación.Tiene una probabilidad muy reducida de corromper los datos, incluso en los casos en los que los errores no se produzcan en el propio gestor, sino en el sistema en el que está. El conjunto de aplicaciones Apache-- es uno de los más utilizados en Internet

PARA TENER EN CUENTA 


 Consume gran cantidad de recursos.  Tiene un límite de 8K por fila, aunque se puede aumentar a 32K, con una disminución considerable del rendimiento.    Es de 2 a 3 veces más lento que .


 Carece de soporte para transacciones, rollback’s y subconsultas.   El hecho de que no maneje la integridad referencial, hace de este gestor una solución pobre para muchos campos de aplicación, sobre todo para aquellos programadores que provienen de otros gestores que sí que poseen esta característica.   No es viable para su uso con grandes bases de datos, a las que se acceda continuamente, ya que no implementa una buena escalabilidad.

En conclusion: miren, evaluen y elijan el que mejor se les adapte a sus necesidades.

Números A Letras

Desarrollo Web, Programación, Scripts 3 Comentarios »
Publicado por lopongoaca

Hace algunos días estaba realizando un sistema de información para la compañía en la que trabajo y entre todas las cosas que tenia que hacer este sistemas se incluía el hecho de realizar facturas de venta.

Hace mucho tiempo que no realizaba este típico proceso, por lo cual tuve que hacer memoria de mis clases de Bases De Datos recibidas en la Universidad y recordar que en la mayoría de casos una factura tiene un Encabezado, un Detalle y un Pie o Total.

Al fin pude realizar la factura y su modelo, pero el problema vino cuando me dijeron que el valor de la factura debía estar escrito en letras. Después de mucho tiempo de intentar crear una función que me permitiera esto, decidí buscar en Google y me encontré con esta excelente función que nos permite realizar esto sin ningún problema.

:
  1. <?
  2. /*
  3. @function num2letras ()
  4. @abstract Dado un n?mero lo devuelve escrito.
  5. @param $num number - N?mero a convertir.
  6. @param $fem bool - Forma femenina (true) o no (false).
  7. @param $dec bool - Con decimales (true) o no (false).
  8. @result string - Devuelve el n?mero escrito en letra.
  9. */
  10. function num2letras($num, $fem = false, $dec = true) {
  11. $matuni[2]  = "dos";
  12. $matuni[3]  = "tres";
  13. $matuni[4]  = "cuatro";
  14. $matuni[5]  = "cinco";
  15. $matuni[6]  = "seis";
  16. $matuni[7]  = "siete";
  17. $matuni[8]  = "ocho";
  18. $matuni[9]  = "nueve";
  19. $matuni[10] = "diez";
  20. $matuni[11] = "once";
  21. $matuni[12] = "doce";
  22. $matuni[13] = "trece";
  23. $matuni[14] = "catorce";
  24. $matuni[15] = "quince";
  25. $matuni[16] = "dieciseis";
  26. $matuni[17] = "diecisiete";
  27. $matuni[18] = "dieciocho";
  28. $matuni[19] = "diecinueve";
  29. $matuni[20] = "veinte";
  30. $matunisub[2] = "dos";
  31. $matunisub[3] = "tres";
  32. $matunisub[4] = "cuatro";
  33. $matunisub[5] = "quin";
  34. $matunisub[6] = "seis";
  35. $matunisub[7] = "sete";
  36. $matunisub[8] = "ocho";
  37. $matunisub[9] = "nove";
  38.  
  39. $matdec[2] = "veint";
  40. $matdec[3] = "treinta";
  41. $matdec[4] = "cuarenta";
  42. $matdec[5] = "cincuenta";
  43. $matdec[6] = "sesenta";
  44. $matdec[7] = "setenta";
  45. $matdec[8] = "ochenta";
  46. $matdec[9] = "noventa";
  47. $matsub[3]  = 'mill';
  48. $matsub[5]  = 'bill';
  49. $matsub[7]  = 'mill';
  50. $matsub[9]  = 'trill';
  51. $matsub[11] = 'mill';
  52. $matsub[13] = 'bill';
  53. $matsub[15] = 'mill';
  54. $matmil[4]  = 'millones';
  55. $matmil[6]  = 'billones';
  56. $matmil[7]  = 'de billones';
  57. $matmil[8]  = 'millones de billones';
  58. $matmil[10] = 'trillones';
  59. $matmil[11] = 'de trillones';
  60. $matmil[12] = 'millones de trillones';
  61. $matmil[13] = 'de trillones';
  62. $matmil[14] = 'billones de trillones';
  63. $matmil[15] = 'de billones de trillones';
  64. $matmil[16] = 'millones de billones de trillones';
  65.  
  66. $num = trim((string)@$num);
  67. if ($num[0] == '-') {
  68. $neg = 'menos ';
  69. $num = substr($num, 1);
  70. }else
  71. $neg = '';
  72. while ($num[0] == '0') $num = substr($num, 1);
  73. if ($num[0] &lt;'1' or $num[0]&gt; 9) $num = '0' . $num;
  74. $zeros = true;
  75. $punt = false;
  76. $ent = '';
  77. $fra = '';
  78. for ($c = 0; $c &lt;strlen($num); $c++) {
  79. $n = $num[$c];
  80. if (! (strpos(".,'''", $n) === false)) {
  81. if ($punt) break;
  82. else{
  83. $punt = true;
  84. continue;
  85. }
  86.  
  87. }elseif (! (strpos('0123456789', $n) === false)) {
  88. if ($punt) {
  89. if ($n != '0') $zeros = false;
  90. $fra .= $n;
  91. }else
  92.  
  93. $ent .= $n;
  94. }else
  95. <p align="justify">break;</p>
  96. }
  97. $ent = '     ' . $ent;
  98. if ($dec and $fra and ! $zeros) {
  99. $fin = ' coma';
  100. for ($n = 0; $n &lt;strlen($fra); $n++) {
  101. if (($s = $fra[$n]) == '0')
  102. $fin .= ' cero';
  103. elseif ($s == '1')
  104. $fin .= $fem ? ' una' : ' un';
  105. else
  106. $fin .= ' ' . $matuni[$s];
  107. }
  108. }else
  109. $fin = '';
  110. if ((int)$ent === 0) return 'Cero ' . $fin;
  111. $tex = '';
  112. $sub = 0;
  113. $mils = 0;
  114. $neutro = false;
  115. while ( ($num = substr($ent, -3)) != '   ') {
  116. $ent = substr($ent, 0, -3);
  117. if (++$sub &lt;3 and $fem) {
  118. $matuni[1] = 'una';
  119. $subcent = 'as';
  120. }else{
  121. $matuni[1] = $neutro ? 'un' : 'uno';
  122. $subcent = 'os';
  123. }
  124. $t = '';
  125. $n2 = substr($num, 1);
  126. if ($n2 == '00') {
  127. }elseif ($n2 &lt;21)
  128. $t = ' ' . $matuni[(int)$n2];
  129. elseif ($n2 &lt;30) {
  130. $n3 = $num[2];
  131. if ($n3 != 0) $t = 'i' . $matuni[$n3];
  132. $n2 = $num[1];
  133. $t = ' ' . $matdec[$n2] . $t;
  134. }else{
  135. $n3 = $num[2];
  136. if ($n3 != 0) $t = ' y ' . $matuni[$n3];
  137. $n2 = $num[1];
  138. $t = ' ' . $matdec[$n2] . $t;
  139. }
  140. $n = $num[0];
  141. if ($n == 1) {
  142. if ($n2 &lt;&gt; '00') {
  143. $t = ' ciento' . $t;
  144. } else {
  145. $t = ' cien' . $t;
  146. }
  147. }elseif ($n == 5){
  148. $t = ' ciento' . $t;
  149. }elseif ($n == 5){
  150. $t = ' ' . $matunisub[$n] . 'ient' . $subcent . $t;
  151. }elseif ($n != 0){
  152. $t = ' ' . $matunisub[$n] . 'cient' . $subcent . $t;
  153. }
  154. if ($sub == 1) {
  155. }elseif (! isset($matsub[$sub])) {
  156. if ($num == 1) {
  157. $t = ' mil';
  158. }elseif ($num&gt; 1){
  159. $t .= ' mil';
  160. }
  161. }elseif ($num == 1) {
  162. $t .= ' ' . $matsub[$sub] . 'ón';
  163. }elseif ($num&gt; 1){
  164. $t .= ' ' . $matsub[$sub] . 'ones';
  165. }
  166. if ($num == '000') $mils ++;
  167. elseif ($mils != 0) {
  168. if (isset($matmil[$sub])) $t .= ' ' . $matmil[$sub];
  169. $mils = 0;
  170. }
  171. $neutro = true;
  172. $tex = $t . $tex;
  173. }
  174. $tex = $neg . substr($tex, 1) . $fin;
  175. return ucfirst($tex);
  176. }
  177. ?>

Para llamar a la función sencillamente incluimos el archivo donde tenemos y la funcion y la llamos asi:

:
  1. <?
  2. include 'numero2letras.';
  3. echo num2letras(1500);
  4. ?>

Aca pongo el demo (un poco mejorado) y el archivo para descargar la función y el demo.

Enlace Script Original

Outsourcing y la Web

Desarrollo Web, Opinión Sin Comentarios »
Publicado por lopongoaca

Perdón por este Copy & Paste, pero me pareció un excelente articulo.
El articulo original puedes verlo Acá.

El articulo:

Construir y administrar un sitio exigen habilidades que lo candidatizan para ser un proyecto efectuado por .

Mucho se ha discutido y escrito sobre el tema del outsourcing, y siempre será un tema polémico en todo tipo de empresas. En resumen, siempre hay la posibilidad de pensar que le margen de utilidad que obtiene la empresa que me brinda el servicio, pudiera ser mío, y trasladárselo a mis clientes, si lo exigen las condiciones del mercado.

Sin embargo, se ha comprobado que existen muchas áreas donde el modelo de outsourcing es válido, y propiamente cuando no se tienen las habilidades al interior de la empresa, o mejor aún, cuando el proceso a ejecutarse se sale del objeto del negocio.

537481_25546126La construcción de un sitio , y su mantenimiento, bien podría aplicar como elemento candidato a ser efectuado por terceros, por las dos características. Por lo general, la construcción y el mantenimiento de un sitio se sale del objeto del negocio, excepto de las empresas que los construyen, y además, requieren conocimientos de muchas áreas, difíciles de acopiar al interior de una empresa.

La infraestructura para colocar el sitio mezcla conocimientos de redes, servidores, bases de datos, servidores de aplicaciones, servidores , correo electrónico y muchas otras tecnologías. Aunque al interior de las empresas pueda existir este tipo de tecnologías o conocimiento, su aplicación por lo general está orientada a la operación del negocio y no a la generación de un sitio . Elementos como alta disponibilidad, conexión permanente a Internet, y con buen ancho de banda para atender los usuarios, son temas que están mejor administrados en un ISP, cuyo negocio es precisamente ese, que en una empresa para la cual no es su negocio.
En el caso de la infraestructura la recomendación general es efectuar el proceso con un tercero, pero no se puede suponer que al encargárselo al tercero, la responsabilidad también disminuye. Debe ser claro que es responsabilidad compartida, entre el proveedor y el cliente, la definición de procedimientos y políticas para la administración del sitio. Por ejemplo, cambios tan obvios en la parte técnica como la actualización del servidor , pueden dar al traste con la funcionalidad de un sitio. Este tipo de situaciones deben ser acordadas en un documento que se conoce como "acuerdo de niveles de servicio" y se estipulan las responsabilidades y criterios de medición para cada uno.

964756_75387436 Luego viene la parte interesante del asunto, la construcción en sí del sitio , para lo cual se requieren tres tipos de especialistas. El ingeniero de software, que debe construir aplicaciones sobre tecnología , de tal manera que sean fáciles de usar, fáciles de mantener, y rápidas para ser descargadas por los visitantes. También están los diseñadores gráficos que trabajan en la distribución de cada elemento en el portal, la concepción de colorido, tamaños y tipo de letras, y muchos otros factores que intervienen en el gráfico. Por último, pero no menos importante, está la generación del contenido, tanto para la primera carga, como para el mantenimiento periódico del sitio. Esta generación de contenido requiere la habilidad de "incitar a la acción" para poder que el sitio en sí tenga el efecto deseado en sus visitantes.

Estas habilidades también son difíciles de encontrar en una sola empresa, lo que hace factible la contratación de la construcción del sitio a través de empresas especializadas en el tema. Tal vez el único de los temas que se deberá hacer al interior de las empresas propietarias del sitio, será la generación de contenido pertinente al sitio y a su objetivo. Si es una empresa que provee servicios médicos, el contenido puede ser información de conocimiento general para el mejoramiento de la salud. Si la empresa vende productos de consumo masivo, la comunicación deberá ir orientada a la generación de recordación de marca. Como se puede ver de estos dos ejemplos, se requiere un conocimiento sobre el tema, además de saber comunicar.

Construir y administrar un sitio exigen habilidades que lo candidatizan para ser un proyecto efectuado por outsourcing. Sin embargo, eventualmente el sitio será tan integral a los procesos de la compañía, que será absorbido por la tecnología de la misma empresa, de la misma manera en que los costos permitieron pasar de un esquema de "service" para el procesamiento de datos, a tenerlos cada uno en nuestros propios equipos.

José Camilo Daccach T.

API de EL TIEMPO.COM Abierta a Desarrolladores

Desarrollo Web, Opinión, Programación 1 Comentario »
Publicado por lopongoaca

api

El periódico EL TIEMPO ha abierto su API de para buscar, en conjunto con Microsoft y Campus Party, el rey de la programación.

eltiempo.com abre su API para invitar a la comunidad de a construir las nuevas formas de visualizar su portal.

Las mejores aplicaciones se escogerán por su innovación, creatividad y usabilidad.

Para ello podrás servirte del contenido del sitio (un archivo digital que va desde 1990 hasta la fecha) mézclale tu código, agrégale lo que se te ocurra y construye la mejor aplicación para consultar las noticias de eltiempo.com.

logo_transversal

Los mejores recibirán dos regalos:

1. El desarrollador de la mejor aplicación irá con todos los gastos pagos al próximo Campus Party en Valencia del 28 de julio al 3 de agosto del 2008 (sujeto a disponibilidad de visa).

2. Y para el que haga mejor uso del con Microsoft Silverlight podrá asistir a la próxima edición del Professional Developers Conference (PDC), en Los Ángeles (sujeto a disponibilidad visa). Lea sobre como desarrollar con Microsoft Silverlight.

El único problema es que para participar debes asistir al Campus Party Colombia (Me sacaron de una), aunque para los que asistieron es una genial oportunidad para dar a conocer su trabajo y ganarse muy buenos premios.

Toda la información y bases del concurso en:

/API webmonster