20171216

El fin de la neutralidad de internet en Estados Unidos (y cómo afectará al resto del mundo)


Le decisión generó protestas en Estados Unidos.
Todas las empresas de el mundo digital, esperaban una resolución en uno u otro sentido. Pero el suelo se estremeció este jueves cuando se resolvió en Estados Unidos el fin de la "neutralidad de internet".
La Comisión Federal de Comunicaciones (FCC, por sus siglas en inglés) anunció la derogación total de las normas aprobadas por el gobierno de Barack Obama en 2015, que impedía a las compañías proveedoras (ISP) cobrar tarifas adicionales por un acceso más rápido a determinados contenidos/sitios en la red.
Básicamente, hasta el jueves, existía en la obligación de tratar a todo el universo digital por igual.
En términos políticos, los proveedores de acceso a Internet no podian bloquear, ralentizar o discriminar de cualquier manera un contenido o aplicacion.
Con la nueva ley, todo cambiará.
Las empresas que suministran el servicio tendrán a partir de ahora la libertad de experimentar con nuevos precios, priorizar o bloquear contenido, sin tener que rendir cuentas.
Esto traerá grandes beneficios para las compañías proveedoras.
Con el nuevo modelo, se estima que esas compañías podrán recaudar mucho más dinero de parte de los usuarios.

¿cuáles serán las consecuencias que esto podría tener para la gran mayoría los usuarios o para las empresas que utilizan los servicios de Internet en Estados Unidos? Y ¿cómo puede afectar esto al resto del mundo?
Hasta ahora, cualquier empresa que quería utilizar la red podía hacerlo independiente de su poder o tamaño.
Uno de los primeros efectos será una subida en los precios de conexión.
Lo aprobado este jueves permite a las grandes compañías proveedoras de internet cargar más dinero a las empresas que están en línea. Es decir, les permitirá subir los precios si quieren tener un acceso más rápido a internet para sus usuarios.
Hasta ahora, cualquier empresa que quisiera utilizar la red podía hacerlo independiente de su poder o envergadura.
Tenía el mismo derecho un joven que quisiera abrir un blog o crear una aplicación que un gigante como Google. El tráfico, debia tratarse de igual forma sin importar si se consultaba al Buscador mas usado, o a un pequeño servidor ubicado en la casa de un usuario.
Pero, ahora, las empresas podrán discriminar a quienes les daran un mayor ancho de banda o a quiénes se lo limitarán. Y también que sitios NO TENDRAN más coneccion porque la empresa no esta de acuerdo con lo que alli se informa/publica.
Pequeño recorte a la democracia y la libertad de opinion que se hace...
Siguiendo con la linea del post, lo anterior hará que los servicios que utilizamos en línea, como los de streaming (para ver videos o escuchar música) se vuelvan mucho más caros también.
Netflix / Spotify son de los servicios que puede resultar afectados.
Por Ejemplo : Netflix, por ejemplo, se volverá más cara. Como tendrán que pagar tarifas más altas por utilizar internet de mejor calidad para ofrecer sus servicios, necesitarán cobrar más también a sus usuarios para mantenerlo. 
Internet se volverá mucho más caro en los servicios por los que ya pagamos
Las compañias más grandes, podrían llegar a verse beneficiadas al tener un mayor poder para negociar con los proveedores. Pero los pequeños emprendedores verán subir sus costos de presencia en internet.
Decaerán los servicios gratuitos: dado que las empresas que ahora ofrecen este tipo de utilidades tendrán que pagar más, si no cobran más se harán económicamente inviables.
Esto podría significar el fin de empresas más pequeñas o el fracaso de nuevos proyectos en la red.
Como los precios para tener un mejor internet subirán y los proveedores lo podrán controlar a su antojo, esto hará que haya menos compañías nuevas en la red, habrá menos variedad y logrará que el poder se concentre aún más en los gigantes de internet. Esto sin contar como todo esto hara disminuir la pluralidad de opiniones.
Censura
Otro de los puntos controvertidos de la ley es que las compañías proveedoras de servicios de internet podrán bloquear o censurar contenidos por cualquier motivo.
Anteriormente, las compañías estaban obligadas a mantener en sus servidores cualquier página independientemente que estuvieran a favor o contra de sus contenidos. Esto ya no será de esa forma.
Cuando una empresa (de fuera de EEUU) desea utilizar los servicios de internet estadounidenses para llegar a más usuarios en ese país, va a encontrarse que ya no tendrá la misma capacidad de distribución de sus contenidos que una empresa local o que un gigante de internet. Las posibilidades de entrar en el mercado digital estadounidense, se harán más difíciles, burocráticas y llevará procesos en los que serán los proveedores de internet quienes tendrán la última palabra.
A partir de ahora, la naturaleza o tamaño de la empresa garantizará que tenga un mejor o peor servicio de internet.

20171212

Export Automático de una KB.

Desde que Genexus basó la estructura de las KB en los archivos de Base de Datos, el proceso de "respaldar" una KB, pasó a depender en gran medida de la capacidad de el Motor de BD (que muchas veces no está instalado en nuestro PC) de realizar sus respaldos "sin errores".
En caso de un Problema, restauramos la ultima versión del respaldo de nuestra KB, con las consiguientes "perdidas" de trabajos realizados, ya que al restaurar la BD a una situación anterior, todos los cambios realizados con posterioridad, se "pierden".
El restaurar la BD es una situación muy buena, en el caso de un fallo catastrófico en nuestra KB, pero tratar de solucionar de esta manera problemas puntuales, es como querer practicar neurocirugía con un machete.
Ya no existe la opción de "respaldar el directorio" de la KB, y, si el servidor de BD es local, los archivos de la BD de nuestra KB estarán en ese directorio (si no especificamos algo diferente).
Realizar un ZIP (o RAR) diario de la carpeta de nuestra KB ya no nos soluciona nada.
La opción que personalmente me parece mas práctica, es realizar un EXPORT de todos los objetos de la KB, de forma diaria.
Al momento de tener que solucionar un problema, hay que abrir el archivo del export (.xpz) que nos interesa, e importar el respaldo puntual de lo que queremos reparar.
Acordarnos de hacer diariamente un EXPORT de la KB, puede ser un proceso que tarde o temprano olvidemos, con los consiguientes problemas.
Entonces, luego de investigar un poco, les traigo aca la solución que A MI me ha servido.
Esta solucón usa MSBUILD para construir el respaldo. 

 1) Crear un archivo (en mi caso BKP.msbuild) como el que aparece a continuación
<Project DefaultTargets="BKP" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <Import Project="C:\Program Files (x86)\Artech\GeneXus\GeneXusXEv3\Genexus.Tasks.targets" />
   <PropertyGroup>
      <KBPath>C:\Models\APC</KBPath>
   <ExportFileName>F:\BKP\APC.xpz</ExportFileName>
   </PropertyGroup>
   <Target Name="BKP">
  <OpenKnowledgeBase Directory="$(KBPath)" />
  <Export File="$(ExportFileName)"/>
   </Target>

</Project>
 Donde 
 a) C:\Models\APC // Es la ruta del Modelo que vamos a respaldar (En mi caso el Modelo se llama APC)
 b) F:\BKP\APC.xpz // es el archivo (con la ruta) de nuestro Export (en mi caso APC.xpz) 

2) Crear un archivo (En mi caso BKP.cmd) como el que aparece a continuacion 
F: 
cd \ 
cd BKP 
c:\Windows\Microsoft.NET\Framework\v3.5\MSBuild bkp.msbuild 
for /f "usebackq tokens=1,2 delims= " %%i in (`date /t`) do set tmpfecha=%%j 
for /f "usebackq tokens=1,2,3 delims=/" %%i in (`echo %tmpfecha%`) do set a=%%k_%%i_%%j 
move APC.xpz APC_%a%.xpz 
El proceso por lotes creado 
 a) me posiciona en el directorio donde hare el respaldo 
 b) Ejecuta el MSBUILD llamando al archivo bkp.msbuild creado en el paso 1 (El archivo esta en la ruta F:\BKP)
 c) Cambia el nombre del archivo APC.xpz creado a APC_YYYY_MM_DD.xpz (conde YYYY es el Año, MM el Mes y DD el día en que se realiza el proceso) 

3) Crear una tarea programada que ejecute el proceso por lotes BKP.cmd con la frecuencia deseada. 


Al ejecutarse obtendrán una salida como se muestra a continuación

f:\BKP>BackupModelo.cmd
f:\BKP\>f:
f:\BKP\>cd \
f:\>cd BKP
f:\BKP>
f:\BKP>c:\Windows\Microsoft.NET\Framework\v3.5\MSBuild bkp.msbuild
Microsoft (R) Build Engine, versión 3.5.30729.8795
[Microsoft .NET Framework, versión 2.0.50727.8784]
Copyright (C) Microsoft Corporation 2007. Reservados todos los derechos.

Build started 12/11/2017 13:29:25.
Project "f:\BKP\bkp.msbuild" on node 0 (default targets).
  ========== Open Knowledge Base Task started ==========
  &gt; Open Knowledge Base Task Success
  ========== Open Knowledge Base Task finished ==========
  ========== Export started ==========
  Exporting Category 'Main Programs'...
  Exporting Folder 'CommonApi'...
  Exporting Folder 'GeneralWeb'...
  Exporting Folder 'WebApi'...
  Exporting Folder 'SmartDevicesApi'...
.........
  Exporting Theme Class 'ReadonlyBlobContentAttSubTitle'...
  Exporting Theme Class 'BlobContentAttSubTitle'...
  Exporting Theme Class 'AttSubTitle'...
  Exporting Theme Class 'ReadonlyAttSubTitle'...
  Exporting Theme Class 'ReadonlyCheckBox'...
  Exporting Theme Class 'CheckBox'...
  Exporting Theme Class 'WorkWith'...
  Exporting Theme Class 'DisplayAttribute'...
  Exporting Theme Class 'Table100x100'...
  Exporting Theme Class 'header_pink_line'...
.........
  Exporting Attribute 'LRMicro'...
  Exporting Attribute 'LRCierre'...
  Compressing output file...
  Export File Created At: 'f:\BKP\APC.xpz'
  Export Time: XXXXXX seconds
  &gt; Export Success
  ========== Export finished ==========
Done Building Project "f:\BKP\bkp.msbuild" (default targets).
Build succeeded.
    0 Warning(s)
    0 Error(s)
Time Elapsed XX:XX:XX
f:\BKP>for /F "usebackq tokens=1,2 delims= " %i in (`date /t`) do set tmpfecha=%j
f:\BKP>set tmpfecha=12/11/2017
f:\BKP>for /F "usebackq tokens=1,2,3 delims=/" %i in (`echo 12/11/2017`) do set a=%k_%i_%j
f:\BKP>set a=2017_12_11
f:\BKP>move APC.xpz APC_2017_12_11.xpz
Se han movido         1 archivos.
f:\BKP>


Espero la solución pueda servir a aquellos que como yo, a veces necesitamos recuperar algo puntual y el proceso de respaldar lo hecho, restaurar la BD, impactar cambios, o realizar un Export de lo que necesitamos puntualmente, volver al respaldo antes del Import e impactar lo que exportamos, le resulta poco práctico. 

NOTA IMPORTANTE : NO USAR el MSBUILD de 64 bits !!!

20171204

Donde quedo REPROCESS MODEL?

Programando hace unos días en Genexus X Evo 3, luego de hacer unos cambios en la estructura de unas transacciones, el sistema me hizo una de esas que hacía muchísimo no me hacia.
Tengo dos transacciones con la siguiente estructura
TRN1
- Atributo1 (Parte de la KEY)
- Atributo2 (Parte de la KEY)
- Atributo3 (Parte de la KEY)
- Atributo4 

TRN2
- Atributo1 (Parte de la KEY)
- Atributo2 (Parte de la KEY)
- Atributo3 (Parte de la KEY)


- Atributo5
- Atributo6
- Atributo7

La estructura de la tabla asociada a esas transacciones debía ser :

- Atributo1 (Parte de la KEY)
- Atributo2 (Parte de la KEY)
- Atributo3 (Parte de la KEY)
- Atributo4
- Atributo5
- Atributo6
- Atributo7

Y lo fue, hasta que en medio de algún cambio, GENEXUS decidió que la estrucura debia separarse en DOS TABLAS y lo dejo de esta manera

TABLA1
- Atributo1 (Parte de la KEY)
- Atributo2 (Parte de la KEY)
- Atributo3 (Parte de la KEY)

TABLA2
- Atributo1 (Parte de la KEY)
- Atributo2 (Parte de la KEY)
- Atributo3 (Parte de la KEY)
- Atributo4


- Atributo5
- Atributo6
- Atributo7

Como verán,  eso tiene muy poco sentido.
Intenté eliminar una transacción (TRN1) y al tratar de impactar no se solucionaba.
Por alguna razón, algunos de los procedimientos u otras transacciones que habían quedado "enganchados" de TABLA1, por lo que genexus no la eliminaba.
Probé a eliminar TRN2, (luego de crear nuevamente TRN1) con idéntico resultado.
Probé a eliminar ambas transacciones, pero tampoco se solucionó.
Ya muy enojado, busque la opción REPROCESS MODEL.
Hasta Genexus 9, esta opción, que yo al menos usaba como ULTIMO RECURSO, nos permitía, a costa de perder algo de información (nombre de las tablas, indices de usuario, etc), reconstruir, al re-procesar las transacciones una a una, una estructura coherente de la Base de Datos.
Oh sorpresa cuando descubrí que dicha opción ya no existía.
Busque si había sido separada o ahora era una herramienta separada de Genexus y no la encontré.
Era, o al menos lo era para mi, una opción que nos podía ayudar cuando sucedían cosas como estas... En las que Genexus, debido a una conjunción de estrellas, o alineación planetaria, o no se que, comete un error como el que les indico.
Las solución lamentablemente fue exportar la KB completa; iniciar una nueva KB desde 0, e importar la KB allí, TENIENDO CUIDADO DE DESMARCAR la importación de las TABLAS.
Con eso, la situación quedo solucionada.
Lo que ACA es tan cortito, lamentablemente me hizo perder muchísimas horas intentando una y otra vez cosas que no solucionaron el problema.
No entiendo a donde se fue el REPROCESS MODEL, y mucho menos entiendo el porque lo eliminaron.