tag:blogger.com,1999:blog-37204953055445907422024-02-07T18:01:45.434-08:00Mi Rincon TecnologicoEspecialista en Programacion .Net C#, PHP, Delphi, amante de Firebird y FreeBSD.adminhttp://www.blogger.com/profile/13543933220990885985noreply@blogger.comBlogger20125tag:blogger.com,1999:blog-3720495305544590742.post-48344144766730390252011-06-21T22:06:00.000-07:002011-06-21T22:56:02.715-07:00The section can't be defined in this configuration file (the allowed definition context is 'MachineToApplication')La verdad que este error si me a quitado el sueño no solo una vez, sino en repetidas ocasiones, la primera vez si que dure mucho tiempo para buscarle una solucion pero no fue de mi agrado, las otras ocasiones descubri otras variantes para solucionar el error, hoy me volvi a tocar con lo mismo y me anime a escribir un poco de aquello.<div><br /></div><div>Primero entendamos y conoscamos el error a fondo y despues hablemos de soluciones posibles:</div><div><br /></div><div>Cuando tenemos una aplicacion que deseamos usar el membership, por lo tanto roles tambien, al probarla en nuestro ambiente de Mono, es posible que obtengamos este error:</div><div><br /></div><div><b>The section <rolemanager> can't be defined in this configuration file (the allowed definition context is 'MachineToApplication')</rolemanager></b></div><div><b><br /></b></div><div>Verlo a primer encontronazo, nos quedamos perplejos, un error muy extraño que no nos dice mucho, solo que la definicion del roleManager no se puede declarar en el webconfig, sino en otro contexto, pero sucede que nuestra aplicacion trabaja bien en nuestro ambiente de windows, en el caso de que sea que estemos portandolo desde alli. Pues googleando un poco no encontramos absolutamente nada que nos ayude, un error poco discutido, incluso solo vi algunos que suguieren que actualizemos a una version mas nueva de mono si hay alguna... esta solucion me parece a la que dan algunos soportes tecnicos a los usuarios cuando tienen cualquier tipo de problema que sin saber mucho la situacion solo dicen "resetea el computador, si persiste llamame, adios". Obviamente esta no es la solucion, ya que he visto el mismo error en versiones diferentes de mono.</div><div><br /></div><div>El problema radica en que el mod_mono no esta viendo nuestra aplicacion como una real aplicacion, sino como una carpeta comun. Este error ocurre si no tenemos configurada (o no lo esta correctamente) nuestra aplicacion en el mod_mono.conf o si estamos trabajando con el AutoHosting.</div><div><br /></div><div>Si configuramos nuestra aplicacion manualmente en el mod_mono.conf no veremos mas este error y todas las aplicaciones que hostiemos la debemos de configurar correctamente alli, aconsejable utilizar esta utilidad que nos genera la configuracion correcta para nuestra aplicacion <a href="http://go-mono.com/config-mod-mono/">http://go-mono.com/config-mod-mono/</a></div><div><br /></div><div>Otra forma de resolver el error sin enliarnos mucho con la configuracion es copiar nuestra aplicacion en el root de nuestro site, es decir, fuera de cualquier carpeta, con el solo hecho de escribir http://midominio.com esta entre inmediatamente. Esta solucion es viable si no pensamos hostear ninguna otra aplicacion mas, solo una.</div><div><br /></div><div>Pero que sucede si deseo utilizar el AutoHosting y estoy recibiendo este error?</div><div><br /></div><div>El autohosting permite que tengamos muchas aplicaciones en un mismo dominio separados por carperas y que estas no sean necesarias ser configuradas en ningun archivo de configuracion, definitivamente el autohosting es la mejor opcion para trabajar, pero este error nos hace la vida imposible ya que si tenemos 10 aplicaciones hosteadas y una sola de estas utilizara el membership y nos arroja este error, pues nuestras otras 9 aplicaciones se bloquean!!</div><div><br /></div><div>Por que el AutoHosting no reconoce nuestra aplicacion como tal??? pues lo que sucede es que el autohosting para considerar que una carpeta es una aplicacion solo toma en cuenta si existe un archivo "Global.asax" o una carpeta "bin". Asi que si no tenemos ninguno de los dos, pues a crearlo... Pero por su puesto que tengo por lo menos la carpeta "Bin" en mi aplicacion y sigue presentando el error.... dije "Bin" con la B en mayuscula? pues ahi esta el problema, el autohosting es CASE-SENSITIVE, el esta buscando un "bin" no un "Bin".</div>adminhttp://www.blogger.com/profile/13543933220990885985noreply@blogger.com0tag:blogger.com,1999:blog-3720495305544590742.post-64919270109944204652011-06-15T12:26:00.000-07:002011-06-15T12:27:09.617-07:00WebForms vs MVCRecuerdo que en el año 2003 cuando el bum del Framework.Net de microsoft se hacia fuertemente popular donde ellos planteaban un nuevo paradigma de construcción de paginas web mucho "mas fácil" que los métodos convencionales conocidos, pues yo me resistía al cambio ya que desde que comencé a investigar su funcionamiento, me daba cuenta que el control de lo que se construía no me pertenecía, estabas atado a lo que el framework quisiera hacer por ti, también me preguntaba en donde iba a dejar mi tan amado JavaScript (JS), como iba a administrar los controles de los formularios sin una integración realmente adecuada con el JS y eso de estar posteando al servidor para que los eventos se disparasen y otras acciones se realizaran en una misma pagina, el viewstate que reentilizaba considerablemente las cargas de las paginas, pues todo me parecia muy mal visto por mi, siempre fui un programador fuerte de lo convencional ASP 3.0 (el clasico) y PHP, construía a mano todos mis recursos de JS, mis clases para mis aplicaciones, un total dominio de los tags de HTML... en fin, mi cambio al .Net no fue de mi agrado pero tuve que hacerlo.<div><br /></div><div>En la curva del aprendizaje y la experiencia del día a día, me enamore de C#, una riqueza inmensa e incomparable en un lenguaje de programación que no le tiene que envidiar nada a ninguno, sin lugar a dudas mi favorito entre muchos que conozco y en mi opinión personal diría que es el mejor.</div><div><br /></div><div>La ventaja inmediata a la creación de los WebForms era la gran rapidez de desarrollo, la facilidad de hacer cosas que me tomaban horas y días de hacer antes lo hacia en un santiamén, quizás no tenia el control total de lo que hacia pero mi productividad se disparo por los cielos. El no tener el control total de lo que hacia ya no me quitaba el sueño porque no me impedía construir aplicaciones a mis gustos y sin dificultad, pues el resultado de los proyectos siempre era el deseado y de calidad. También con la experiencia se aprendían trucos para realizar algunas acciones que pensábamos que no eran posible sin tener "dicho control", pero la verdad es que "casi" todo era posible, solo era asunto de ingeniársela y buscarle la vuelta. Microsoft siempre abogo y defendió haber tenido el mejor framework y herramienta para el desarrollo web con los WebForms y al final de la historia le di la razón.</div><div><br /></div><div><br /></div><div>Al pasar los años comencé a oír mucho de los framework MVC existentes en otras plataformas y de sus grandes ventajas, también al parecer muchos desarrolladores de Microsoft siempre se quedaron con la queja que yo tuve desde un inicio como la falta de control y otros aspectos negativos que siempre estuvieron latentes en los WebForms como la lentitud de la carga de las aplicaciones por el complejo ciclo de vida de una pagina , la falta de trabajar en un contexto real para entorno web ya que el concepto de los WebForms era como simular el desarrollo como si se tratase de aplicaciones WinForm, etc. Por lo tanto, el paradigma MVC proponía una solución a todas estas cuestiones, por lo cual Microsoft se embarco a lanzar su primer MVC soportado por su Framework.Net y con el tiempo ha seguido evolucionando a un producto mas acabado y pulido por ellos.</div><div><br /></div><div>Ahora la pregunta del millón es: debo de cambiar a este nuevo concepto de desarrollo web? lo que se me vendió como "lo ultimo y mejor" por muchos años para desarrollo web ya no lo es, y me lo quieren reemplazar por algo que ya existía en otras plataformas y ahora me quieren decir que es mejor? debo llorar o reír?</div><div><br /></div><div>Pues me tomare la libertad de responderme a mi mismo tomando como inicio un solo punto: los WebForms no han sido reemplazados ni descontinuados por Microsoft, por lo tanto el MVC solo representa una opcion diferente para el desarrollo de aplicaciones Web para atraer a una comunidad grande que apoya y trabaja sobre este patrón y para satisfacer las necesidades de un sector que aclamaba algo diferente.</div><div><br /></div><div>El modelo que propone el MVC esta mejor conceptualizado para contruir aplicaciones Web que los WebForms, es cierto, pero por esto no lo considero la panacea. Cuando veo la capa de las vistas de la pagina, en donde tengo que volver a recurrir a mi programacion "espaguettis", donde tengo que unir el HTML con el codigo fuente de la aplicacion para mapear mis variables, imprimir mis resultado, construir mis JS o utilizar un framework de ajax, pues siento que estoy volviendo al pasado otra vez en donde ahora solo se me obliga a separar mis tareas en diferentes lugares (lo que complica un poco el asunto si no estamos familiarizados con los MVC): ponme la lógica en este folder, ponme la base de datos aqui y despues has todo lo que quieras en esta pagina, tags de HTML, tags de programacion, javascript (si son necesarios), estilos, etc. En donde queda el RAD (Rapid Application Development) que me ofrece los WebForms? en donde queda mi multitudes de controles de servidor que hacen todo el trabajo pesado por mi? sacrificare mi productividad, mi rapidez en desarrollo, mi comodidad que me he venido acostumbrando y ganando durante todos estos años para volver a lo que tenia en el pasado y ya lo había dejado atrás... "el control".</div><div><br /></div><div>Lo de volver al pasado lo digo en forma literal ya que en el MVC seguiremos contando con el rico lenguaje C#, los recursos del framework.Net y muchas otras librerías mas que siempre han estado a nuestra disposición en esta plataforma.</div><div><br /></div><div>En resumen, no pongo en duda la superioridad del MVC para el desarrollo Web, pero tampoco le quito méritos a los WebForms con todo y sus defectos, seguirá siendo la mejor opción RAD y se seguirán haciendo aplicaciones robustas y estables como lo hemos estado haciendo por años, simplemente sera un asunto de preferencia utilizar uno u el otro y en algunos casos dependerá del proyecto que desearemos embarcarnos.</div><div><br /></div><div>Por lo menos si aconsejo que las personas que nunca habían conocido ningún lenguage de desarrollo web lo empiecen hacer desde el MVC porque solo así se puede conocer bien el funcionamiento y el mecanismo de las paginas Web en un contexto real. Luego utilizar los WebForms para sacar sus propias conclusiones, aunque este ultimo es mas fácil de aprender de entrada por su similitud al desarrollo de aplicaciones WinForms.</div>adminhttp://www.blogger.com/profile/13543933220990885985noreply@blogger.com1tag:blogger.com,1999:blog-3720495305544590742.post-13635197630936323342010-09-18T13:03:00.000-07:002010-09-18T13:31:36.041-07:00FreeBSD, Mono y FireBird .Net ProviderAl intentar correr un programa C# compilado en windows, el cual usa el .Net Provider para Firebird me arrojo el siguiente error:<br /><br /><span style="font-size:85%;"><span style="font-style: italic;">When the FbConnection.Open() method was called, one exception was raised:</span><br /><br /><span style="font-style: italic;">Unhandled Exception: System.TypeInitializationException: An exception was</span><br /><span style="font-style: italic;">thrown by the type initializer for FirebirdSql.Data.Common.Charset ---></span><br /><span style="font-style: italic;">System.ArgumentException: Encoding name 'shift_jis' not supported</span><br /><span style="font-style: italic;">Parameter name: name</span><br /><span style="font-style: italic;"> at System.Text.Encoding.GetEncoding (System.String name) [0x00000]</span><br /><span style="font-style: italic;"> at FirebirdSql.Data.Common.Charset.GetEncoding () [0x00000]</span><br /><span style="font-style: italic;"> at FirebirdSql.Data.Common.Charset..ctor (Int32 id, System.String name,</span><br /><span style="font-style: italic;">Int32 bytesPerCharacter, System.String systemName) [0x00000]</span><br /><span style="font-style: italic;"> at FirebirdSql.Data.Common.Charset.InitializeSupportedCharsets ()</span><br /><span style="font-style: italic;">[0x00000]</span></span><br /><br /><br />Esto se debe a que la dll del Provider de Firebird (FirebirdSql.Data.FirebirdClient.dll)<br />fue compilada con el Framework .Net de Windows y por lo tanto encapsula una serie de<br />CharSet que no existe en nuestro sistema operativo, no solo en FreeBSD, sino<br />tambien cualquier OS unix. Por suerte en la pagina oficial de FireBird estan dos<br />versiones de esta dll, una para .Net Windows, otra para Mono. Con esta desaparece el<br />error* pero me trae uno nuevo:<br /><br /><span style="font-size:85%;"><span style="font-style: italic;">Unhandled Exception: System.ArgumentOutOfRangeException: Index is less than 0 or more than or equal to the list count.</span><br /><span style="font-style: italic;">Parameter name: index</span><br /><span style="font-style: italic;">0</span><br /><span style="font-style: italic;"> at System.Collections.ArrayList.ThrowNewArgumentOutOfRangeException (System.String name, System.Object actual,</span><br /><span style="font-style: italic;"> System.String message) [0x00000] in :0</span><br /><span style="font-style: italic;"> at System.Collections.ArrayList.get_Item (Int32 index) [0x00000] in :0</span><br /><span style="font-style: italic;"> at System.Diagnostics.ProcessModuleCollection.get_Item (Int32 index) [0x00000] in :0</span><br /><span style="font-style: italic;"> at System.Diagnostics.Process.get_MainModule () [0x00000] in :0</span><br /><span style="font-style: italic;"> at (wrapper remoting-invoke-with-check) System.Diagnostics.Process:get_MainModule ()</span><br /><span style="font-style: italic;"> at FirebirdSql.Data.FirebirdClient.FbConnectionInternal.GetProcessName () [0x00000] in :0</span><br /></span><br /><br />En un sistema operativo basado en Linux nunca lo veremos este error, ya que las<br />funciones encapsuladas en el System.Diagnostics.Process hace un llamado a un<br />recurso propio del OS: "/PROC"<br /><br />En FreeBSD no viene habilitado por defecto a diferencia de Linux, asi que lo debemos<br />de activar agregando la siguiente lineas en el /etc/fstab :<br /><span style="font-style: italic;">proc /proc procfs rw 0 0</span><br /><br />Luego de reiniciar el sistema estara activado. Pero si no deseamos esperar a<br />reiniciar el sistema, pues montamos el proc directamente:<br /><br /><span style="font-style: italic;">mount -t procfs proc /proc</span><br /><br />Nuevamente probamos nuestro programa y funciona !<br /><br /><span style="font-style: italic;">*Nota: para los que le sirva la informacion, en Ubuntu 10 no me funciono el .Net Provider de Firebird para Mono,</span><br /><span style="font-style: italic;">ya que me dio otro mensaje de error buscando otro CharSet diferente (EUC-JP),</span><br /><span style="font-style: italic;">en este caso la solucion es un poco mas trabajosa, intentar de activar/registrar este</span><br /><span style="font-style: italic;">charSet en Ubuntu o compilar los fuentes del .Net Provider en Ubuntu y utilizar la dll generada,</span> <span style="font-style: italic;">esta ultima opcion fue la que yo tome para resolver el error.</span>adminhttp://www.blogger.com/profile/13543933220990885985noreply@blogger.com0tag:blogger.com,1999:blog-3720495305544590742.post-74480898960869027412010-09-02T16:17:00.000-07:002010-09-02T18:44:18.151-07:00Que cosas no puede hacer Firebird?Entre las primeras cosas que un experto de una particular base de datos se debe preocupar, son sus limitaciones, es decir, hasta donde puede llegar la misma.<br /><br />Obviamente Firebird tiene sus excepciones también, las cuales debemos de conocer bien al momento de embarcarnos en un proyecto.<br /><br />Firebird es una base de datos que no tiene de que envidiarle mucho a otras, es "casi perfecta", pero no quiero hablar de sus cualidades sino de sus carencias en este post, pero a decir verdad no tiene mucha cola que pisarle.<br /><br />En sentido general, las mas populares e importantes base de datos del mercado siempre carecen de una que otra cosa que quizas no sean del todo determinantes, pero entre este grupo de base de datos "elite", digase MS SQL Server, Oracle, DB2, PosgreSQL y MySQL (aunque no me gustaria agregar a la lista esta ultima), Firebird carece de dos grandes prestaciones que son vitales en ambientes corporativos y/o críticos que nunca podrian faltar:<br /><br />- Conexiones seguras: se crean para que nuestras aplicaciones transmitan su informacion cifradas (encriptadas), despreocupándonos del temor que intrusos puedan interceptar nuestra informacion por la red para su provecho ya que no podrían descifrar los datos capturados.<br /><br />- Clustering: es determinante para tener una "alta disponibilidad" en nuestros sistemas críticos.<br /><br />La pregunta seria: nuestros proyectos podrían ser viables sin estas dos características "casi" elementales en entornos donde la seguridad y la disponibilidad son las prioridades principales?<br /><br />Lamentablemente el tema del clustering quizas sera un apartado que los desarrolladores de FireBird nunca tocaran, ya que uno de los propósitos fundamentales del proyecto FireBird es de disponer de una base de datos libre de mantenimiento y de facil uso. Las implicaciones de tener un servicio de base de datos sobre un cluster lo hace una tarea ardua de llevar a cabo (configuración, instalación, monitoreo, etc.). El tema de las conexiones seguras si se podría abordar en un futuro, pero por los momentos no tenemos noticia de eso.adminhttp://www.blogger.com/profile/13543933220990885985noreply@blogger.com0tag:blogger.com,1999:blog-3720495305544590742.post-89772504588771329182010-08-27T08:29:00.000-07:002010-08-27T11:30:11.274-07:00Instalar Firebird 2.1.3 en FreeBSD 8La ultima versión de Firebird en la lista de los ports de Freebsd8 es la 2.0.3, sin embargo la ultima versión estable de firebird liberada es la 2.1.3 ya hace casi un año. La verdad es que no entiendo porque han tardado tanto en portar esta ultima versión y quizas no lo hagan por mucho mas tiempo, pero no puedo seguir esperando para poderla utilizar.<br /><br />Teóricamente utilizando los fuentes de la ultima versión de firebird puedo compilarlo en FreeBSD asi que vamos a obra:<br /><br />Necesitamos descargar e instalar todas las dependencias de Firebird manualmente, pero cuales son estas? pues las dependencias de la versión 2.0.3 son las mismas que la 2.1.5, asi que solo visualizamos el paquete de la 2.0.3:<br /><br /><span style="font-style: italic;">B-deps: autoconf-2.62 autoconf-wrapper-20071109 automake-1.9.6_3 automake-wrapper-20071109 bison-2.4.1,1 gettext-0.17_1 gmake-3.81_3 icu-3.8.1_2 libiconv-1.13.1 libtool-2.2.6a m4-1.4.13,1 perl-5.8.9_3</span> <span style="font-style: italic;">R-deps: icu-3.8.1_2</span><br /><br />Si ya tenemos el servidor 2.0.3 instalado con anterioridad, pues nos ahorramos esto, solo desintalamos el servidor y el cliente con<span style="font-style: italic;"> pkg_delete</span><br /><br />Descargamos el código fuente de la versión 2.1.3 a nuestro equipo, este viene empaquetado en formato tar.bz2<br /><br />Una vez descomprimido en nuestro equipo comenzamos a instalar: <span style="font-style: italic;">make && make install && make clean</span><br /><br />Nuestro primer error:<br /><br /><span style="font-style: italic;">Error expanding embedded variable.</span><br /><br />Esto se debe a que debemos compilar los fuentes con: <span style="font-style: italic;">gmake && gmake install. </span><br /><br />Siguiente error:<br /><br /><span style="font-style: italic;">vi.c:919:74: error: macro "__weak_reference" requires 2 arguments, but only 1 given vi.c: In function 'get_alias_text': vi.c:919: error: expected declaration specifiers before '__weak_reference' vi.c:924: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token vi.c:954: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token vi.c:999: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token vi.c:1055: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token vi.c:1104: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token vi.c:919: error: parameter name omitted vi.c:1125: error: expected '{' at end of input </span> <span style="font-style: italic;">...</span><br /><span style="font-style: italic;">`/usr/home/martin/downloads/Firebird-2.1.2.18118-0/extern/editline/src' gmake[4]: *** [all-recursive] Error 1 gmake[4]: Leaving directory `/usr/home/martin/downloads/Firebird-2.1.2.18118-0/extern/editline' gmake[3]: *** [all] Error 2 gmake[3]: Leaving directory `/usr/home/martin/downloads/Firebird-2.1.2.18118-0/extern/editline'</span><br /><br />En este punto debemos de compilar el firebird sin utilizar esta librería "editline", al parecer no funciona bien FreeBSD.<br /><br />./configure --without-editline<br />gmake<br />gmake install<br /><br />Siguiente error:<br /><br /><span style="font-style: italic;">mkdir: /usr/local/firebird/UDF: File exists</span> <span style="font-style: italic;">find: ./firebird/examples/v5: No such file or directory</span> <span style="font-style: italic;">Example files have not been built!</span> <span style="font-style: italic;">chmod: examples/*.fdb: No such file or directory</span> <span style="font-style: italic;">gmake[2]: Leaving directory `/usr/home/erick/Firebird-2.1.3.18185-0/gen'</span><br /><br />Realmente no es un error, simplemente son los últimos mensajes que aparecen después de la instalación lo cual no me convence, es como si terminara a medias. Revisando el script que realiza la instalación <span style="font-style: italic;">"install.sh"</span> señala que ciertamente esto es todo!<br /><br />Los mensajes que presenta de que no pudo encontrar algunos archivos, realmente no es nada importante ya que se trata algunos archivos de ejemplos, asi que procedo a probar mi servidor después de recargar los servicios<span style="font-style: italic;"> inetd.</span><br /><br />Intentando conectarme desde una aplicación remota no logro establecer la conexion sin obtener algun mensaje de error claro. En el mismo servidor Freebsd verifico si el puerto 3050 de firebird esta escuchando con el comando <span style="font-style: italic;">"sockstat"</span> y todo esta en su lugar. Proceso a utilizar el <span style="font-style: italic;">isql </span>y desde que intento de ejecutar el comando veo el siguiente mensaje de error:<br /><br />/libexec/ld-elf.so.1: Shared object "libicuuc.so.30" not found, required by "libfbembed.so.2.1"<br /><br />Al parecer algunas librerías no se copiaron en donde deberían de estar en el proceso de instalación, asi que lo hago manual ya que todas ellas se encuentran en el firebird compilado.<br /><br />Dentro de la carpeta de los fuentes se crea una carpeta nueva llamada "gen", aqui se deposita el binario del servidor, dentro de la carpeta "lib" estan nuestros archivos, procedemos a copiarlos en las rutas que son necesitados:<br /><span style="font-style: italic;">cp -v libicu* /libexec/</span> <span style="font-style: italic;">cp -v libicu* /usr/local/firebird/lib</span><br /><br />Volvemos a probar<span style="font-style: italic;"> isql</span> y este accede sin problemas, ahora tratare de conectar mi aplicación externa a mi nuevo servidor y se produce un nuevo mensaje de error:<br /><br /><span style="font-style: italic;">CHARACTER SET ISO8859_1 is not installed.</span><br /><br />En caso de que nuestra aplicación y base de datos no este usando ningun <span style="font-style: italic;">"character set"</span>, probablemente no surgiría ningún mensaje de error.<br /><br />Los diferentes <span style="font-style: italic;">character set</span> estan registrados en un archivo llamado <span style="font-style: italic;">fbintl.conf</span>, al revisar mi instalacion dicho archivo no existe, pero si esta en el compilado, entramos al forder <span style="font-style: italic;">gen/firebird/intl</span> procedemos a copiarlo:<br /><br /><span style="font-style: italic;">cp -v fbintl.conf /usr/local/firebird/intl</span><br /><br />Nuevamente entro a mi aplicación externa y pruebo... pasa la prueba ! hago algunas inserciones, modificaciones y consultas complejas, todo en orden :)<br /><br />Sin poseer la instalación portable oficial para FreeBSD se hace muy tedioso el aventurarnos a instalar un paquete por medio de los código fuentes, ya que nos pueden mostrar un sin fin de inconvenientes en el proceso.adminhttp://www.blogger.com/profile/13543933220990885985noreply@blogger.com1tag:blogger.com,1999:blog-3720495305544590742.post-788014428748719872010-08-25T12:35:00.000-07:002010-08-27T11:24:55.930-07:00Cual es el mejor servicio webhosting en la internet?Hace algunos años atrás buscaba un buen servicio de hosting compartido para alojar unos pocos proyectos, deseaba buenas prestaciones (features) y aceptable precio, busque mucho por la internet y la verdad que me encontré con todo un mundo de publicidad de empresas que ofrecen hosting, muchas tentativas y otras no tanto, una situación muy difícil de elegir entre tantas jugosas opciones.<br /><br />Entre todas las posibles empresas de webhosting del momento habían tres que ofrecían las más tentativas prestaciones, y me decidí por una de ella ya que esta mostraba casualmente un cuadro de comparación de ventajas con relación a sus más cercanos competidores y definitivamente era la que ofrecía más a casi el mismo precio: <span style="font-weight: bold;">IXWEBHOSTING.COM</span><br /><br />Espacio ilimitado en disco !!!<br />Trafico de ancho de banda ilimitado !!!<br />Alojamientos de dominios ilimitados !!!<br />IP publicas asignadas !!!<br />Registro de dominios gratis !!!<br /><br />Sobre todo quería contratar un paquete Windows que son más caros que los convencionales (Linux)... después de dos años el resultado fue catastrófico! Cometí un error de principiantes, me deje llevar de un espejismo que ofrecía todo a menor costo, pero lo barato sale caro.<br /><br />El problema de IXwebhosting al igual que otras compañías de hospedaje del mismo calibre, es que ofrecen tantas maravillas a un precio tan accesible y poseen una agresiva publicidad que les favorece en la internet, lo que trae como resultado una superpoblación en sus servidores de servicio compartido, esto causa que tengamos fluctuaciones constantes en el servicio, como la pagina no responde en momentos determinados, cargas demasiadas lentas por presentar cualquier pagina hosteada, gran lag de respuesta, sobre todo en páginas con conexión a base de datos. Recuerdo que cuando me conectaba al sqlmanager del ms-sqlserver, podía ver la lista completa de todas las base de datos que tenía el servidor en cuestión, habían centenares y centenares de base de datos, esto me ponía los pelos de punta, para hacer un backup de una base de datos de 100mb dure casi una hora.<br /><br />Esta experiencia me ayudo a madurar al momento de seleccionar un hosting:<br /><br />1. No dejarnos llevar por las prestaciones y la economía, la mayoría que ofrecen "mucho" lo dan a menor calidad<br />2. Cuando tengamos una posible empresa que deseemos contratar sus servicios, debemos visitar websites que se dedican a valorar y posicionar las compañías de hospedaje, algunos no son objetivos, pero la mayoría sí. Busquemos siempre los website con review de los clientes y detengamosno a leerlos. Solo tenemos que escribir en google "hosting reviews"<br />3. Por lo general los mejores servicios provienen de compañía de hospedaje que ofrecen limitaciones reales en sus prestaciones.<br />4. No contratar servicios de revendedores, irnos directamente con la empresa que provee el servicio. Los revendedores por lo general contratan los servicios más económicos de las empresas de hospedaje saturadas<br />5. Contratar servicios de empresas norteamericanas para los que vivimos en occidente (continente americano y Europa occidental). Los estándares de calidad del servicio son más exigente allí, precios más razonables, personal técnico mas capacitados, lag de respuesta en sus servidores menores y un etcétera de beneficios que casi ningún país se le puede igualar.<br /><br />Basado en mis investigaciones, experiencia personal y de conocidos no recomiendo los siguientes website:<br /><br />ixwebhosting<br />iweb<br />godaddy<br />yahoo<br />mihosting<br />bluehosting<br />lunarpages<br />dreamhost<br /><br />Y me gustaría mencionar una larga lista de hosting muy populares con supuestos servicios ilimitados de disco, tráfico y otros menesteres mas. Aunque algunos pocos tengan una buena crítica, podemos caer en la mala suerte de estar en uno de sus servidores sobrepoblados o tener problemas con una pronta respuesta de soporte. Entre estas compañías de hospedaje de "ilimitadas prestaciones" me gustaría solo sacar una que al parecer es la mejorcita hostgator.com<br /><br />Debemos estar claro que este marketing de "Ilimitadas prestaciones" no son reales, todo tiene su límite, sencillamente saben que más del 90% de sus clientes nunca almacenaran más de 500 megas entre pagina web y base de datos, el real problema para estas compañías es la carga de CPU, ya que el acceso dinámico a base de datos y una considerable cantidad de visitas de muchos website simultáneos en un mismo equipo trae como consecuencia un alto consumo de recursos que relentiza todas las operaciones. Muchas veces estas compañías sacan de circulacion algunos website con la excusa de "no están bien programados / desarrollados" porque generan un consumo excesivo de recursos, recomiendan a los dueños de los mismos a que reformulen su website o contraten un servicio superior como por ejemplo un "servidor dedicado".<br /><br />Existen muchas personas que prefieren contratar hosting locales, es decir, en su pais de origen, pero nunca he compartido esta opinion por algunos motivos:<br /><br />1. Muchos son revendedores<br />2. Soporte mediocre<br />3. Pocas prestaciones<br />4. Generalmente los precios de las companias locales duplican y triplican a los precios reales norteamericanos, ya que los costos de los servicios locales para mantener un servidor activo con una conectividad al internet de altas prestaciones 24/7 son muchos mas elevados y en algunos casos los precios son "abusivos"<br /><br />En este ultimo punto me gustaria exponer un "descarado" caso en mi pais, La compañia mas grande de telecomunicaciones local de nombre<span style="font-weight: bold;"> "Codetel"</span>, entre su amplio paquete de servicios ofrece tambien alojamiento web, pero las prestaciones y el precio que tienen me parece una falta de respeto total a mi inteligencia y la de cualquier ser humano que trabaja en este medio tecnologico. Veamos,<a href="http://www.codetel.com.do/contenido.aspx?id=226"> de su propia pagina oficial extraigo los siguientes datos:</a><br /><br />Servidor dedicado:<br />1 ip fija<br />80gb de disco "SATA"<br />1gb de memoria ram<br />Trafico ilimitado (por lo menos algo bueno)<br />100 cuentas de correos de maximo 100mb cada una<br />SQL Server - 2GB de datos y capacidad para crear 100 base de datos<br />Windows 2003 server<br /><br />Aunque no señalan el tipo de equipo que es el servidor, dedusco que por tener un disco SATA y no SCSI, con tan solo 1gb de memoria, con una version vieja de SQL Server, no se trata de un equipo nada moderno y rapido, ni si quiera de un servidor serio, creo que cualquier computador casero se mete en los bolsillos a este "servidor".<br /><br />Precio: para contratar el servicio hay que pagar una "activacion" por un costo de 340 dolares, y una renta mensual de 340 dolares, asi que el primer año con nuestro servicio sera de 4420 dolares !!! es acaso un chiste?<br /><br />Ahora veamos el alojamiento compartido "shared hosting" que tienen:<br /><br />Espacio en disco 250mb (basico) y 500mb (empresarial) !!!<br />Cuentas de correo 20 (basico) y 60 (empresarial) de 10mb cada una<br />windows 2003 server<br />SQL Server no tiene para ningun plan, pero el plan empresarial puede contratar el servicio de modo opcional<br /><br />Precios: pago por activacion 23 dolares (para ambos planes), renta mensual de 18.5 dolares plan basico y 23 dolares plan empresarial. Nuestro primer año de servicio costara 245 dolares (basico) y 300 dolares (empresarial). Si queremos añadir soporte de base de datos al plan empresarial debemos pagar pero no esta claro cuanto dinero mas, pero estoy seguro que no es poco. Creo que solo con el pirrico espacio en disco y el precio anual que se debe pagar es un descaro de los mas vil.<br /><br />Todo esto sin mencionar que a presar de ser la compañia mas grande de telecomunicaciones del pais es la que mas fluctua con el servicio de internet, incluso las caidas de este servicio han estado varias veces presente <a href="http://www.diariolibre.com.do/noticias_print.php?id=207572&s=53q7h6qq9t54s4ogop4xrswj5c7z7vgc">en la prensa local como noticia</a>, por lo tanto no creo que tengamos garantizado una disponibilidad de 24/7/365 de nuestro hospedaje contratado con ellos.adminhttp://www.blogger.com/profile/13543933220990885985noreply@blogger.com0tag:blogger.com,1999:blog-3720495305544590742.post-52691536079032544492010-08-22T11:54:00.000-07:002010-09-02T19:30:19.129-07:00Consultas frizadas / colgadas en Firebird 2.1La verdad que este es un suceso lo he visto en repetidas ocasiones, lanzo una simple o compleja consulta SQL que con anterioridad he lanzado obteniendo los resultados deseados, pero un dia la misma consulta se cuelga en un limbo interminable. Que sucede? no he realizado ningun cambio de estructura en las tablas en cuestion, quizas existen mas registros que otros dias, pero no sera este el motivo?... Por supuesto que no... El problema es "corrupción en la base de datos" !!!<br /><br />Por lo general existe una tabla corrupta para ser especifico, haciendo una simple consulta y recorriendo todos los registros de cada una de las tablas en cuestion, daremos con una que no permitira recorrer todos los registros, quedándose colgada.<br /><br />La unica solucion a este problema por suerte es la mas sencilla de todas, hacer un backup / restore de la base de datos. Todavia no me he topado con el caso que me lleve a soluciones mas extremas.<br /><br />Como observación, he visto que este tipo de corrupción mayormente aparece cuando intento de insertar cantidades masivas de registros a múltiples tablas.adminhttp://www.blogger.com/profile/13543933220990885985noreply@blogger.com0tag:blogger.com,1999:blog-3720495305544590742.post-34374016003602369122010-08-22T08:18:00.000-07:002010-08-27T11:25:41.083-07:00Las empresas de software internacionales desplazan a las empresas dominicanas en su propia tierra<span style="font-size:85%;"><span style="font-family:arial;">Cuando se ven artículos en periódicos digitales y/o nacionales con los títulos “</span><a style="font-family: arial;" href="http://www.diariolibre.com/noticias_det.php?id=248633">Sube comercio entre Costa Rica y República Dominicana</a><span style="font-family:arial;">”, “</span><a style="font-family: arial;" href="http://7dias.com.do/app/article.aspx?id=76401">Compañías de software de Costa Rica y República Dominicana realizan ronda de negocios</a><span style="font-family:arial;">”, “</span><a style="font-family: arial;" href="http://www.cei-rd.gov.do/leer_noticia.asp?id=495">Presidente Leonel Fernández lanza industria software</a><span style="font-family:arial;">”, y se conoce el trasfondo de todo esto, uno se siente que le están tomando el pelo y pasándolo por idiota, pero para los que no están muy empapados de la situación, pues aquí les va: </span></span><o:p style="font-family: arial;"></o:p> <h2 style="text-indent: 24pt;font-family:arial;"><span style="font-weight: normal;font-size:85%;" lang="ES" >Al leer estos artículos a simple vista pensamos que se trata de buenas iniciativas y que las compañías de software dominicanas conocerán nuevos mercados internacionales para expandirse y crecer, pero si investigamos un poco nos damos cuenta que es absolutamente todo lo contrario.<o:p></o:p></span></h2> <h2 style="text-indent: 24pt;font-family:arial;"><span style="font-weight: normal;font-size:85%;" lang="ES" >El gobierno dominicano desde hace algunos pocos años atrás se ha empeñado en convertir al país en un <span style="font-weight: bold;">“gran exportador de tecnología”</span> tomando como ejemplos países pobres que lo han logrado (La India), pero tomaron el rumbo equivocado. En vez de reunir a todas las empresas locales, otorgarles incentivos y darles nuevas oportunidades de negocios internacionales lo que ha hecho es traer empresas extranjeras a que se instalen en el país dándole todas las facilidades habidas y que estas empresas absorban el mercado nacional. Todas estas empresas llamadas “dominicanas” que vemos que se reúnen en los encuentros con el gobierno, realmente son todas de capital extranjero con pocos años en el país, y las que se pueden decir que son dominicanas 100%, solo son asociados de estas empresas extrajeras para que representen sus productos en el territorio dominicano.<o:p></o:p></span></h2> <h2 style="text-indent: 24pt;font-family:arial;"><span style="font-weight: normal;font-size:85%;" lang="ES" >La idea “sana” del gobierno es <span style="font-weight: bold;">generar empleos locales</span> y <span style="font-weight: bold;">crear zonas francas de software para exportar productos tecnológicos</span> “locales” al extranjero produciendo así entradas de divisas al país. Pero la verdad es que esta idea del gobierno es totalmente errónea, no se si es que tan muy mal asesorados o como siempre hay algún funcionario haciéndose rico con todo esto. <o:p></o:p></span></h2> <h2 style="text-indent: 24pt;font-family:arial;"><span style="font-weight: normal;font-size:85%;" lang="ES" ><span style="font-weight: bold;">Primero</span>, una empresa desarrolladora de software nunca cuenta con una planilla gigante de empleados (desarrolladores / programadores), en cantidad de empleados se le puede considerar una empresa pequeña o en escasos casos mediana. Es decir, que los empleos a producirse serán muy mínimos y por lo general muchas de estas empresas ya cuentan con su personal capacitado traídos del extranjero, generando así muy pocos nuevos empleos. <o:p></o:p></span></h2> <h2 style="text-indent: 24pt;font-family:arial;"><span style="font-weight: normal;font-size:85%;" lang="ES" ><span style="font-weight: bold;">Segundo</span>, todas las ganancias generadas por estas empresas, su gran grueso son repatriadas, es decir, las famosas divisas no se quedan en el país, solo somos un puente. El dinero invertido localmente son gastos menores, como pago de local, pago de una pequeña nomina, suministros y otros servicios marginales.<o:p></o:p></span></h2> <h2 style="text-indent: 24pt;font-family:arial;"><span style="font-weight: normal;font-size:85%;" lang="ES" ><span style="font-weight: bold;">Tercero</span>, los productos a comercializar tampoco son locales, la gran mayoría de los software ya fueron acabados en su país de origen, solo hacen pequeños ajustes para “climatizar” sus productos en el país para ser vendidos.<o:p></o:p></span></h2> <h2 style="text-indent: 24pt;font-family:arial;"><span style="font-weight: normal;font-size:85%;" lang="ES" ><span style="font-weight: bold;">Cuarto y mas importante</span>, terminan de hundir mas de lo que están a las empresas locales, ya que se encuentran en una competencia desleal, compiten con empresas de mucho mas capital y con respaldo del gobierno que como si no fuera poco les entregan grandes proyectos tecnológicos gubernamentales con el pretexto de “dinamizar” este nuevo renglón productivo y por tratarse de empresas con mas historial de éxito y experiencia.<o:p></o:p></span></h2> <h2 style="text-indent: 24pt;font-family:arial;"><span style="font-weight: normal;font-size:85%;" lang="ES" ><o:p> Es increíble como el gobierno convierte un suceso de impacto negativo en una noticia positiva disfrazando todo con un juego de palabras, es sorprendente lo que puede hacer la propaganda partidista gubernamental :)<br /></o:p></span></h2> <h2 style="text-indent: 24pt;font-family:arial;"><span lang="ES" style="font-size:85%;">Realidad de las empresas de software dominicanas<o:p></o:p></span></h2> <h2 style="text-indent: 24pt;font-family:arial;"><span style="font-weight: normal;font-size:85%;" lang="ES" >Las empresas desarrolladoras de software (EDF) dominicanas de gran envergadura ya “casi” no existen. Los principales clientes de las grandes EDF dominicanas eran algunos bancos, empresas grandes tipo consorcios, multinacionales y sobre todo el gobierno, ya que son los únicos que podían costear proyectos de cifras millonarias y pagar por un servicio de calidad. Pero por la difícil situación económica que se vio el país en los años de la hiperinflación y otros factores similares, estos clientes comenzaron a invertir mas en reforzar su personas “IN HOUSE”, y limitar mas las asesorias, comprar productos extranjeros acabados, obligando así a las EDF a desaparecer o convertirse en empresas mas pequeñas con otras orientaciones. Solo salvándose aquellas que mantuvieron al gobierno de su mano (algunos funcionarios públicos son socios o beneficiarios de estas) y recibiendo proyectos grandes. <o:p></o:p></span></h2> <h2 style="text-indent: 24pt;font-family:arial;"><span style="font-weight: normal;font-size:85%;" lang="ES" ><o:p> </o:p></span></h2> <h2 style="text-indent: 24pt;font-family:arial;"><span style="font-weight: normal;font-size:85%;" lang="ES" >Las únicas EDF que continuaron con su trabajo habitual fueron las pequeñas y mediana que siempre han comercializado software de baja gama, de bajo y mediano costo <span style=""> </span>con productos sin altos atributos de calidad y con un soporte mediocre. Pero también siempre han exisistido los desarrolladores informales, que trabajan por su cuenta, llamados también “<span style="font-weight: bold;">freelance</span>”, los cuales se han beneficiado mucho por la falta de un mercado real de EDF en el país.<o:p></o:p></span></h2><h2 style="text-indent: 24pt;font-family:arial;"><span style="font-weight: normal;font-size:85%;" lang="ES" >Obviamente que en un país en donde el sector productivo del software esta casi diezmado, en donde no existen grandes competidores dominicanos y no hay un apoyo por parte del gobierno, pues surge una gran oportunidad de negocio para las empresas extranjeras. <span style=""> </span><o:p></o:p></span></h2> <h2 style="font-family:arial;"><span style="font-weight: normal;font-size:85%;" lang="ES" ><o:p> </o:p></span></h2> <h2 style="font-family:arial;"><span lang="ES" style="font-size:85%;">La pirámide de las EDF en la republica dominicana queda así en la actualidad<o:p></o:p></span></h2> <h2 style="font-family:arial;"><span style="font-weight: normal;font-size:85%;" lang="ES" >Aquí clasifico en orden categórico los tipos de EDF según sus ingresos:<o:p></o:p></span></h2> <h2 style="font-family:arial;"><span style="font-weight: normal;font-size:85%;" lang="ES" ><span style="font-weight: bold;">En la cima: Empresas extranjeras,</span> obtienen proyectos millonarios por parte del gobierno gracias a licitaciones que están hechas a la medidas para ellos (los términos de las licitaciones exigen experiencia demostrable en proyectos “mega gigantes” similares, ingresos millonarios, etc.), tienen productos acabados de alta calidad, pueden presentar propuestas millonarias a corporaciones grandes nacionales gracias a su portafolio de trabajo de su país de origen.<o:p></o:p></span></h2> <h2 style="font-family:arial;"><span style="font-weight: normal;font-size:85%;" lang="ES" ><span style="font-weight: bold;">Muy por debajo: EDF medianas y pequeñas</span>, luchan día a día por seguir existiendo, no pueden ofrecer productos y servicios de calidad por poseer personal muy rotativos ya que no pueden pagar sueldos suficientemente remunerados, muchos de ellos poseen productos acabados extranjeros que a veces no conocen mucho y que solo buscan vender e implementar a duras penas. Se sostiene el negocio gracias a una clientela fija (no muy grande) a los cuales apenas dan abasto para darle un servicio medianamente.<o:p></o:p></span></h2> <h2 style="font-family:arial;"><span style="font-weight: normal;font-size:85%;" lang="ES" ><span style="font-weight: bold;">En el ultimo escalafón pero pisándole los talones a los anteriores: los freelance</span>, grupo de individuos particulares que se han beneficiado del inestable mercado de software local, para satisfacer a los clientes de empresas pequeñas y medianas que no encuentran viable comprar un producto de una empresa extrajera por su alto costo, ni están por enliarse con los enliados EDF medianas y pequeñas, ya que los freelance pueden ofrecer un soporte mas personalizado y rápido por un precio igual o mas económico.<o:p></o:p></span></h2>adminhttp://www.blogger.com/profile/13543933220990885985noreply@blogger.com0tag:blogger.com,1999:blog-3720495305544590742.post-5743215572873619382008-08-23T15:16:00.000-07:002010-08-27T11:27:18.602-07:00Choques de horarios en SQL ServerEl problema era el siguiente: para el desarrollo de un sistema que controla los horarios de clases, los posibles choques de horarios y aulas que pueden existir entre diferentes actividades, es decir, saber cuando se programe el calendario de una actividad no choque con otra actividad ya que esta otra pueda estar usando el mismo aula, a la misma hora en el mismo dia.<br /><br />Por ejemplo, si ingreso al sistema una actividad "A" que son los lunes, miercoles y viernes de 4pm a6pm del 1 de agosto al 15 de agosto utilizando el aula ABC, al momento que se intente de ingregar una actividad "B" que sean los martes, miercoles y sabados, de 5pm a 7pm utilizando el aula ABC del 10 al 20 de agosto no me permita hacerlo, ya que para la actividad "A" los miercoles cochan una hora en especial (coinciden de 5pm a 6pm) y comparten comparten 5 dias en comun (del 10 al 15 de agosto) y dentro de esos 5 dias hay un miercoles de por medio.<br /><br />En pocas palabras la sentencia SQL deseada debe tomar encuenta todas estas variables: aula, dia, horas, fechas de duracion de los cursos y determinar si todas estas variables coinciden en algun momento por mas pequeña que sea la coincidencia (el choque).<br /><br />Googleando un poco no encontre nada, absolutamente nada que me diera una idea, asi que me puse mano a la obra y aqui esta un store procedure que logra esto. El secreto esta en determinar dichos choques al momento de que definimos cada uno de los bloque de dias-horas por separados.<br /><br />Yo poseo una tabla por cada elemento: Aulas, dias, actividad (descripciones de las diferentes actividades), actividad-calendario-encabezado (donde asigno la actividad y la fecha de duracion) y actividad-calendario-detalle (donde asigno los dias, el aula y las horas a cada renglon)<br /><br />La horas debe ser en formato militar, es decir 12, 13, 14, etc., en vez de usar 12pm, 1pm, 2pm. De esta forma podemos crear el campo de hora como tipo numeric(4,3) para lograr nuestros objetivos.<br /><br /><span style="font-style: italic;">CREATE PROCEDURE [dbo].[sp_horario_aula_choque]</span><br /><span style="font-style: italic;"> @dia tinyint,</span><br /><span style="font-style: italic;"> @aula int,</span><br /><span style="font-style: italic;"> @ini numeric(4,2),</span><br /><span style="font-style: italic;"> @fin numeric(4,2),</span><br /><span style="font-style: italic;"> @fini datetime,</span><br /><span style="font-style: italic;"> @ffin datetime</span><br /><span style="font-style: italic;"> </span><br /><span style="font-style: italic;">AS</span><br /><span style="font-style: italic;">BEGIN</span><br /><br /><span style="font-style: italic;"> SET NOCOUNT ON;</span><br /><br /><span style="font-style: italic;"> select * from dbo.vw_horario_aula_choque where aula_id = @aula and dia_id = @dia and </span><br /><span style="font-style: italic;"> ((@ini >= det_hini and @ini <> det_hini and @fin <><br /><span style="font-style: italic;"> (@ini <= det_hini and @fin >= det_hfin)) and </span><br /><span style="font-style: italic;"> ((@fini >= enc_fhinicio </span><br /><span style="font-style: italic;"> and @fini <= enc_fhfinal) or (@ffin > enc_fhinicio and @ffin <= enc_fhfinal)</span><br /><span style="font-style: italic;"> or (@fini <= enc_fhinicio and @ffin >= enc_fhfinal))</span><br /><span style="font-style: italic;">END<br /><br /></span></span><span><span>vw_horario_aula_choque es una vista que contiene la relacion de todas las tablas ya mencionadas.<br /><br />Si el store procedure devuelve algun resultado existe un choque y este sera lo que nos presentara el SP.</span></span><span style="font-style: italic;"><span style="font-style: italic;"><br /><br /></span></span>adminhttp://www.blogger.com/profile/13543933220990885985noreply@blogger.com1tag:blogger.com,1999:blog-3720495305544590742.post-38418077900304916622008-04-17T06:44:00.000-07:002010-08-27T11:26:10.441-07:00La tecnologia como base fundamental de una empresa<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgs6CAJ9XarY9qo2vrCmmQmpROrQ24EjIs7MK14p966vEBUWYfi1C1AqbCopWJigiQvZY_TQ02IQvid_PcYpmq_mrXsaWQKCPEn-84dfOJueXyIIQZMffKd19gBWjt-oyqqKudnA5Qo10N3/s1600-h/techno_.JPG"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgs6CAJ9XarY9qo2vrCmmQmpROrQ24EjIs7MK14p966vEBUWYfi1C1AqbCopWJigiQvZY_TQ02IQvid_PcYpmq_mrXsaWQKCPEn-84dfOJueXyIIQZMffKd19gBWjt-oyqqKudnA5Qo10N3/s320/techno_.JPG" alt="" id="BLOGGER_PHOTO_ID_5190242415432613394" border="0" /></a>En la actualidad la tecnología se ha convertido en la base fundamental del éxito de casi cualquier empresa organizada, una buena aplicación y automatización informática de casi todos los procesos internos pueden dar como resultado una alta calidad de los servicios y productos producidos, una precisa toma de decisión y un absoluto control de todo lo que pasa en la empresa ayudando así detectar cualquier carencia o necesidad a ser mejorada en los procesos o en los empleados.<br /><p class="MsoNormal"><span lang="ES-DO"><br /></span></p><p class="MsoNormal"><span lang="ES-DO">Una empresa con un alto grado de automatización informática es un sinónimo de calidad y profesionalismo. Existen tipo de empresas que por su naturaleza, la dependencia del factor tecnológico es critico en los días de hoy, como por ejemplo, los bancos, grandes supermercados, negocios de una alta concurrencia de ventas o movimientos, estas empresas mientras mas perfeccionado tienen el elemento tecnológico, mas grande es el control de sus operaciones y mas precisa sus acciones a tomar para mejorar el servicio y ser mas productivos. En cambio existen otras empresas que por su naturaleza, la dependencia del factor tecnológico no es tan fuerte que a veces carecen del mismo, ignoran de su importancia y creen llevar el control eficientemente con rudimentarias técnicas de medición. Pero si de verdad estas empresas se comienzan a convertir en una verdadera maquinaria de producción, comienza a expandirse, se encontrara con la realidad absoluta que para seguir compitiendo y no desplomarse, es ir de la mano con la tecnología.<br /><br />En los países desarrollados, principalmente los Estados Unidos, casi todas las empresas basan toda su confianza en la automatización informática de todos sus procesos, es su pilar principal. Casi todos los servicios ofrecidos directamente a los clientes pueden sostenerse por medios informáticos y más aun con el auge de la Internet. Desde esta ultima casi cualquier empresa puede publicar sus servicios, captar mas clientes, darle un plus adicional a la calidad de sus servicios, establecer directamente oportunidades de negocio y un sin fin de beneficios.<br /><br />Para establecer una estructura ideal informática para controlar todos los procesos de la empresa y para que estos mismos procesos puedan estar conectados entre si por un medio tecnológico y llevar un continuo desarrollo ininterrumpido de mejoramiento es necesario tener una autonomía e independencia de todos los software y hardware, es decir, que no estén en la tutela de terceros, sino por la misma empresa. Solo así se puede tener un total dominio y flexibilidad para hacer e implementar todo lo que se desee libremente. A parte de esto, el personal técnico informático completo debe ser propio y no externo, solo así se puede garantizar una constante ampliación de los sistemas, un constante desarrollo y mejoramiento de los procesos y por ende un mayor crecimiento en la productividad.<br /><br />En este sentido he categorizado a las empresas según el grado de tecnología aplicada:<br /><br /><span style="font-weight: bold;"> Tipo A - Características.</span><br /><br />1. Son empresas que tiene un nivel tecnológico muy alto.<br />2. Autonomía - Autodependencia: Todo lo concerniente a software y hardware son administrado por personales propio de la empresa, el hardware (servidores de todas las índoles) se encuentran físicamente en las instalaciones de la empresa.<br />3. El 90% o mas de los procesos están automatizados por medios de sistemas informáticos.<br />4. Todos los procesos automatizados pueden comunicarse entre si en un sistema informático común. Aunque existen procesos que por su naturaleza nunca se comunicaran con otros, pero si en algún momento dado esto pueda ocurrir, no pueden existir barreras técnicas que lo puedan impedir.<br />5. Servicios en línea: (en caso de que la naturaleza del negocio de la empresa aplique), todos sus servicios o productos puedan publicarse vía Internet e interactuar directamente con los clientes, poder realizar operaciones o transacciones que puedan afectar directamente los sistemas informáticos internos, que se pueda asistir a un cliente por medio de la Internet, entre otras.<br /><br /><span style="font-weight: bold;"> Tipo B - Características.</span><br /><br />1. Son empresas que tiene un nivel tecnológico alto o medio.<br />2. autonomía media: Tienen personal técnico informático, pero dependen de terceros para realizar algunas tareas. No todos los servidores están o pertenecen a la empresa (por ejemplo los webhosting contratados), algunos o todos los sistemas informáticos desarrollados por terceros.<br />3. entre el 50% al 90% de los procesos automatizados por medios informáticos.<br />4. No todos los procesos automatizados pueden ser conectado entre si, porque están desarrollados en plataformas tecnológicas diferentes (base de datos diferentes, lenguajes de programación diferentes, etc.), no existe un sistema informático base que conjugue todos los procesos de manera automática.<br />5. Servicio en línea: no se puede conectar directamente los sistemas informáticos internos con los servicios en líneas, ya sea porque se utiliza un webhosting contratado, o se desarrollo con una tecnología diferente a los sistemas existentes, etc. Los servicios online ofrecidos son intermedios.<br /><br /><span style="font-weight: bold;"> Tipo C - Características.</span><br /><br />1. Son empresas que tienen un nivel tecnológico medio o pobre.<br />2. autonomía casi nula: casi todas las tareas informáticas de cualquier nivel (instalación de redes, instalación de sistema operativo, soporte técnico, desarrollo de sistemas, etc.) deben ser realizadas por terceros. Poseen pocos (uno o dos) o ningún servidor.<br />3. Los procesos automatizados no alcanzan el 50%<br />4. Sistemas dispersos de diferentes índoles por la empresa, todos desarrollados por terceros, no se conectan ninguno entre si.<br />5. Carecen de servicios en línea, en caso de poseer algún webhosting contratado es meramente para uso informativo.<br /><br /><span style="font-weight: bold;"> Tipo D - Características.</span><br /><br />1. Son empresas que tienen un nivel tecnológico pobre o nulo.<br />2. autonomía nula.<br />3. Procesos automatizados por debajo del 25% o nulos.<br />4. Pocos o ningún sistema informático, los pocos existentes no se conectan entre si.<br />5. Servicios en línea nulo, no poseen webhosting.</span></p> Cuando se refiere a sistemas informaticos, solo se esta tomando en consideracion los sistemas operacionales o de toma de decision, no los paquetes de oficina (office) o sistemas operativos.adminhttp://www.blogger.com/profile/13543933220990885985noreply@blogger.com0tag:blogger.com,1999:blog-3720495305544590742.post-58060753502982711472008-03-26T05:54:00.000-07:002010-08-27T11:26:45.541-07:00HTTP 401.3 - Access denied by ACL on resourceMoviendo, borrando y copiando carpetas de aplicaciones web dentro del IIS, me aparecio este error al momento de ejecutar algunas de las aplicaciones en cuestion.<br /><br />Cuando hacemos estos tipos de operaciones (moviendo, eliminando carpetas) se pierden los permisos de lectura o/y escrituras de algunos usuarios que utiliza el IIS. La solucion es verificar los permisos de dichas carpetas y asignarle privilegios de lectura (como minimo) al usuario que utiliza el IIS (por lo general IUSR_NOMBREDELEQUIPO) y al usuario ASPNET en caso de que sean aplicaciones .Net.adminhttp://www.blogger.com/profile/13543933220990885985noreply@blogger.com0tag:blogger.com,1999:blog-3720495305544590742.post-1466085233317751192008-03-19T12:29:00.000-07:002010-08-27T11:27:07.160-07:00Mono: error CS0433: The imported type `XXXXX' is defined multiple timesIntentando de correr una aplicacion en Mono obtuve el siguiente mensaje de error:<br /><br /><span style="font-style: italic;">Compilation Error</span><br /><br /><span style="font-style: italic;">Description: Error compiling a resource required to service this request. Review your source file and modify it to fix this error.</span><br /><br /><span style="font-style: italic;">Error message:</span><br /><br /><span style="font-style: italic;">/var/tmp/www-temp-aspnet-0/a9e8b93/759bb5af.0.cs(28,41) : error CS0433: The imported type `_Default' is defined multiple times</span><br /><br /><br />A simple vista parece un error de compilacion ocasionado por nosotros mismos al desarrollar la aplicacion, algo que esta definido varias veces en un mismo contexto, por lo cual si es un error de esa naturaleza, pues compilarlo en Visual Studio deberia de dar el mismo error o algo parecido, pero no es asi, en el FrameWork.Net de windows trabaja sin ningun problema.<br /><br />Buscando en la red, no encontre nada parecido, ni una pista, perdi mucho tiempo indagando y en la red no estaba la solucion. Ya estaba por pensar que la implementacion de Mono no estaba muy acabada como para migrar y correr aplicaciones rubustas desarrollada en .Net de Windows (claro, sin incluir componentes o recursos de terceros que solo trabajan en un ambiente win)<br /><br /><br />Pues bien, observando detenidamente el error, me fijaba que el problema estaba en la declaracion de una pagina <span style="font-style: italic;">(_Default) </span>que unicamente contenia un masterpage y luego en su interior estaba totalmente vacia. Pero la aplicacion completa contenia unos 6 masterpage adicionales, porque concretamente esta es la del problema? o quizas todas tenian el mismo problema y esta era la primera en detectarse? que rompecabezas :S<span style="font-style: italic;"><br /></span><br />Pero la solucion era tan sencilla que era muy dificil de imaginar: la pagina que se daba como referencia en el error, es una pagina que estaba repetida varias veces dentro de otras carpetas, o sea, identica, mismos nombres, mismas declaraciones en el codebehind. El Framework de windows pasa desapersivido esto, pero Mono no.<br /><br />Pagina 1:<br />public partial class _Default : System.Web.UI.Page<br /><br />Pagina 2:<br />public partial class _Default : System.Web.UI.Page<br /><br />No pueden existir dos clases con los mismos nombres en un mismo contexto, aunque esten ubicados fisicamente en sitios diferentes.<br /><br />Solucion: eliminar las paginas repetidas o renombrar sus declaraciones en el codebehind<br /><br /><span style="font-style: italic;"><br /></span>adminhttp://www.blogger.com/profile/13543933220990885985noreply@blogger.com0tag:blogger.com,1999:blog-3720495305544590742.post-1355701938840523832008-03-18T07:58:00.000-07:002010-08-27T11:27:36.528-07:00Mono - HTTP 500. System.DllNotFoundException: gdiplus.dll<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIV8t66Y93GVNOdaSHpFv9yozah6sK9djH44UBdythyphenhyphenVijnfEUEm_silHB8t5iJzFBx4hmoSgYauQ-4BNM5BCVsHB-SaLgjfqPBCOFoBjpATewt9zV7JiawFkHa6KaVlO8ZbtiZm3LyUW_/s1600-h/gdiplus.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 604px; height: 239px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIV8t66Y93GVNOdaSHpFv9yozah6sK9djH44UBdythyphenhyphenVijnfEUEm_silHB8t5iJzFBx4hmoSgYauQ-4BNM5BCVsHB-SaLgjfqPBCOFoBjpATewt9zV7JiawFkHa6KaVlO8ZbtiZm3LyUW_/s320/gdiplus.jpg" alt="" id="BLOGGER_PHOTO_ID_5179097923218654818" border="0" /></a><br /><br />Intentando de correr una aplicacion en Mono+FreeBSD obtuve el siguiente mensaje de error:<br /><br /><span style="font-style: italic;">HTTP 500. System.DllNotFoundException: gdiplus.dll</span><br /><br />Y en otras paginas tambien obtuve este error:<br /><br /><span style="font-style: italic;">Parser Error: Color Red is not a valid color</span><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipvBw4IPuFg5N5EjccQgfKq4l0kZO0lM3DOalJ7YgPLMHBYuiEUgRDcBNTZGFF15VsfL4H3u_nHhIiBnmCey4JHaMP55FFJsz3mZNo6fdhEwbtJ0WfjDTDWhkC9GZwr3CJTpbsVJxTAr6v/s1600-h/errorcolor.JPG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 577px; height: 251px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipvBw4IPuFg5N5EjccQgfKq4l0kZO0lM3DOalJ7YgPLMHBYuiEUgRDcBNTZGFF15VsfL4H3u_nHhIiBnmCey4JHaMP55FFJsz3mZNo6fdhEwbtJ0WfjDTDWhkC9GZwr3CJTpbsVJxTAr6v/s320/errorcolor.JPG" alt="" id="BLOGGER_PHOTO_ID_5179098846636623474" border="0" /></a><br /><br />Ambos errores son relacionados y se resuelven con la misma medicina.<br /><br />Ahora bien, detallemos que sucede, el primer error me habla que me falta una dll llamada gdiplus.dll, pero que es esto ?<br /><br />Microsoft GDI+ (gdiplus.dll) es una librería que contiene funciones básicas relacionadas con el sistema de interfaz gráfico de Windows (GDI) Graphical Device Interface. Gracias a este sistema Windows puede crear y mostrar objetos en 2D.<br /><br />Si nuestra aplicacion web esta usando librerias de manejo de imagenes, para manipular su<br />tamaño, preservar la calidad al momento de desplegarla utilizando otras dimensiones, etc.<br />Nuestra aplicacion esta haciendo un llamado a esta libreria. En mi caso, mi proyecto .net<br />hace algunas de estas cosas<br /><br />En FreeBSD esta libreria no viene con la instalacion de Mono, tenia que instalarla primero antes<br />mapiar la DLL. La libreria esta ubicada en /usr/ports/X11/x11-toolkit/libgdiplus<br /><br />procedemos a instalar<br /><span style="font-style: italic;">make install clean</span><br /><br />Pero me encontre con una sorpresa, existia un conflicto de instalacion<br /><br /><span style="font-style: italic;">/usr/X11R6 exists, but it is not a symlink. Installation cannot proceed.</span><br /><span style="font-style: italic;">This looks like an incompletely removed old version of X. In the current version, /usr/X11R6 must be a symlink if it exists at all.Please read /usr/ports/UPDATING (entry of 20070519) for the procedure to upgrade X.org related ports.</span><br /><span style="font-style: italic;">*** Error code 1</span><br /><br />Al parecer, segun el mensaje de error, nos manda actualizar las X, pero al ver las dependencias del paquete libgdiplus dice que la version de X es la misma que tengo instalada, ademas me parecio problematico actualizar las X ya que otros paquetes dependian de esta misma version y adicional a esto el mensaje de error da una pista de como resolver el problema sin tener que actualizar: /usr/X11r6 debe ser un enlace de sistema, no un directorio real.<br /><br />Solucion: mover todo el contenido de /usr/X11R6 a /usr/local<br /><br /><span style="font-style: italic;">cd /usr/X11r6</span><br /><span style="font-style: italic;">find -d . -print | cpio -pvdam /usr/local</span><br /><br />Entonces borrar X11r6 y crearlo como un enlace de sistema apuntando a /usr/local<br /><br /><span style="font-style: italic;">rm -r /usr/X11R6 && ln -s /usr/local /usr/X11R6</span><br /><br />luego de esto, por fin instalar la libreria sin mas inconveniente<br /><br /><span style="font-style: italic;">cd /usr/ports/X11/x11-toolkit/libgdiplus && make install clean</span>adminhttp://www.blogger.com/profile/13543933220990885985noreply@blogger.com1tag:blogger.com,1999:blog-3720495305544590742.post-27562255496704941252008-03-14T07:13:00.000-07:002010-08-27T11:27:51.119-07:00Firebird en FreeBSD: inet server err: setting KEEPALIVE socket optionAl observar que mi base de datos esta lista para iniciar no termina de arrancar, verificando el /var/db/firebird/firebird.log me encuentro con el siguiente mensaje:<br /><br /><span style="font-style: italic;">inet server err: setting KEEPALIVE socket option</span><br /><br />Solucion:<br /><br />Firebird trata de utilizar un metodo llamado "Nagle algorithm" para las conecciones tcp/ip<br />y en FreeBSD esto es posible trabajarlo solo con un usuario con suficientes privilegios "ROOT"<br /><br />En la linea agregada para iniciar la base de datos en el inetd.conf debemos cambiar el usuario firebird por el root:<br /><br /><span style="font-style: italic;">gds_db stream tcp nowait </span><span style="font-weight: bold; font-style: italic;">root </span><span style="font-style: italic;"> /usr/local/sbin/fb_inet_server fb_inet_server</span><br /><br />En caso de que no deseemos correr el servicio de la db con root, entonces deshabilitamos el uso del Nagle en el archivo de configuracion de la base de datos:<br /><br /><span style="font-style: italic;">edit /usr/local/etc/firebird/firebird.conf</span><br /><span style="font-style: italic;">TcpNoNagle = 0 # indicando el valor cero</span><br /><br /><a href="http://www.unixwiz.net/evo/evo-linuxdb-setup.html">Segun una documentacion encontrada por el internet</a>, pero lo probe y no funciono, quizas algo me falto hacer.adminhttp://www.blogger.com/profile/13543933220990885985noreply@blogger.com0tag:blogger.com,1999:blog-3720495305544590742.post-28944990782038774642008-03-13T13:32:00.000-07:002010-08-27T11:28:12.557-07:00FbMembershipProvider.CreateUser - validation error for column ISONLINE, value *** null ***Migrando un membership a FireBird me encontre con un #@$@#$# error que me llevo casi todo un dia descubrir lo que sucedia:<br /><br /><span style="font-style: italic;">validation error for column ISONLINE, value "*** null ***"</span><br /><br />Este error me era arrojado en el event view de windows al fallar la creacion de un nuevo usuario.<br /><br />Despues de revisar el store procedure que inserta un nuevo usuario, pasarme casi toda la mañana verificando la DB, los tipos de datos de los campos y hacer algunas pruebas insertando directamente con el mismo SP, me di cuenta que todo estaba bien, y que el error provenia de la clase FbMembershipProvider.<br /><br />Busque por google exactamente el mensaje que me arrojaba y nada! Pero si encontre que habian algunos errores con la creacion de usuarios en algunas versiones mas viejas del FbMembershipProvider. Verificando el codigo fuente del Provider.Net de FireBird, observe que habian dos clases FbMembershipProvider y FbMembershipProvider2, esta ultima es mas completa y terminada. Cambie mi referencia en el web.config del MembershipProvider:<br /><br /><span style="font-style: italic;">type="FirebirdSql.Web.Providers.FbMembershipProvider,FirebirdSql.Web.Providers, Version=2.0.0.0,Culture=neutral,PublicKeyToken=3d06a02581b682f8"</span><br /><br />a:<br /><br /><span style="font-style: italic;">type="FirebirdSql.Web.Providers.FbMembershipProvider2,FirebirdSql.Web.Providers, Version=2.0.0.0,Culture=neutral,PublicKeyToken=3d06a02581b682f8"</span><br /><br />Todo era porque no estaba usando la version la version "2"<br /><br />La verdad es que la documentacion es muy pobre, hay que buscarsela e ingeniarsela a no mas poder con esto para dar con la solucion. Incluso, si la version 1 tiene Bugs que se corrigen con la 2, no veo cual es el sentido de tener las dos disponibles, lo cual puede prestar a confunsion, ya que los pocos ejemplo que podemos encontrar para la implementacion del FbMembershipProvider no hace mension de la version corregida FbMembershipProvider2adminhttp://www.blogger.com/profile/13543933220990885985noreply@blogger.com0tag:blogger.com,1999:blog-3720495305544590742.post-48245244648300154492008-03-12T18:32:00.000-07:002010-08-27T11:28:27.188-07:00Arrancar FireBird al iniciar el sistema en FreeBSD<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWrn8iyFwoXS7L6TvRJptmPM_gZWB808ZoBLcZLn28mCW3OdA_iKDNlez1rNs-vor8J0PE2Q6S0sKO-dhaP85j0Oy5CMivDfwRH0nGi3j3fB2NpZW5khoxD2ohl1_o7ml6Ri43EmUjs5Rf/s1600-h/firebirdlogo.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWrn8iyFwoXS7L6TvRJptmPM_gZWB808ZoBLcZLn28mCW3OdA_iKDNlez1rNs-vor8J0PE2Q6S0sKO-dhaP85j0Oy5CMivDfwRH0nGi3j3fB2NpZW5khoxD2ohl1_o7ml6Ri43EmUjs5Rf/s320/firebirdlogo.png" alt="" id="BLOGGER_PHOTO_ID_5177034174253057586" border="0" /></a><br />La instalacion de Firebird2 desde los ports no deja el sistema listo para arrancar la base de datos en la proxima reiniciada, hay que hacerlo manual:<br /><br />agregar en /etc/services la siguente linea:<br /><span style="font-style: italic;">gds_db 3050/tcp # FireBird DataBase</span><br /><br />agregar en /etc/inetd.conf la siguiente linea:<br /><span style="font-style: italic;">gds_db stream tcp nowait firebird /usr/local/sbin/fb_inet_server fb_inet_server</span><br /><br />Luego reiniciar servicios para tener nuestro Firebird listo para trabajar:<br /><span style="font-style: italic;">/etc/rc.d/inetd restat</span><br /><br />O reiniciar el sistema para comprobar que esta iniciando:<br /><span style="font-style: italic;">reboot</span>adminhttp://www.blogger.com/profile/13543933220990885985noreply@blogger.com0tag:blogger.com,1999:blog-3720495305544590742.post-76103724164614212412008-03-12T18:22:00.000-07:002010-08-27T11:28:43.598-07:00Instalacion de FireBird en FreeBSD<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8riq7T14Iu87yeUvws7hkDLcp7HZgdOhMweNKuK7Vcm-VOUpEYtRa9SXqBfGeMfYhW1h5o6_zg5LE3_NhBY0lgfCOtD3PCJcnykcbZXryk3MaG44bH_16ZZMVmJasb8cYtKT7FWbYL_qK/s1600-h/firebirdlogo.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8riq7T14Iu87yeUvws7hkDLcp7HZgdOhMweNKuK7Vcm-VOUpEYtRa9SXqBfGeMfYhW1h5o6_zg5LE3_NhBY0lgfCOtD3PCJcnykcbZXryk3MaG44bH_16ZZMVmJasb8cYtKT7FWbYL_qK/s320/firebirdlogo.png" alt="" id="BLOGGER_PHOTO_ID_5177031240790394402" border="0" /></a>Instalando Firebird desde los ports en FreeBSD 6.2. Primer error encontrado en la instalacion:<br /><br /><span style="font-style: italic;">===> Building for firebird-client-2.0.1</span><br /><span style="font-style: italic;"> ==> Please do not build firebird as 'root' because this may cause</span><br /><span style="font-style: italic;"> conflicts with SysV semaphores of running services.</span><br /><span style="font-style: italic;"> *** Error code 1</span><br /><br /><span style="font-style: italic;"> Stop in /usr/ports/databases/firebird2-client.</span><br /><span style="font-style: italic;"> *** Error code 1</span><br /><br /><span style="font-style: italic;">Stop in /usr/ports/databases/firebird2-server.</span><br /><br /><span style="font-weight: bold;">Solucion</span><br /><br />Dar permisos necesarios a un usuario no root a las carpetas de<br />firebird2-client y firebird2-server estando logueado como root<br /><br /><span style="font-style: italic;">chown -R usuario /usr/ports/databases/firebird2-server</span><br /><span style="font-style: italic;">chown -R usuario /usr/ports/databases/firebird2-client</span><br /><br />entrar como el usuario con los nuevos privilegios<br /><br /><span style="font-style: italic;">su usuario</span><br /><span style="font-style: italic;">cd /usr/ports/databases/firebird2-server</span><br /><span style="font-style: italic;">make</span><br /><br />volver como root y terminar de instalar<br /><br /><span style="font-style: italic;">exit</span><br /><span style="font-style: italic;">make install clean</span><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.blogger.com/www.firebirdsql.org"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://www.blogger.com/www.firebirdsql.org" alt="" border="0" /></a>adminhttp://www.blogger.com/profile/13543933220990885985noreply@blogger.com1tag:blogger.com,1999:blog-3720495305544590742.post-35609746808064856022007-08-07T11:26:00.000-07:002010-08-27T11:29:22.387-07:00It is not possible to run two different versions of ASP.NET in the same IIS processInmediatamente intentaba de entrar a una aplicacion Asp.Net me indicaba un mensaje de error que me decia "Server Application Unavailable", la cual no me especificaba absolutamente nada de que podria ser el origel del problema.<br /><br />Como todo buen programador, cuando ocurre un fallo en alguna de las aplicaciones ya en produccion y el error mostrado no especifica absolutamente nada que nos pueda pueda ayudar, debemos de pensar en cual fue el ultimo cambio realizado, ya que ha sido una aplicacion que siempre a funcionado. Recorde que al servidor web le habia instalado recientemente el MS Framework 2.0 para una nueva aplicacion. Verifique el event viewer y efectivamente alli esta el problema:<br /><br /><em>"It is not possible to run two different versions of ASP.NET in the same IIS process. Please use the IIS Administration Tool to reconfigure your server to run the application in a separate process."</em><br /><br /><em>La solucion es relativamente sencilla, cuando se tienen aplicaciones corriendo con diferentes versiones de framework en un mismo servidor web, es necesario crear un applicacion pools para cada version de framework e indicarles a cada aplicacion cual application pools usar en las propiedades de la aplicacion desde el IIS.</em>adminhttp://www.blogger.com/profile/13543933220990885985noreply@blogger.com0tag:blogger.com,1999:blog-3720495305544590742.post-28623735053324179262007-08-07T10:52:00.000-07:002010-08-27T11:29:38.101-07:00Restaurar base de datos a partir de un MDFNueva situacion:<br /><br />Varias base de datos estaban utilizando varios filegroup para almacenar los indices, dichos filegroups estaban ubicados en discos diferentes al MDF, y el archivo de log de transacciones de todas las bases de datos tambien estaban en discos diferentes.<br /><br />Resulta ser que el disco que contenia los filegroups y los log de transacciones se perdio, unicamente quedaron los MDF solos y no existian backups.<br /><br />Cuando trataba de hacer un simple attach a las base de datos, el servidor SQL Server 2005 buscaba los archivos asociados a el (los filegroups y logs) en las mismas ubicaciones que estaban (ubicaciones y archivos que ya no existian) y al no encontrar nada no me dejaba atacharlas.<br /><br />Mi razonamiento era el siguiente: en los filegroups (.NDF) solo estaba almacenando los indices, los log de transacciones se reconstruyen cuando estos se pierden o se corrompen. Y lo que me quedaba en las manos eran los MDF que son los que contienen la data real, los registros y las tablas, pues teoricamente tenia en mis manos lo que realmente importaba.<br /><br />El hecho es que intente todo y nada fue posible, pase varios dias buscando informacion en el MSDN, en foros sobre el tema... y no hay solucion cuando se pierden los filegroup asociados a la DB, aunque no lo utilices y no contengan nada.<br /><br />En resumen, NUNCA TE DESCUIDES CON LOS BACKUP, es la unica garantia segura con SQL Server de recuperar informacion, olvidate de que tienes el log de transacciones, el MDF, porque nada es seguro.adminhttp://www.blogger.com/profile/13543933220990885985noreply@blogger.com0tag:blogger.com,1999:blog-3720495305544590742.post-66401793242062558172007-08-03T08:00:00.000-07:002010-08-27T11:29:53.867-07:00Encriptar clave en SQL Server 2005Buscando el google encontre varias opciones para encriptar un campo, pero el que me resulto mas facil y comodo de usar fue la funcion pwdencryp(campo), devuelve una cadena encryptada.<br /><br />Lo que deseaba hacer era encriptar todas las claves de la tabla de usuarios de un sistema que trabajo habitualmente, aqui doy los pasos para lograr tal objetivo:<br /><br />1. Lo primero es cambiarle el tipo de dato al campo de la clave de varchar(longitud) a varbinary(256), pero antes de esto, tenemos que guardar nuestras claves viejas sin encriptar en un campo temporal para no perder la informacion de la claves de los usuarios.<br /><br />Cree un campo tiempo llamado "temp", luego pasamos las claves sin encriptar a dicho campo:<br /><br />alter table usuarios add temp varchar(20)<br />go<br />update usuarios set temp = clave<br />go<br /><br />2. Cambiar el tipo de dato al campo clave<br /><br />alter table usuarios alter column clave varbinary(256)<br /><br />3. Pasando las claves encriptadas a nuestro campo y eliminando el campo temporal<br /><br />update usuarios set clave = pwdencryp(temp)<br />go<br />alter table usuarios drop column temp<br />go<br /><br />4. Validando nuestro usuario por medio de una consulta<br /><br />select * from usuarios where login = @login and pwdcompare(@clave, clave, 0) = 1<br /><br />si no devuelve ningun registro es porque el usuario o la clave son incorrectas.<br /><br /><br /><span style=";font-family:Tahoma;font-size:8.5pt;" ></span>adminhttp://www.blogger.com/profile/13543933220990885985noreply@blogger.com1