domingo, 12 de febrero de 2012

Reparar el menú contextual de WinRAR

Buenas.

Hoy he solucionado un problema que tenía en la lista de pendientes, y que por lo visto, no me afecta únicamente a mi. Desde siempre he utilizado la herramienta WinRAR en mi equipo para comprimir y descomprimir ficheros cuando encontraba la necesidad. A menudo suelo utilizar los menús contextuales "unzip here" y "add to zip" por comodidad. Cuando utilizas mucho éstas acciones, resulta una verdadera pérdida de tiempo tener que abrir el programa.

El caso es que desde hace unos meses, éstas opciones aparecen en el menú contextual ("click derecho"), pero aparentemente no hacen nada. Cabría pensar en primer lugar que se tratase de un mal funcionamiento por parte del programa. Y lo más rápido y lógico a éste respecto, es optar por la ya clásica solución "desinstalar y volver a instalar". Desgraciadamente, ésto no va a funcionar.

También se ha dado el caso de usuarios a los que no les aparecían las opciones en el menú contextual. A mi no me ha pasado, pero en las opciones del programa, hay un checkbox para que aparezcan. Es posible que también tengáis que aplicar la siguiente solución.

Si cometéis el error de buscar en google la solución, iréis a parar irremediablemente a la misma página de siempre, en la cual, un montón de gente que no tiene ni la menor idea de lo que habla, propone para todo las mismas soluciones, que solo retrasarán lo que tengáis entre manos. Internet es un lugar al que acudir en busca de cultura, conocimientos y pornografía. Desde aquí hago un llamamiento para que toda aquella gente que no sabe dónde se esta metiendo, utilice la siguiente norma: "SI NO SABE, NO CONTESTE!!".

Bueno, dicho ésto, a lo que nos enfrentamos no es más que el típico problema de permisos de Windows. La solución es ir a "C:\Program Files\WinRar\" si esa es vuestra ruta, e ir a los permisos de "WinRar.exe" desde botón derecho > propiedades. La solución es como matar mosquitos a cañonazos, pero que yo sepa es la única de momento.

Una vez en las propiedades, vamos a la pestaña seguridad. Donde nos aparecerá la siguiente ventana:


Seleccionamos en la lista superior, el usuario que nos interese. A continuación, pinchamos el botón editar.

Volvemos a seleccionar el usuario en la lista superior, y le marcamos el permiso control total. Aplicamos y aceptamos todas las ventanas.

Me imagino que los desarrolladores de windows habrán encontrado alguna grieta de seguridad relativa a ésta forma de ejecutar programas. Para evitarlo, habrán sacado un parche tan grande que cubre a todos los programas de ésta índole, como siempre, sin preocuparse de los daños singulares que nos puedan causar a tí o a mi. Lo mejor sería evitar ésta clase de problemas, y para ello hay que desarrollar software robusto. Ésto en UNIX no pasa. Lo que quiere decir, que es posible hacerlo bien. Pero como dice siempre mi abuela, que de informática no sabrá nada pero ya tiene muchos inviernos, "el que mucho abarca, poco aprieta".

Lo habitual es que cuando tu usuario se queda corto de permisos para realizar una acción, te salga la típica ventanita para proporcionar privilegios de administrador. Éste normalmente tiene "control total", aunque en la práctica hay cosas que se le prohíben hasta para administrador del sistema. (Es otra cosa que nunca entenderé). En éste caso, el usuario carece de los privilegios necesarios, pero el sistema no pide los privilegios de administrador. Simplemente pasa de tí. En cambio,  el programa WinRar.exe sí que tiene marcada la opción de "ejecutar como administrador", y es por eso que desde dentro del programa, podemos descomprimir y comprimir normalmente, aceptando ejecutar como admin. al principio. Cuando utilizamos botón derecho, no proporcionamos los permisos necesarios, porque algún desarrollador (de Microsoft o de WinRar) metió la pata en algún punto.

Solo me queda añadir, que si bien hay muchos problemas que se pueden solucionar de ésta manera, es una medida extrema que no se debe tomar como costumbre. Aplicar control total a un usuario sobre WinRar en tu PC personal, no debería tener efectos adversos. Hacerlo sobre Norton Comander en un PC al que normalmente acceden varios usuarios, por poner un ejemplo, ya es otro cantar.

Espero que os haya servido de ayuda!

Un saludo, Marcos R.


jueves, 2 de febrero de 2012

Comenzando con C


Hoy vamos a meternos un poco con el lenguaje C. Ésta entrada tratará de explicar brevemente como funciona éste lenguaje, y nos dará las claves necesarias para empezar a hacer nuestros programillas.
Si te interesan los artículos de PICs colgados anteriormente en Wirelearn, pero el C no acaba de entrarte por los ojos, presta atención a ésta explicación pues te será de gran ayuda.

Comencemos.

A lo largo de mis ya 4 años de estudios de informática, y otros 5 más al menos por mi cuenta, he visto muchas y diferentes maneras de tratar de enseñar un lenguaje. A mi entender, todas son buenas respecto a la intención, pero la mayoría fallan en cuanto a resultados.

Lo primero que debemos preguntarnos es ¿qué necesitamos? Hay quien opina que los Entornos de Desarrollo Integrado (EDI o en inglés IDE) son para tontos y gente que no sabe utilizar un PC. Nada más lejos de la realidad. Podría enseñaros a compilar en consola mediante la orden gcc (linux) por ejemplo, pero perdería el tiempo. Señores, dinosaurios del cretácico y seres del caldo primigenio, estamos en el siglo XXI. La consola es extremadamente útil, pero no para programar, y mucho menos para comenzar a hacerlo.

Visto ésto os recomiendo utilizar el entorno DEV C++. Libre e intuitivo.
Descárgatelo desde aquí, o busca el que más te guste por la red.

Dejemos claros unos cuantos conceptos antes de ponernos a programar como si no hubiese mañana:

    • C es un lenguaje COMPILADO: El procesador no entiende el lenguaje C. Solo entiende
      bloques de unos/ceros. Por lo que para probar nuestro programa, deberemos compilarlo antes. Ésto es, traducirlo a lenguaje máquina (entre otras cosas), y de ésto se encargará el compilador, que instalaremos con el IDE que os comenté hace unas líneas.

    • Acerca de ser un lenguaje compilado, hay un matiz muy importante. Cuando compilamos un programa, lo traducimos al lenguaje de nuestro procesador. Desgraciadamente, no hay un estándar global en cuanto a lenguaje de procesadores, y muy probablemente, si quereis portar vuestro programa a otra máquina, tengais que compilar los fuentes en ella o buscar otras alternativas. Éste es el principal motivo que hizo tan famoso a Java (compilado e interpretado) y que dió lugar a los demás lenguajes interpretados. Pero ahí entraremos en otro momento.

    • Es un lenguaje CASE SENSITIVE: Distingue mayúsculas y minúsculas, por lo que no
      es lo mismo miVariable que mivariable ni NombreUsuario que nombreUsuario.

    • Éste punto es de mi cosecha. Las llaves que vais a ver más adelante“{}”, no se ponen por casualidad. C a mi entender es un lenguaje muy duro en cuanto a la sintaxis. Hay que acostumbrarse a normas como que todas las instrucciones terminan en punto y coma, hay que respetar correctamente las llaves, etc.

    • Es un lenguaje, en definitiva, de alto rendimiento, porque los programas ya están en lenguaje máquina a la hora de ser ejecutados, pero da lugar a programas de baja portabilidad como resultado de ser compilado.

Ahora voy a hacer un pequeño comentario acerca de los tipos de ficheros con los que vais a tratar a la hora de progamar en C. Principalmente cabe destacar dos:

    • Ficheros de código ó ficheros .c: Aquí estará el codigo principal de vuestros programas. Código que será exclusivo para ellos y que no pretendéis reutilizar.

    • Ficheros de cabecera o ficheros .h: Contienen funciones y procedimientos construidos y listos para ser utilizados, tales como leer pulsaciones de teclado, imprimir por pantalla, o comparar dos cadenas. Si en algún caso observáis que aparece con frecuencia una misma función en vuestros programas, podríais plantearos crear una librería y meter dentro vuestra función, de manera que no tendríais que volver a escribirla. Bastaría con introducir al principio de vuestros .c una directiva #include “Ruta/nombreLibrería.h” y estaría lista para ser utilizada.

Una vez expuesto lo más básico acerca del lenguaje C, os recomiendo encarecidamente que le echéis un vistazo a éste pdf, que no es obra mía como podréis observar en la cabeza de cada página. Explica conceptos necesarios como tipos de dato, declaración de variables, y habla un poco de las librerías estándar que más adelante utilizaréis en casi todos vuestros programas. También podéis echar un vistazo a la página c.conclase.net, donde explican a fondo todos los conceptos que veremos aquí, pero con una perspectiva bastante más técnica.

En posteriores entradas veremos cómo crear un programa con DEV C++ e intriduciremos conceptos como función, parámetro, valor, referencia, etc.

No te lo pierdas!

Un saludo, Marcos R.