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 colombia.

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.

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.


Cerrar
Enviar por Correo