Mostrando entradas con la etiqueta técnico. Mostrar todas las entradas
Mostrando entradas con la etiqueta técnico. Mostrar todas las entradas

domingo, 14 de junio de 2009

Bucle infinito

Para que se entienda claramente que significa la expresión "entrar en un bucle infinito" (looping).

El director le dice a la secretaria:
- Vamos a viajar al exterior por una semana, para un Seminario. Haga los preparativos del viaje...

La secretaria llamada al marido:
- Voy a viajar al exterior con el director por una semana. Cuídate, querido.

El marido llama a la amante:
- Mi mujer va a viajar al exterior por una semana, vamos a pasarnos esa semana juntos, mi reina...

La amante llama al niño a quien le da clases particulares:
- Tengo mucho trabajo la próxima semana. No tienes que venir a clases.

El niño llama a su abuelo:
- Abuelo, la próxima semana no tengo clases, mi profesora estará ocupada. ¡Vamos a pasar la semana juntos!

El abuelo (que es el director) llama a la secretaria:
- Voy a pasar la próxima semana con mi nieto, por lo que no voy a participar en el Seminario. Puede cancelar el viaje.

La secretaria llama al marido:
- El director de la empresa cambió de idea y acaba de cancelar el viaje.

El marido llama a la amante:
- No podremos pasar la próxima semana juntos, el viaje de mi mujer fue cancelado.

La amante llama al niño de las clases particulares:
- Cambio de planes: esta semana vamos a tener clases como siempre.

El niño llama al abuelo:
- Abuelo, mi profesora me dijo que esta semana tengo clases. Discúlpame, no voy a poder hacerte compañía.

El abuelo llama a la secretaria:
- Mi nieto me acaba de decir que no va a poder estar conmigo esta semana... Continúe con los preparativos del viaje al seminario...

domingo, 21 de diciembre de 2008

Variables al Paso

Hola a tod@s:

Bueno como muchos sabréis, en casi todos los lenguajes de programación hay dos formas de pasar las variables a funciones o procedimientos, por valor y por referencia:

  • Por valor significa que la función  recibe una copia del valor que tiene la variable.
  • Por referencia significa que se pasa la posición de memoria donde esta guardada la variable, por lo que la función puede saber cuánto vale, pero además puede modificarla de cualquier manera el valor de la variable original.

Bien en VB.NET no iba a ser menos, cuando definimos una función e indicamos sus parámetros lo hacemos mediante "ByVal" para indicarle que es un paso por valor, y con "ByRef" para indicar que es un paso por referencia.

Por ejemplo si definimos:

Private Function Duplica(ByRef a As Integer) As Integer


       a *= 2 'igual que poner a = a * 2


       Return a


End Function




El parámetro "a" se está recibiendo por referencia, lo que hace la función es duplicar el valor del parámetro y devolver el valor resultante, evidentemente este último paso sería innecesario pues al tratarse de un paso por referencia el contenido de la variable original queda modificado tras ejecutarse la llamada a la función.



Sin embargo, no hace mucho, he descubierto algo curioso en este lenguaje, y es que si cuando hacemos la llamada a una función una función que está definida para recibir los parámetro por referencia, podemos forzar a que se envíe una copia del parámetro original, esto se consigue metiendo la variable original entre paréntesis. Mejor lo vemos en un ejemplo:





   1: Module Module1


   2:  


   3:     Sub Main()


   4:         Dim a, b, c As Integer


   5:         a = 2


   6:         b = 2


   7:         c = Duplica(a) 'llamamos a la función pasando él parámetro por referencia


   8:         Console.WriteLine("a = " + a.ToString + " c = " + c.ToString)


   9:  


  10:         c = Duplica((b)) 'llamada a la función pasando el parámetro por valor


  11:         Console.WriteLine("b = " + b.ToString + " c = " + c.ToString)


  12:  


  13:         Console.ReadLine()


  14:     End Sub


  15:  


  16:     Private Function Duplica(ByRef a As Integer) As Integer


  17:         a *= 2 'igual que poner a = a * 2


  18:         Return a


  19:     End Function


  20:  


  21: End Module




En el ejemplo definimos 3 variables, a y b que tendrán un valor inicial de 2 y usaremos como parámetro para probar la función definida anteriormente, c nos servirá para almacenar el valor devuelto por la función.



Si ejecutamos el código veremos como en la llamada de la línea 7 se modifica el valor de "a" y que coincide con el valor devuelto por la función, es decir se está ejecutando el paso por referencia correctamente. Sin embargo en la llamada a la función de la línea 10, podemos comprobar por medio de este ejemplo, que el valor de b no es alterado, pero la función retorna el valor correspondiente tras su ejecución.



Es una curiosidad que quería compartir, y que si os paráis a pensarlo, tiene sentido, al encerrar la variables entre paréntesis, estamos priorizando la  evaluación de dicha variable, y lo que enviamos a la función es el resultado de dicha evaluación. Puede ser interesante si trabajamos con librerías y/o clases no desarrolladas por nosotros, o en las que no podemos modificar el código, y queremos pasarle parámetros por valor.



Espero que os sirva de algo, xD.



PD: No estoy seguro de si en C# también funciona así, aún no lo he probado.



 



Saludos.

domingo, 30 de noviembre de 2008

Cursos Tecnologías Microsoft

Hola a tod@s, es domingo, y hoy no me apetece escribir mucho, hoy es día de Ctrl+C, Ctrl+V jeje! Os dejo unos links que me ha envíado un amiguete.

http://www.krasis.com/CampusMVP/files/certificaciones-microsoft.pdf

http://www.microsoft.com/spain/certificaciones/certificaciones.aspx#

http://shop.campusmvp.com/Catalog-Certificaciones-de-Desarrollo_48.aspx


La verdad es que estas certificaciones, no son gratis y bueno, como algunos son estudiantes, hay crisis, etc... aquí también os dejo los links de unos cursos de capacitación oficiales de Ms y gratuitos.

Desarrollador 5 estrellas:
http://www.mslatam.com/latam/msdn/comunidad/dce2005/

Dedicado para los que tienen ganas de aprender un poco como funciona .NET, está bastante bien, para los que ya saben algo, los primeros exámenes se pasan con cierta facilidad, yo me he quedado atascado en el examen de CardSpace de la 4 estrella, que cuando lo suspendo, pienso que “mañana lo hago y fijo que apruebo”, pero resulta que ese mañana es después de 2 meses, y claro, vuelvo a cargar, así creo que llevo 2 o 3 intentos sin aprobar…. L

Para los que van por la rama de sistemas, o para quien tenga interés en aprender, existen unos cursos parecidos sobre sistemas de servicio de MS: Windows Server, SQL Server (Supongo que a nivel de administración), BizTalk, etc…

Profesional 5 estrellas:
http://www.mslatam.com/latam/technet/PCE2/


PD: Veo que en “Desarrollador 5 estrellas” han incluido unos cursos opcionales sobre “Entity Framework”, “SQL 2008”, “MOSS 2007”,”LINQ”,”WM6” y “Silverlight 2.0”, no sé el tiempo que llevan ahí, ya que hacía mucho que no entraba.


Espero que a alguien le sea de utilidad

Saludos a
tod@s

domingo, 23 de noviembre de 2008

Malditos OCX en Windows VISTA


Hola a tod@s, si estás como yo, migrando a Windows Vista, seguramente te habrás encontrado con algún mensaje de error al intentar ejecutar alguna aplicación antigua hecha con VB 6.0 por algún OCX que no se encuentra en el sistema, etc…

Microsoft tiene cuenta de ello, por eso ha elaborado un documento en donde expone que algunos componentes que se incluían en Windows XP, muchos de ellos pertenecientes al SP 6 de VB, ya no se incluirán en Windows VISTA, y nos indica los que han sido testados y son soportados VISTA, y aunque no lo digan, en este documento tampoco dice donde los podemos encontrar, así que búscate la vida… El documento lo podéis consultar aquí

A mi concretamente mi programa utilizaba el COMDLG32.OCX, que no estaba en el sistema de VISTA, este aparece en la lista de OCX soportados, así que manos a la obra:

Buscamos el COMDL32.OCX, se puede encontrar fácilmente en Internet o podríamos copiarlo de un Windows XP u otro ordenador que lo tenga, es un control, no es necesario instalarlo, pero si registrarlo.

El siguiente paso es registrarlo, para esto, lo común, es copiar el archivo en cuestión en la carpeta System32 , luego debemos ejecutar la sentencia :


regsvr32 C:\windows\system32\COMDLG32.OCX


OJO: Antes no era necesario, pero en Güindows VISTA, es necesario ejecutar esta sentencia con privilegios de administrador, no va a salir la ventana de permitir y demás, así que debemos seleccionar el comando cmd.exe (para abrir una ventana de Shell) y con el botón derecho darle a ejecutar como administrador, sino lo hacemos así recibiremos un mensaje de error.


Con esto nuestra aplicación podría empezar a funcionar, digo podría porque en mi caso, me ha dado el mismo problema con MSFLEXGRD.OCX, pero no hay problema, sería repetir el mismo proceso con las librerías que vaya necesitando.


Esto es común para el sistema, es decir, si dos aplicaciones utilizan el mismo control, no deberemos repetir la operación por cada una, ya que en aplicaciones antiguas tipo las de VB, los controles y librerías eran compartidas.

Espero que os sirva de algo.

Saludetes.

sábado, 22 de noviembre de 2008

usb 3.0

Hola a tod@s, no suelo publicar nada referente a las novedades de hardware, pero creo que este tema merecía un post:

Hoy en día, para nadie es novedad, que las conexiones serie por USB es uno, sino el que más, estándar más extendido para la conexión de periféricos. Pues haciéndome eco de una serie de artículos de http://www.xataka.com/ me entero, que ya podemos hablar de USB 3.0.

No se ya cuanto tiempo llevamos con los USB 2.0 , que en comparación con su predecesor el USB 1.1 considero que fue un avance significativo, respecto a la velocidad, y permitió que los fabricantes desarrollasen una multitud de periféricos que utilizasen dicho puerto.
Todos estos avances estaban muy bien, pero nos seguíamos encontrado con una velocidad de transferencia limitada, si lo comparamos con otros sistemas, otra de las deficiencias, es que la capacidad de alimentar a los periféricos por medio del mismo cable USB estaba limitada a los 5V que este provee, y cuando el consumo del periférico era mayor debemos utilizar una fuente de alimentación externa
El sistema USB 3.0 ha sido desarrollado por Intel, y según algunas de las especificaciones, posee una mayor tasa de transferencia y la posibilidad de transmitir más energía a través del mismo cable, justamente las limitaciones que os comentaba antes del USB 2.0.

Como consigue todo esto, el USB 2.0 posee 4 líneas, no hay más que fijarse en el conector, 2 son para datos, una pista es de corriente y la otra es para la toma de tierra (GND), según he leído en el USB 3.0 se añaden 5 líneas. Dos son para enviar datos y otras dos para recibir, permitiendo de esta forma comunicaciones full-dúplex. (Con esto creo que se perderá el hablar de un puerto USB como un puerto serie, capaz de multiplexar hasta 127 canales, si no me equivoco) Con este aumento de líneas y la posibilidad de las transmisiones bidireccionales, podremos hablar de velocidades de 4.8 Gbits/s (unos 600 Mb/s) frente a los 480 Mb/s que nos ofrecía el USB 2.0

Otro de los puntos que hablábamos es de la intensidad que circulaba por el cable USB que muchas veces era insuficiente, sobretodo si teníamos varios periféricos colgados del mismo puerto. Con el nuevo USB 3.0 dispondremos de una intensidad de unos 900 mA frente a los 100 que nos brinda el USB 2.0
Evidentemente, todos estos cambios, más líneas de datos, mayor transmisión de energía hace necesario que los cables USB se hagan más gordos y menos flexibles o manejables, llegando a parecerse tal vez a un cable de red Ethernet.

Y ahora la pregunta del millón… ¿Voy a tener que pinchar en mi ordenador una tarjeta controladora para los nuevos USB? La respuesta es no. Tal como ha pasado con el paso de la versión 1.1 a 2.0 la compatibilidad está garantizada, aunque estos en nuevos conectores se incrementa el Nº de líneas de datos y demás, el conector es muy similar situando los nuevos contactos de forma paralela de manera que se mantenga la compatibilidad.

Intel espera tener el estándar de USB 3.0 finalizado antes de acabar el año, de forma que a mediados de 2009 el resto de fabricantes ya puedan disponer de controladoras para este protocolo y, a principios de 2010, empiecen a aparecer los primeros dispositivos compatibles con USB 3.0. Sin olvidar, claro está, a los fabricantes de sistemas operativos, que deberán disponer de drivers adecuados para este nuevo sistema.



Claro que este aumento de la intensidad podría traer consigo un menor rendimiento energético. Pero también se ha pensado en eso, y USB 3.0 utiliza un nuevo protocolo basado en interrupciones, al contrario que el anterior que se basaba en consultar a los dispositivos periódicamente. El aumento de líneas en USB 3.0 provoca que el cable sea más grueso, un inconveniente importante. Si hasta ahora los cables eran flexibles, con el nuevo estándar estos tienen un grueso similar a los cables que se usan en redes Ethernet, siendo por tanto más rígidos. Afortunadamente, igual que pasa entre USB 2.0 y USB 1.1 la compatibilidad está garantizada entre USB 3.0 y USB 2.0, gracias al uso de conectores similares, cuyos contactos adicionales se sitúan en paralelo, de forma que no afectan en caso de usar algún puerto que no sea del mismo tipo. Intel espera tener el estándar de USB 3.0 finalizado antes de acabar el año, de forma que a mediados de 2009 el resto de fabricantes ya puedan disponer de controladoras para este protocolo y, a principios de 2010, empiecen a aparecer los primeros dispositivos compatibles con USB 3.0. Sin olvidar, claro está, a los fabricantes de sistemas operativos, que deberán disponer de drivers adecuados para este nuevo sistema.

martes, 18 de noviembre de 2008

Instalando Vista: Unir Windows Vista a un Dominio Windows 2003

Hola a tod@s, aunque el título os suene descriptivo, antes de nada deciros, que no voy a explicar como se une una máquina a un domino, creo que es algo bastante sencillo, y hay una gran variadad de info en internet.

Os voy a contar una historia que no creo que acabe en este pos, jeje! Resulta que el otro día me entraron un par de "Bichitos" en "la PC", y son de estos guays que te desactivan el antivirus, intentas ejecutar el spyBot o algo y te salta con el mensaje "... no es una aplicación win32 válida", bueno seguro que lo conoceis, y como no era la primerara vez que me pasaba.... y como Windows Vista ya tiene SP1... y como Windows Vista controla los "autoejecutables que se cuelan en tu pendrive" y como tengo una licencia por buen estudiante de informática... (bueno en realidad, nos las dan a todos, pero lo de buen estudiante me sonaba guay) ... pues que me he decidido a insalarme el windows vista por fin, hay que modernizarse abuela...

Bueno quitando un par de drivers que no conoce, y demás, menos mal que me reconoció bien la tarjeta de red y pude bajarme el resto, nah cosillas. Lo guay viene cuando te quieres unir a un dominio (si también nos dan licencias de los server a los estudiantes, para que hagamos nuestras pruebillas), claro, es algo que no haces todos los días, entonces, piensas... y como era, iba con nombre completo, solo el subdominio..... na pruebas, metes el nombre, pide una cuenta con permisos... tracatrá, no puedes concetarte, y acabando con la paja, la configuración es sencilla,. No se por que, pero recuerdo cuando salió el XP, que también había algún caso que debías modificar una directiva que decía algo como "Denegar el acceso por red a" y ahí estaba el usuario invitado, allí camufaldo, que tu querías compartir tu carpeta con todo el mundo, y que no, y que no, y.... supongo que el Vista tendrá más pijadas como esta, así que si puedo os las iré comentando aquí. Bueno, la solución que mira que me enrrollo:

Debes modificar una directiva local que trae el vista.
  • Vas a panel de control /Herramientas administrativas/Directiva de Seguridad Local (Después de aceptar el aviso, nos debería abrir una consola MMC)
  • Navegamos por el arbol de la izquierdo Directivas locales/Opciones de seguridad
  • En el panel de la derecha buscamos una directiva que pone "Seguridad de red: nivel de autenticación de LAN Manager"
  • Modificamos esta directiva, seguramente estará en valor "Enviar solo NTLMv2 y rechazar LM" debemos cambiarlo por "Enviar LM y NTLM: usar seguridad sessión NTLM2 si se negocia"

Aplicamos la directiva modificada, y con esto ya deberíamos poder unirnos al dominio.

Espero que os sirva de algo.

Salu2

domingo, 19 de octubre de 2008

gcc: error trying to exec 'cc1plus': execvp: No such file or directory

Las clases han vuelto y con ellas los "problemas". En la asignatura de Algoritmos, vamos a programar en C "yupi", y como es lo normal, no usaremos un compilador chachi con interfaz, depuración por pasos, poder añardir banderillas y demás, usaremos GCC (GNU Compiler Collection) que es el que está instalado, o mejor dicho viene con el Ubuntu de los ordenadores de los laboratorios de la facultad.

Pero en casa es diferencte, o no? intentas instalar algo con lo que te sientas cómodo, algo que no te de mucho chollo en los deberes, así que me instalo el Turbo C de borland para MS-DOS, pero a la primera de cambio compilando una práctica sencilla ya muestra algún problemilla, como por ejemplo que la librería time.h no está dentro de la carpeta Include\sys sino en Include y el tipo "timeval" no es reconocido... uy mejor nos cambiamos.

Así que googleando un poco, no encontramos con una versión de GCC para Windows llamada MinGW. Podemos ver las instrucciones de instalación y descarga aquí. Pero esto sigue sin funcionar del todo bien. :-( maldito struct timeval t;

Con toda esta serie de desastres consecutivos, te das cuenta de que necesitas un Ubuntu, así que te montas una "Maquina Virtual" con la versión Desktop del SO, que es lo que está de moda. Esto es genial, un par de pasitos, tenemos el entorno listo. Abrimos una ventana de terminal, y ... coño, pero si ya tenemos el gcc instalado, vale normal, está echo en C, supongo que se utilizará para recompilaciones de Kernel y cosas de estas que hace la gente en linux. Genial, con esto vamos por buen camino, o eso creía....

Pasamos la práctica aal Pc con linux damos a compilar gcc P1.C ...... Error, Mierda y me dice algo como "gcc: error trying to exec 'cc1plus': execvp: No such file or directory" , pero vamos a ver que es un práctica de 30 líneas, y llevo peleandome con esto 3 horas... volvemos a googlear, y encuentras entradas que dicen algo de VMWare, pero que pasa, que no voy a poder compilar con mi "Ubuntito Virtualizado", pues no resulta que por lo que he visto, a alguna persona le ha dado el mismo error tratando de instalar la versión server de VmWare, si ya lo decía yo "mis 30 líneas de código se las trae", bueno la solución a todo esto (en linux), es usar el apt-get, que por lo que veo, va a ser solución de muchas más cosas, la verdad es que está bien pensado, y no como en aquella época en la que Mandrake 7.1 (otra distro con la que también me ví obligado a pelearme) con la instalación desde la línea de comandos de los paquetes "rpm", ya llovió.

Bueno que no me enrrollo, para arreglar el problema del compilador lo que debemos hacer es llamar al apt-get y decirle que empiece a trabajar:
  • Abrimos una shell(ventana de terminal)
  • Nos cambiamos a modo root (su root y nos pide la pass)
  • Ejecutamos sudo apt-get install g++
Con esto se resuleve le problema del maldito mensaje "gcc: error trying to exec 'cc1plus': execvp: No such file or directory" no estoy seguro que sea extrictamente necesario cambiarse a root, yo lo necesité, pero no tengo mucha idea sobre linux. Con esto aún me sigue dando un mensaje de error que dice algo como referenece no encontrata __gxx_personality_v0, pero bueno ahora le duele en otro lado y supongo que voy por el buen camino, o por lo menos voy por uno.

Yo siempre trato de darle cariño a los linux, pero siempre acabamos a mal, es por eso que esta relación nunca puede funcionar.

Espero que os sirva de algo.

Saludos a tod@s

miércoles, 13 de agosto de 2008

Chiste Sql Injection

Hola a tod@s, hoy voy a republicar algo que ya hace tiempo que anda circulando por internet, incluso en su versión en inglés (donde si no me equivoco, la injección es un poco distinta), y que seguramente, a la gente que pueda comprenderlo (es un poco Friki xD), le hará tanta gracia como a mi. Bueno ahí os dejo las viñetas.



sábado, 17 de mayo de 2008

No puedo conectarme a Hotmail o alguna cuenta basada en autenticación http desde Outlook después de instalar IE 7

Saludos a todos los lector@s, bueno creo que ya iba siendo tiempo que apareciese algún artículo con alguna ayudilla en este blog. El que voy a describir es un problema con el que ya me he peleado hace algún tiempo, el cual tiene un remedio sencillo, si sabes de que se trata el problema y sabes donde buscar, este no fue mi caso la primera vez que me ocurrió, y hoy reinstalando el SO de mi portátil, me costó darme cuenta de que conocía la solución, pero es algo que debido a la poca frecuencia que tengo este problema la facilidad para acordarme de la solución es directamente proporcional.

El problema es el siguiente, configuras tu cuenta de “Hotmail” en MS Outlook o bien ya la tenías configurada con anterioridad y todo correcto, pero cuando intentas conectarte para descargar los mensajes de tu buzón, aparece el cuadro de diálogo para que introduzcas el nombre de usuario y contraseña, y aunque introduzcas los datos correctos, continua rechazando tu petición. Lo primero que piensas, por lo menos en mi caso, fue en una caída de los servidores de MSN, cosa muy extraña, pues seguro que tienen más servidores “clusterizados” que pelos en la cabeza.

Este problema, reconocido, es fácilmente detectable, los síntomas, como ya dije anteriormente, pueden ser, que nos intentemos conectar a un servidor de correo que utiliza autenticación basada en http y en la máquina cliente se encuentra instalado el navegador Internet Explorer 7.

Para solucionar el problema solo hay que instalar un parche, y reiniciar el equipo. El parche se puede descargar desde aquí:
http://www.microsoft.com/downloads/details.aspx?displaylang=es&FamilyID=1F9D33FF-7BFE-4336-9E65-972ED21324C4

Si deseas consultar los detalles del problema, aquí dejo el enlace a la “Base del conocimiento” : http://support.microsoft.com/kb/904942
Espero que os sirva de algo, por lo menos a mi me ha funcionado.