Mostrando las entradas con la etiqueta Software. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Software. Mostrar todas las entradas

miércoles, octubre 16, 2024

Could not load file or assembly

Había estado teniendo este problema en una aplicación que desarrollé hace años, pero que recientemente se tuvo que implementar Modern Authentication, y en consecuencia el uso de nuevas librerías.

El error que me encontré, y que me hizo dedicarle algunas horas, era el mensaje de 

"Could not load file or assembly [ NombreDLL  ]  " y el NombreDLL era alguna de las siguientes:

System.ValueTuple

Azure.identity

Azure.Core

System.Memory


Hice algunos intentos de mi parte que creí que lo solucionarían, como el de agregar las librerías desde el NuGet Package Manager, actualizar a las versiones más recientes, recrear el instalador, pero seguía apareciendo el error, si no era una era otra.

Así que apliqué la receta que todo programador conoce y es buscar en internet y en particular en Stackoverflow.

Encontré varios enlaces que me dieron pistas, pero no la solución, aquí pongo los enlaces que me dieron algunas pistas:

https://stackoverflow.com/questions/70585425/how-to-resolve-could-not-load-file-or-assembly-azure-core

https://nickcraver.com/blog/2020/02/11/binding-redirects/

https://stackoverflow.com/questions/4469929/could-not-load-file-or-assembly-or-one-of-its-dependencies

https://stackoverflow.com/questions/70585425/how-to-resolve-could-not-load-file-or-assembly-azure-core


Como nada resolvía mi problema, y varios resolvían su problema, pensé que en mi caso particular había algo diferente, así que fue comenzar desde cero, e hice lo siguiente:

  1. Desinstalar todas las versiones del programa (usando el instalador de Windows).
  2. Recrear el archivo de instalación agregando el proyecto (no el EXE).
  3. Instalar la última versión de .NET, en este caso el 8.
  4. Instalar el programa con la nueva versión.


y después de eso, ya no se presentó el problema.


 


 






lunes, marzo 15, 2021

Mi computadora por casi 10 años, i7-2600

 Este sábado pasado cambié de computadora -mi computadora primaria que usaba en casa- una con un i7-2600 por otra i7 obviamente mas reciente.

 Por 9 años 11 meses esta fue la computadora que usé:

 1 x CPU INTEL | CORE I7 2600 3.4G 8M R - Intel Core i7-2600 Sandy Bridge Quad-Core 3.4GHz(3.8GHz Turbo Boost) LGA 1155 95W BX80623I72600 Desktop Processor Intel HDGraphics 2000

1 x MB ASROCK | H67M-GE (B3) H67 LGA1155 - Intel H67 HDMI SATA 6Gb/s USB 3.0 Micro ATXIntel Motherboard

2 x MEM 4G x 2|G.SKILL F3-10666CL9D-8GBXL

1 x Crucial M4 | 2.5" 256GB SATA SSD  (Para Windows)

1x  Seagate BarraCuda | 7200.11 ST3500320AS 500GB 7200 RPM 32MB Cache SATA 3.0Gb/s 3.5" Internal Hard Drive Bare Drive  (Para Datos).

1 x PSU RAIDMAX | HYBRID2 RX-630SS 630W

1 x DVD BRN ASUS | DRW-24B1ST/BLK/B/AS% - OEM

1 x WIN HOME PREMIUM 7 64-BIT OEM - OEM

1 x CASE CM | ELITE 430 RC-430-KWN1 RT - Cooler Master Elite 430 - Mid Tower Computer Case with All-Black Interior and Windowed Side Panel

 Con el tiempo le reemplacé el Barracuda por otro de 1TB.
Y lo cierto es que hasta la fecha funciona bastante bien, es todavía muy rápida, pero se dió la 'casualidad' que tuve una excelente oportunidad de armar otra computadora.

La nueva computadora la armé con mi hijo, estaba tan emocionado, tanto el como yo, y todo funcionó a la perfección, la nueva encendió a la primera, pero bueno eso es tema de otro post.

Quiero hacer un experimento con la i7-2600 y veamos como sale, tal vez lo publique cuando termine de realizarlo.

viernes, noviembre 06, 2020

Trello o Microsoft Planner?

 Comencé a usar Trello desde el año 2017, y para lo que necesitábamos, hacia muy bien el trabajo, solo éramos tres personas usándolo y trabajábamos en pocos proyectos. Veníamos de usar hojas de Excel para nuestros proyectos, y en nuestras revisiones era el estar constantemente abrir y cerrar archivos de Excel, y copiar y pegar tareas entre hojas de Excel.
Conforme el tiempo, fue creciendo el equipo, los proyectos y actividades. Actualmente manejamos alrededor de 40 proyectos, que van de un par de semanas a varios meses, y necesitamos un seguimiento puntual de las actividades, así como cerramos proyectos abrimos otros.

Lo que buscábamos era que todas nuestras actividades se vieran en una sola vista. Sin necesidad de abrir o cerrar archivos de Excel. Esta fue la principal razón por la que seleccionamos Trello.
Recientemente probamos la versión o suscripción Gold, y aunque agregaba mas características no estaba completo, teníamos que añadir gráficas, y las teníamos que hacer manualmente en Excel, si queríamos tener status, teníamos que pagar por power-ups.
Dio la coincidencia que migramos a Office365, y por consiguiente a toda la solución de de Teams, y entre ellos venia usar Microsoft Planner.
 

Decidimos probar por un par de semanas Microsoft Planner y ver si convenia hacer el cambio de Trello a Planner, o bien pagar la versión Gold de Trello para tener lo que queríamos; pero con tan solo probarlo por un par de días, decidimos movernos de Trello a Microsoft Planner.

¿La razón? Simplemente porque ya tiene integrado prácticamente todo lo que necesitábamos de Trello y un poquito más sin necesidad de pagar membresía ni a terceros, por ejemplo:

•    Prioridades
•    Progreso
•    Responsable
•    Fecha de Inicio y Cierre
•    Graficas
•    Filtros de tarjetas
•    Listado
•    Notas
•    Checklist
•    Attachments
•    Registro o log de actividades
•    Exportar listado de tarjetas/proyectos a Excel.
.

Así que esta es mi recomendación de si usar Trello o Microsoft Planner:

Usa Trello si:
•    Quieres tener todas tus actividades en una sola vista.
•    Grupo de trabajo es pequeño 2 o 3 personas.
•    El volumen de tarjetas, proyectos o actividades es poco, digamos unos 10 por persona.
•    Reportes o gráficas relacionado a las actividades no es necesario.

Usa Microsoft Planner si:
•    Estas en el ecosistema de Microsoft y ya usando Office 365, Teams, etc.
•    Necesitas todas las características mencionadas en el listado, sin necesidad de pagar adicional o a terceros.
•    Manejas un volumen alto de actividades y/o tarjetas, proyectos.


jueves, marzo 31, 2016

Videos de Youtube Tardan en Mostrarse en el navegador Firefox

El problema que tenía era que los videos de youtube se tardaba como 10 segundos o más en mostrarse en el navegador Mozilla Firefox.

En varios foros indican que hay que borrar el cache, deshabilitar addons, arrancar en 'safe-mode', etc. incluso hasta tener suerte ya que tal vez le toca a uno un CDN lento.

Bueno la forma en que lo resolví y que me funciona a la perfección es deshabilitar el "auto-detect" del proxy.

Tools -> Options -> Advanced -> Network -> Settings -> Connection Settings
Seleccionar: "No Proxy".


jueves, noviembre 21, 2013

Fin de Winamp?



He leído la noticia que Winamp llega a su fin y que ya no estará disponible para descarga a partir del 20 de diciembre del 2013.

Realmente es una pena que esto suceda siendo que Winamp es para mí sin duda, hoy por hoy, el mejor reproductor multimedia y organizador multimedia que existe.
Este reproductor lo vi y use por primera vez a fines de 1999 y lo que más me atrajo fue su ecualizador y la simplicidad de su interface, que a la vez se podía minimizar.

Actualmente sigo usando Winamp, es el único que me permite tener organizada la música como realmente la quiero, se carga rápido, es ligero, no es obstrusivo, y permite todavía minimizarlo sin ocupar espacio en la barra de tareas. Esto sin contar con los cientos de "skins" disponibles.
 
Ciertamente existe mucha competencia, y aplicaciones similares vienen precargadas por default (léase  iTunes o Windows Media Player); pero creo que aun cuando Winamp no ha tenido un desarrollo o avances de grandes magnitudes, es bastante bueno y diría mejor que sus contrapartes.

Al parecer a Winamp le llega el ciclo... 15 años de estar "online" sin haber cambiado el nombre ni cambios sustanciales, realmente es mucho tiempo para un programa de software, lo cual habla de que es realmente un buen programa que estableció una marca.

Aunque el simple hecho de que AOL no haya dicho el por qué da de baja Winamp...  será que realmente lo dará de baja?, o será un truco para llamar la atención? Esperemos al 20 de diciembre a ver que pasa.




domingo, julio 21, 2013

Actualizacion Firmare para ruteador Linksys BEFSR41

Para actualizar el Firmware de este ruteador, Linksys EtherFast(r) Cable/DSL Router with 4-port Switch (BEFSR41) Version 4.3, tiene su truco.
Si vas al website y descargas el firmare, y tratas de actualizarlo desde el navegador o web browser, te marca un error: "File pattern error on upgrade."

Algunos recomiendan usar el TFTP.EXE para actualizarlo, pero en mi caso encontré que da otro error: "Unable to resolve host address.", a pesar de que puedo hacer ping al host address.

Para resolver ese problema, después de batallar un rato, la solución fue bastante simple:
Cambiar el nombre del firmware -sin comillas- de: "FW_BEFSR41v4.3_2.00.4.8_20100817_code,0.bin"
a: "code.bin"
Y podrás hacer la actualización desde el navegador.
Después de actualizar el firmware tendrías que hacer un "cold reset" al ruteador (oprimir el botón de reset por 30 segundos) y volver a configurarlo .

Para descargar el firmware:
http://support.linksys.com/en-us/support/routers/BEFSR41
La direccion IP por default del ruteador es: 192.168.1.1

Puedes descargar el TFTP.EXE, si quieres intentar esa forma.

sábado, mayo 18, 2013

Receptor/Reproductor Multimedia (Streaming Box) 2da Parte

En el post anterior mencioné acerca de las dos opciones que probé para ver contenidos de internet en mi televisión, las dos opciones fueron Roku y WDTVLive.

Como bien dije, esas dos opciones me dejaron bastante decepcionado, y preferí hacer mi propia configuración; la cual es bastante sencilla: Una PC o desktop de bajo perfil.

Una computadora conectada directamente a la TV, así de simple.

Había intentado usar XBMC, ya que no necesitaba más. Pero la actualizada de los drivers para la tarjeta de video, y los plugins necesarios, no me dejaron más remedio que usar Windows XP.

La configuración final fue:

  • Una computadora Dell Inspiron de bajo perfil.
  • Tarjeta de Video GeFroce GT 610 (low profile para que quepa en el gabinete de la computadora)
  • 4 GB RAM
  • Disco duro de 350 GB.
  • El internet (de 15Mb)  lo conecto directamente a la computadora, uso cable, evito el wireless (para tener mas ancho de banda).
  • para conectar la TV a la computadora, uso la tarjeta de video y HDMI.
  • Como medio de control remoto, uso un mini keyboard/mouse y también uso una iPad con VNC.



Estas son mis recomendaciones y de cómo lo configuré:
  • Deshabilitarle servicios innecesarios.
  • Desinstalarle aplicaciones innecesarias.
  • Instalar un navegador que inicie automáticamente en modo full screen. En mi caso solo instale el navegador Mozilla Firefox.
  • Tener una cuenta única de gmail para que haga login y poder llevar registros de favoritos, o hyperlinks visitados, youtube por ejemplo hara recomendaciones de acuerdo a los videos vistos.
  • Utilizar un único media player, en mi caso estoy usando el reproductor multimedia VLC Media Player.  
  • Para controlar la PC, y como lo indico en el diagrama, se puede usar un miniwireless keyboard/mouse, o bien el iPad; también se puede usar una laptop, pero es más voluminosa, pero recomiendo los dos primeros por ser mas prácticos.
  • Instalar el servidor o servicio de VNC (uso TightVNC como servidor).


Ya llevo varios meses usándolo y realmente es bastante práctico y rápido comparado con las cajitas de Roku y otras por el estilo.

Ventajas?, Adicionalmente a las que mencioné, son el precio, mientras que las streaming box cuestan alrededor de 100 dolares (las que son a mis gustos, pero puedes encontrar mucho mas baratas), la computadora la compre en craiglist en 60 dolares. Puedes ponerle mas aditamentos para hacerla más rápida (disco de estado sólido, o tarjeta de video, mayor disco duro, etc.). Tambien de que te permite hacer mas cosas, por ejemplo descargar videos en segundo plano, tener una libreria de fotos, videos, etc.

Las desventajas?  Evidentemente la computadora es mucho más voluminosa, aunque sea de bajo perfil, consume más electricidad, la configuración (el setup) lleva más tiempo, y no es tan 'directa' de usar (es una desventaja pero ganas en que del otro lado tienes más libertad de uso).




jueves, abril 19, 2012

Desplegar una imagen en Crystal Reports desde VB 2010


El problema era que tenia que imprimir un gafete con la imagen de la persona.

El punto era como podria indicarle al campo de imagen cual archivo tomar? Ya que no se puede acceder a las propiedades de un objeto insertado tan facilmente.

Aunque esto ya lo habia hecho con Crystal Reports allá como a mediados de los 90's, la verdad es que no me acordaba, pero despues de jugar un rato con CrystalReports y su editor de formulas, me acordé:

La solución que implementé es la siguiente:

1. Crear un campo de formula en el reporte, en mi caso lo nombré "PicFileName".
2. Insertar un "OLE Object" del tipo Paintbrush Picture.
3. Darle formato al objeto OLE, en el tab de Picture, en "Graphic Location:" puse algo como
    "My-directorio-donde-almaceno-las-fotos\" + {@PicFileName}

En la sección del código, el que se ejecuta para desplegar el reporte, (en mi caso el evento Click) puse algo como:
...
frmCRBadge.CrystalReport.DataDefinition.FormulaFields("PicFileName").Text = "'" & Nombre-del-Archivo-de-Imagen & ".jpg'"
...

Y listo, cada vez que selecciono un registro diferente se muestra el reporte con su correspondiente imagen.

NOTA: Nombre-del-Archivo-de-Imagen  yo uso el ID del registro que le corresponde, así cada vez que se selecciona un registro diferente, el Nombre-del-Archivo-de-Imagen se actualiza solito.




sábado, diciembre 10, 2011

Shared Items

Había estado usando "Shared Items" o "Note in Reader" para compartir algunos hyperlinks que me parecían interesantes, usando el bookmarklet "Note in Reader" pero desafortunadamente Google decidió descontinuar el uso de "Shared Items" de Google reader, desde que publicó "Google+".
Creo que esto es para obligar a los usuarios a usar Google+, y hacerlo "exitoso a la fuerza" mostrando el mensaje "We're sorry - Google Reader no longer supports the "Note in Reader" bookmarklet.", cosa que no estoy de acuerdo.
Realmente me molestó mucho el que Google deshabilitara esta funcionalidad, y creo que no soy el unico . Solo como comentario al margen... Google no deberia, pero muestra una conducta de "tirar palos de ciego", o de "le tira a todo y a nada le pega", siendo una empresa grande, no deberia de lanzar tantas aplicaciones y ver cual pega, o tratar de copiar exitos de otras empresas, despues de ser innovadora, ahora resulta ser quien copia, bueno estos comentarios bien pueden llevar otro mensaje y no es el propósito de este post.

He estado buscando otra herramienta o servicio que pueda sustituir a Shared Items, y seguir compartiendo links en este blog.
He visto varios servicios, tales como "Instapaper", "Readitlater", "Springpad", "Evernote", "Digg", "Delicious", "Diigo", pero siendo honestos, ninguno tiene la funcionalidad simple y rapida como la tenia "Note in Reader"; en fin, de todos los servicios anteriores estoy seleccionando a dos: delicious y Diigo.  En algunos días o semanas, tendré que decidirme por uno de los dos. 

Delicious.
Se me hace bastante simple el uso, ya que se parece mucho al anterior "Note in Reader",y lo único que tengo que hacer es publicar el feed RSS, en mi blog. La desventaja es que la actualización no es instantánea, ni tampoco permite configurar o "customizar" la forma en que se desplegaran los links en el blog.

Diigo. (Digest of Internet Information, Groups and Other stuff.)
Este servicio ofrece la misma funcionalidad, aparte de que ofrece compartir no tan solo hyperlinks o bookmarks, sino capturas, notas, videos, etc. Es un servicio mas completo y aparte de que cuando se agrega con el "Diigolet" la publicación en el blog es instantánea. El inconveniente? es ofrecido por una compañía que ofrece planes de pago, es decir, tienen el plan gratuito, y dos mas de pago, como es de suponerse el plan gratuito es limitado.

Para seleccionar un servicio, no estoy viendo solo la funcionalidad actual, sino de ver a largo plazo que no vaya a cambiar para mal; como fue con Google Reader, y como ha sido el caso de muuuchos otros (Ma.gnolia.com , eSnips.com, Jots.com, Fungow.com, SpinSpy.com, Simpy.com, RawSugar).

La ventaja de Delicious es que creo que ofrecerá un servicio estable a largo plazo (aun y con lo problemas que ha tenido) y aparte de que la configuración es sencilla. La desventaja, como dije es que la actualización es lenta.

Hubiera usado "Diigo" sin vacilar, pero algo me hace dudar, tal vez porque no ha sido uno de los estables y "main players" ? También porque al tener planes de pago, algo me hace suponer que más tarde podrían forzar al plan gratuito a un plan de pago; o simplemente descontinúen el servicio.
“Diigo”, en otras palabras es como un delicious con vitaminas, y es entendible que siendo un mejor servicio no sea del todo gratuito.


Por lo pronto estaré mostrando ambos en mi barra de links.
En algunos días, o semanas veremos en quien es el ganador.



martes, enero 04, 2011

Ciclo de Vida de Desarrollo de Software - Scrum & Waterfall-

Recientemente he visto acerca de las metodologías para el desarrollo de sistemas/software/programas. Y lo que me ha llamado la atención es que existe un debate acerca de la metodología Scrum vs. En Cascada (Scrum vs. Waterfall).

Lo que se ha criticado fuertemente a la metodología En Cascada es que ahora reúne todo lo malo lo que una metodología puede tener: mucha documentación, es muy costosa, requiere mucho tiempo, desgasta a los equipos de trabajo, no hay unión entre líder/gerente-programador/desarrollador,  estresa a la persona, y si eso no fuera poco, el producto resultante por lo general termina enlatado o no funciona del todo.

Por el otro lado quienes apoyan a la metodología "Scrum"... si, efectivamente según reune todo lo opuesto a lo antes mencionado.
Scrum es una metodología dentro del desarrollo de software "Agil" (Agile).


Aun a pesar de lo anterior, hay quienes dicen que la metodología "en cascada" todavía se sigue usando aunque otros dicen que ya no se usa o que solo se usa en proyectos super-mega gigantescos y/o con un presupuesto de similares magnitudes.

Si algo puedo decir de ambas metodologías, es que no creo que "En Cascada" este en desuso, pero tampoco creo que "Scrum" sea la solución de todos los males.
Cada una tiene sus ventajas y desventajas, cada una puede tener sus adaptaciones, y cada una puede ser apropiada para determinado tipo de proyecto.

"Scrum" asume o parte de que el recurso humano está comprometido con el proyecto, o que no va a "desperdiciar" los recursos de la empresa. Eso no es siempre cierto y no siempre sucede.

Por el otro lado, "en cascada", sí requiere de mayor esfuerzo en cuanto a planeación, y diseño. Creo que uno de los graves problemas de "en cascada" es porque asume que el sistema una vez definido este no cambia.


Bien, no quiero seguir con un debate interminable, o decir que una metodología es mejor que la otra; sino simplemente dar un punto de vista, hacer mi aporte y describir la metodología que he seguido -y sin ser arrogante- realmente me ha dado excelentes resultados.

El debate que percibo, parece que dan por sentado que solo estas dos metodologías son las unicas o las principales: Scrum o En Cascada.
Pero evidentemente existen muchas más, incluso pudieran entenderse que una es una variante de otra, o que una clasifica a otras, por ejemplo: Espiral, Iteraciones, Prototipo Rápido, Modelo V, RAD, etc.

Que es lo que me ha servido o funcionado?
No es cascada, ni tampoco Scrum, lo que me ha funcionado es una combinación de metodologías.
Cuando tengo que realizar un sistema, antes de seleccionar la metodología y seguirla, primero debo entender el objetivo principal del sistema, y saber qué es lo que se espera del sistema, de igual forma saber los limitantes en cuanto a tiempo y recursos tanto económicos, humanos y tecnológicos.

Efectivamente, no podría aplicarse la misma metodología para un programa en el que tienes dos desarrolladores, a uno que tienes 20, o uno que tiene 500 dólares en presupuesto, a uno de 50 mil dólares, o un sistema donde solo una persona lo va a manejar y tienes todo el tiempo que necesites para terminarlo, que un sistema donde 100 personas lo van a usar y necesita estar terminado en tres meses.

Existen muchos factores a tomar en cuenta para seleccionar la o las metodologías a usar.
Creo que en la mayoría de los proyectos, se usa una metodología hibrida, o como dije anteriormente analizar el proyecto y seleccionar la adecuada.

Por mencionar un ejemplo sencillo de uno que desarrollé, era para una empresa maquiladora (no daré el nombre por privacidad) pero esta empresa tenía un software que manejaba 'casos de clientes', cada caso era simplemente un archivo que se descargaba mediante FTP y al terminar el proceso al que se sometia, se volvía a subir por FTP. Ellos ya tenían un programa que les administraba los casos, pero me llamaron para mejorarlo (como no tenían el código fuente, tuve que volverlo a hacer).
El requerimiento de ellos fue tan simple como:
"Queremos que el nuevo programa haga lo que hace el actual, mas aparte..." y era una lista con alguna docena de requerimientos adicionales.
También fueron claros en cuanto a la interface, ellos dijeron --No queremos que se modifiquen las pantallas, estamos acostumbrados a ellas, y queremos que sean iguales-. y mencionaron el tiempo y el presupuesto al que debería sujetarse el proyecto.

Tenía que adherirme a su presupuesto y tiempo. Hice un breve análisis y planeación, emplear la metodología de Prototipos, Scrum, En Cascada, o Espiral, no fue necesaria. Y la metodología principal que apliqué fue RAD (Rapid Application Development), ya que simplemente era re-hacer las pantallas (el programa que ellos tenían era mi prototipo), programarlas, e implementar los requerimientos adicionales. No querían entregas parciales, querían el producto en producción pero totalmente terminado.
En 45 días tenían el programa funcionando, en producción ya probado y sin bugs. No hubo iteraciones, no hubo sprints, no hubo juntas diarias, simplemente porque no era necesario,  hacerlo era retrasar el proyecto.

El resultado final y real: lograron manejar de entre 600-800 casos diarios que hacian con el anterior programa, a cerca de 1000 a 1200 diarios, y el proyecto fue terminado en la mitad de tiempo y presupuesto.

El desarrollo de software no es tan simple como escoger lo último en tecnologia, con lo último de metodología para asegurar el éxito; en muchos casos, sino es que en todos, el análisis, la planeación y el factor humano son decisivos.

martes, noviembre 02, 2010

SQL Filtro de Registros por Hora

Tenia un SQL que filtraba registros por hora -sin fecha-, o basado en un horario.
El caso era, obtener el nombre del horario en el cual una persona deslizaba/marcaba su gafete/badge.


Funcionaba en Access sin problemas:
" SELECT -campos-" +
" FROM   -tabla-   "+
" WHERE  HoraInicial < #" + DateTime.Now.ToShortTimeString() + "#" +
" AND HoraFinal> #" + DateTime.Now.ToShortTimeString() + #'";

Donde "DateTime.Now.ToShortTimeString()" es la hora en que la persona deslizaba su gafete.

Pero ahora que modifico el programa -en C# - y leer los datos desde SQL Server, esto pues no funciona, creí que solo reemplazando los # (gatitos o pound o sharp) por ' (comilla simple) funcionaria, pero no fue así.

Para no reinventar la rueda, googleé por unos minutos, pero las respuestas que encontraban no me satisfacian porque se tenia que crear funciones y agregarlas a la base de datos, cosa que para este caso no es lo recomendable y hubo otras que estan completamente equivocadas. por ejemplo no distinguen entre AM y PM, o bien tienes que hacer malabares con la fecha para obtener la hora, etc .

Después de haber visto algunas otras soluciones, hubo una que me ayudo a completar el filtro que necesitaba, finalmente quedo :
" SELECT -campos-" +
" FROM -tabla-" +
" WHERE " +
" CONVERT(VARCHAR,HoraInicial ,108) <= '" + DateTime.Now.ToString("HH:mm:ss:") + "' " +
" AND " +
" CONVERT(VARCHAR,HoraFinal ,108) >= '" + DateTime.Now.ToString("HH:mm:ss:") + "'";

Esto es para mi futura referencia, y por si caso a alguien mas le pueda servir.

martes, enero 12, 2010

Beta Pública del Asistente Bíblico

Solo para hacer el anuncio, del proyecto que anteriormente habia mencionado, ya estoy autorizado a dar la notica después de que se ha hecho el anuncio oficial en el website.

Bien, uno de los proyectos que tengo tenemos en mano es el diseño y desarrollo de un software que ayuda en el escudriñamiento de las Sagradas Escrituras, se llama Asistente Biblico Juan 539.

Hemos estado trabajando ya por algunos meses, durante las noches y fines de semana. Y si todo va bien, con los permisos sobre todo, se estará haciendo pública la version Beta de Juan 539.
Mientras tanto sigue en fase de desarrollo y beta privada, para detalles acerca de algunos aspectos del desarrollo, una parte esta documentada en el Blog.

domingo, diciembre 20, 2009

Programar o Desarrollar Rápido

En el sitio http://codigodemaquina.org, hicieron la pregunta "¿Cómo programar o desarrollar más rápido?", hice mi pequeña aportación dando algunos puntos que me han ayudado a desarrollar y terminar aplicaciones en un muy corto lapso de tiempo.
Actualmente no soy desarrollador o programador, hace ya algunos años fuí, de hecho esos fueron mis primeros trabajos, como 'Programador', 'Software Engineer' y 'Project Leader', actualmente ya no es mi principal actividad, pero sí es algo que me ha gustado, creo que es porque todos mi proyectos fueron terminados exitosamente. Y me ha gustado al grado que he estado trabajando en un proyecto en mis tiempos libres,y próximamente estaré anunciando el lanzamiento de ese programa.

Bueno, quiero listar esos puntos en este espacio con un poco de mas detalle,como una forma de compartir el conocimiento y espero sirvan a más de uno -osease aparte de mi-.

Los puntos que me han ayudado a programar mas rápido son:



  1. Tener un bosquejo de lo que vas a hacer primero en papel. Ya sea una función, una pantalla, un procedimiento, una clase, etc.
    No me ha funcionado el ir rápidamente y sentarme a programar, cuando hacía eso, muchas veces tenia que rediseñar lo que habia hecho;  El tenerlo en papel, y literalmente en papel, es porque me permite llevarme el diseño de lo que estoy haciendo a todos lados, y hacer modificaciones segun sea necesario o hacer comentarios al momento.



  2. Definir bien lo que hará tu programa, de preferencia hacer un listado de las funciones o requerimientos que debe de hacer tu programa, y ponle fechas de implementación o cuándo ya deben de estar implementadas/programadas.
    Tener un objetivo, claro y simple de lo que hace tu programa, aunque muchas veces puede pensarse que es obvio, por ejemplo, diseñar/hacer un "Sistema de Inventarios", aunque sea eso, trato de definir un objetivo de ese sistema, por ejemplo, el sistema de inventarios, cual sería su principal objetivo?... facil se piensa en "tener control de las existencias de las mercancias", pero muchas veces las empresas piden un sistema porque tiene un problema identificado... si la empresa dice "necesito un sistema porque se me pierde la mercancia", entonces ese seria un primer objetivo, o bien otro seria "necesito un sistema porque me quedo sin mercancias y nos damos cuenta muy tarde", entonces el diseño del sistema se enfocaría en esos aspectos... cuando ya el sistema esta desarrollado, muchas de estas cosas estarían incluidas, pero cuando tienes que decidir entre qué prestanciones debe de tener el sistema, tu objetivo principal te dirá cuales deben de implementarse, y cuales debe de posponerse. Las funciones o requerimientos deben de apoyar a ese objetivo principal, y junto a esas funciones deben de tener una fecha de implementación o de cuándo estarían listas.


  3. Tener una maquina rapida y multicore (tengo una quad core), ya que te permite el verdadero multitasking.
    Suena obvio, pero es preferible tener el equipo mas rápido posible, el multicore o la máquina que actualmente tengo, ha sido una maravilla, puedo tener ejecutando una máquina virtual donde este 'testeando' una aplicación, instalando varias aplicaciones y evitar basura en mi maquina principal, etc. Y evitar esos saltos que hace como que se congela la maquina por algunos instantes. A veces esas lentitudes, hacen que se pierdan segundos, o perder el hilo al ritmo que llevas.

  4.  Aprenderte de memoria atajos de teclado, tanto de Windows como de editores o de cualquier programa común que uses.
    No esta de mas decir que cuando estas haciendo algo con el teclado, resulta en perdida de algunos segundos el tener que ir a agarrar el mouse, solo para, por ejemplo, compilar, o ver las propiedades del proyecto, o cambiar a otra ventana, o etc... El teclear y aprenderse atajos o comandos, -debo reconocer- es algo que he aprendido de los 'linuxeros'.

  5. No pierdas tiempo programar-surfear-programar-surfear, mejor dedícate un tiempo solamente para programar, y despues surfeas en la red.
    Para algunos les funciona, para otros son vicios, pero en lo personal, hay momentos en los que puedo estar programando y surfeando, pero en la mayoría de los casos, he sido más productivo cuando solo me concentro en programar.

  6. No programes cansado.
    Como casi en toda actividad, el trabajar estando cansado, simplemente no funciona, no avanzas y estas propenso a cometer errores. En mi experiencia, no tan solo afectas el trabajo que haces, sino tambien al equipo en el que estas trabajando, tu humor ya no es el mismo.

  7.  Lleva una bitácora de lo que haces, de lo que harás, y de lo que has hecho. Te sorprenderás la cantidad de tiempo que te ahorras en acordarte y memorizarte cosas cuando inicies a programar.
    Creo que esta sugerencia, deberia de ser la primera, el llevar listas de pendientes, o cosas por hacer o de ideas, ayuda mucho. Te ahorras tiempo en recordar, y memorizar, cuando desarrollas; entre mas pequeño sea el equipo de desarrollo, más cosas tienes que tener en la mente, tienes que trabajar con más cosas al mismo tiempo. Una agenda o un simple cuaderno de notas, evita la pérdida de tiempo.. incluso sugeriria que esa agenda fuera siempre de una o maximo dos hojas que liste los puntos por hacer, o que recientemente hiciste, o ideas a revisar. Si tienes más hojas que esas, trata de reducirlas.No debe de caerse en ahora tener que perder tiempo en administrar la 'agenda' o perder tiempo en pasar hoja tras hoja tras hoja buscando cosas.
    Con tan solo ver una página o dos, debes de tener toda la información necesaria de tu proyecto y programa.


  8. Ten a la mano lápiz y papel cerca (como no uso dos monitores, el papel y lápiz me ayuda bastante).
    Todavia no tengo dos monitores, espero el próximo año tenerlos, pero mientras tanto, el tener papel y lápiz a la mano me ayuda bastante, el hacer diagramas rápidos, el hacer anotaciones que me pueden servir más adelante, me ha ahorrado mucho tiempo en estar haciendo clicks en ventanas o abrir y cerrrar aplicaciones.
    He pensado y probado los desktops virtuales, pero me quitan recursos, y no me han funcionado ya que dejo de ver la pantalla principal. Si tienes dos monitores, tal vez esto no te ayude mucho, pero en mi caso, me ha servido.

  9. Lee libros, te ayudará a no reinventar la rueda y aprenderás cómo hacer las cosas más rápido.
    No tan solo te ayuda a ver soluciones de algo que pudieras necesitar más adelante, sino tambien te da ideas de cómo hacer las cosas, y otra forma de hacerlas, y es más te ayuda a verificar si tus métodos son buenos o necesitan mejorar.

  10. Si te tardas en implementar algo, déjalo y comienza otra cosa, despues regresa y verás que lo puedes solucionar más rápido.
    Es como despejar la mente, es como salir de un "loop", si en algo te atoras, simplemente déjalo para mas tarde, date un 'break', inicia otra cosa, avanza en esas cosas fáciles y rápidas que se pueden hacer y terminar pronto; después regresa a eso que esta llevando tiempo y dedícaselo, cumpliendo con el punto 6 anteriormente listado.


  11. Tener un buen ambiente que te permita concentrarte sin interrupciones.
    A algunos nos gusta programar con musica, unos con musica clásica, otros con musica estridente,cada quien puede definir su "buen ambiente", el punto es que permita tu concentración y que no te interrumpan, muchas veces tienes la idea, solo es cuestion de trabajarla, o incluso ya encontraste la solucion y estas implementando, en mi caso, cuando me interrumpen, siento una sensacion de aquellas, que cuando esta a punto de romper el record o llegar a la final del videojuego, se va la luz. Es algo frustrante. Muchos preferimos trabajar en la madrugada, otros ya muy noche, otros encerrarnos en la oficina, esto con el propósito de concentrarse y avanzar sin interrupciones.

  12. Tener equipo que te haga sentirte cómodo, pantalla grande, buen teclado, silla comoda.
    En la medida de las posibilidades, tener todo que te haga sentirte cómodo; por ejemplo: pantalla grande, buen teclado, buen mouse, etc. En mi caso, quisiera tener una silla Aeron, pero a veces no se puede, y para cumplir con este punto, de sentirse cómodo, mejor adquirí uno de estos (para la silla que uso), que a juzgar de lo que he probado, no tiene nada que pedirle a una Aeron. En fin, trata de tener o hacer todo para que tengas un entorno agradable, y que te haga sentirte cómodo.

  13. Y aunque suene obvio, aprende a teclear sin ver el teclado.
    Suena obvio y lógico, entre más rápido escribas más rápido programas.
Para ver el post original en codigodemaquina.org, sigue el link.