Tag Archive: unleashx


Las siete profecías mayas…

Es interesante observar o escuchar la información al respecto, pues es de nuestras raíces, pero en realidad va mas allá, algo que me produce escalofríos, además de observar los cambios que se predicieron, el cambio climático etc…pero que vamos hacer…
aquí una recopílación de diferentes fuentes pero como siempre tu tienes la última palabra….

culture maya

No todas las ciudades se desarrollaron al mismo tiempo. En los inicios de la cultura maya, las tierras altas edificaron las primeras construcciones. En el apogeo de la Época Clásica, entre los años 250 y 900 de nuestra era, las tierras bajas vieron florecer grandes ciudades, como Tikal, localizada en el corazón del Petén guatemalteco. Después de esto, el impulso creador se movió a las planicies y mesetas del sur de la península de Yucatán, en donde las ciudades Puuc tuvieron su momento de gloria.

Cada ciudad maya mantiene un estilo propio, aunque diferentes regiones y épocas presentan similitudes que se extienden a los centros ceremoniales dentro de ellas. Cuando visitamos las ruinas que aparecen de pronto entre la selva, no podemos menos que admirar las obras de ingeniería que garantizaban el abasto de agua y alimentos a los habitantes; los finos decorados de estuco; las estelas de piedra, mudos testigos del sistema calendárico más avanzado del mundo de entonces; la amplia red de carreteras que cruzaba todo el territorio, y que unía a las ciudades en el comercio y el intercambio.

Los nombres de las viejas ciudades fueron olvidados. Los que usamos hoy fueron inventados por exploradores y misioneros, viajeros y arqueólogos. Uno de los pocos nombres prehispánicos que ha llegado hasta nosotros es el de la ciudad de los brujos del agua, Chichén Itzáculture maya 2

La gran explanada ceremonial de Tikal contiene tres grandes plataformas, sobre las que están construidos los edificios piramidales tan comunes en las antiguas ciudades mayas. Por el norte de la gran plaza, una de estas plataformas delimita el área. Diez basamentos piramidales están construidos sobre ella, distribuidos en forma simétrica al oriente y al poniente de su eje central. Hacia el centro de la plaza, y también hacia el sur, otras enormes plataformas cumplen la misma función, para dar al conjunto una majestuosidad única. Los edificios, a la distancia, parecen salir de entre el mar verde de la selva tropical.

Las Siete Profecías Mayas
Cuando nos ponemos a reflexionar y observamos lo que sucede en el mundo sentimos de una u otra forma que los tiempos apocalípticos están ya presentes, así vivimos hoy tiempos de guerra por cualquier asunto, cambios climáticos que provocan grandes calamidades, amén de los desastres naturales que cada vez que se presentan tal parece que lo hacen con mayor contundencia, y ni que decir de nuestros comportamientos individuales y sociales cotidianos donde se pone en evidencia que, cada vez estamos más lejos de nosotros mismos y de los demás con el consecuente deterioro de las relaciones humanas.

Los Mayas sabían que todo esto iba a suceder y por ello nos dejaron un mensaje grabado en piedra que esta constituido por un elemento de alerta y otro de esperanza mismos que están contenidos en sus Siete Profecías, en el mensaje de alerta nos avisan de lo que va a pasar en éstos tiempos que vivimos, y en el de esperanza nos dicen de los cambios que debemos de realizar en nosotros mismos para impulsar a la humanidad hacia una nueva era, donde los valores mas altos empiecen florecer a través de la práctica cotidiana de de éstos por cada uno de nosotros, para llevar a la humanidad hacia el amanecer galáctico, en donde en la nueva era ya no habrá más caos ni destrucción. Las visiones de futuro, de nuestro presente están en las siete profecías que se basan en las conclusiones de sus estudios científicos y religiosos sobre el funcionamiento de universo.

Primera profecía



El mundo de odio y materialismo terminará el sábado 22 de de diciembre del año 2012 y con ello el final del miedo, en este día la humanidad se tendrá que escoger entre desparecer como especie pensante que amenaza con destruir el planeta o evolucionar hacia la integración armónica con todo el universo, comprendiendo y tomando conciencia de todo esta vivo y que somos parte de ese todo y que podemos existir en una nueva era de luz.

La primera profecía nos dice que a partir de 1999 nos quedan 13 años, para realizar los cambios de conciencia y actitud para desviarnos del camino de destrucción por el que avanzamos, hacia uno que abra nuestra conciencia y nuestra mente para integrarnos con todo lo que existe. Los Mayas sabían que nuestro sol es un ser vivo que respira y que cada cierto tiempo se sincroniza con el enorme organismo en el que existe, que al recibir un chispazo de luz del centro de la galaxia brilla mas intensamente, produciendo en la superficie lo que nuestros científicos llaman erupciones solares y cambios magnéticos, ellos dicen que esto sucede cada 5125 años, que la tierra se ve afectada por los cambios en el sol mediante un desplazamiento de su eje de rotación, y predijeron que a partir de ese movimiento se producirían grandes cataclismos, para los mayas los procesos universales como la respiración de la galaxia son cíclicos y nunca cambian, lo que cambia es la conciencia del hombre que pasa a través de ellos, siempre en un proceso a la perfección ( recordemos el mensaje de Jesucristo en la Biblia: “sed perfectos como lo es su padre en el reino de los cielos”). Los Mayas predijeron que el sábado 22 de diciembre del 2012 el sol al recibir un fuerte rayo sincronizador proveniente del centro de la galaxia cambiará su polarización y producirá una gigantesca llamarada radiante. Por ello la humanidad deberá estar preparada para atravesar la puerta que nos dejaron los mayas, transformando a la civilización actual basada en el miedo en una vibración mucho más alta de armonía, solo de manera individual se puede atravesar la puerta que permite evitar el gran cataclismo que sufrirá el planeta para dar comienzo a una nueva era, en un sexto ciclo del sol.

La primera profecía nos habla del tiempo del no tiempo, un período de 20 años que empezó en 1992 y que termina en el 2012, donde la humanidad entraría en el último período de grandes aprendizajes, grandes cambios. Asimismo la anunció que siete años después del comienzo de este período comenzaría una época de oscuridad que nos enfrentaría a todos con nuestra propia conducta, dijeron que las palabras de sus sacerdotes serían escuchadas por todos nosotros como una guía para despertar, ellos llaman a ésta época como el tiempo que la humanidad entrará al gran salón de los espejos, una época de cambios para enfrentar al hombre consigo mismo para hacer que entre al gran salón de los espejos y se mire, y analice su comportamiento con el mismo, con los demás, con la naturaleza y con el planeta donde vive. Una época para que toda la humanidad por decisión conciente de cada uno de nosotros decida cambiar, eliminar el miedo y la falta de respeto de todas nuestras relaciones.

Segunda profecía
Esta anunció que todo el comportamiento de la humanidad cambiaría rápidamente a partir del eclipse de sol del 11 de agosto de 1999, y ese día vimos como un anillo de fuego se recortaba contra el cielo, fue un eclipse sin precedentes en la historia, por la alineación en cruz cósmica con centro en la tierra de casi todos los planetas del sistema solar, se posicionaron en los cuatro signos del zodíaco, que son los signos de los cuatro evangelistas, los cuatro custodios del trono que protagonizan el Apocalipsis de San Juan.

Además la sombra que proyecta la luna sobre la tierra atravesó Europa pasando por Kosovo, luego por Medio Oriente, por Irán e Irak y posteriormente se dirigió a Pakistán e India, con su sombra parecía predecir un área de conflictos y guerras (lo cual ha venido sucediendo puntualmente). Los Mayas sostenían que a partir de los eclipse los hombres perderían fácilmente el control de sus emociones o bien afianzarían su paz interior y su tolerancia evitando los conflictos.

Desde entonces se vive una época de cambios que es la antesala de una nueva era, antes del amanecer es cuando la noche se hace más oscura, el fin de los tiempos es una época de conflictos y grandes aprendizajes, de guerras, separación y locuras colectivas que generará a su vez proceso de destrucción y evolución, la segunda profecía indica que la energía que se recibe desde el centro de la galaxia aumentará y acelerará la vibración en todo el universo para conducirlo a una mayor perfección, esto producirá cambios físicos en el sol, en la tierra y cambios psicológicos en el hombre alterando su comportamiento, su forma de pensar y sentir, se transformarán las relaciones y los modos de comunicación, los sistemas económicos, sociales, de orden y justicia, cambiarán las creencias religiosas y los valores aceptados, el hombre se enfrentará a sus miedos y angustias para resolverlos, y de ese modo podrá sincronizarse con los del planeta, y el universo; la humanidad se concentrará en su lado negativo y podrá ver claramente que cosa es la que está haciendo mal, este es le primer paso para cambiar la actitud y conseguir unidad que permite la aparición de la conciencia colectiva, se incrementarán los sucesos que nos separan pero también los que nos unen, la agresión, el odio, las familias en disolución, los enfrentamientos por ideologías, religión, modelos de moralidad o nacionalismo; simultáneamente más personas encontrarán paz, aprenderán a controlar sus emociones, habrá más respeto, serán más tolerantes y comprensivas y encontrarán la unidad, surgirá el hombre con un altísimo nivel de energía interna, personas con sensibilidad y poderes intuitivos para la sanación, pero también aparecerán farsantes que solo pretenderán tener ganancia económicas a expensas de la desesperación ajena. Al final del ciclo cada hombre será su propio juez, cuando el hombre entre al salón de los espejos para examinar todo lo que hizo en la vida, será clasificado por las cualidades que haya desarrollado en la vida, su manera de actuar día tras día, su comportamiento con los demás, y su respeto por el planeta, todos se ubicarán acordes a lo que sean, los que conserven la armonía comprenderán lo que sucede como un proceso de evolución en el universo, en cambio habrá otros que por ambición, miedo y frustración culparán a los demás o a Dios por lo que sucederá, se generarán situaciones de destrucción, muerte y sufrimiento, pero también se dará lugar a circunstancias de solidaridad y de respeto con los demás, de unidad con el planeta y el cosmos.

Esto implica que el cielo y el infierno se estarán manifestando al mismo tiempo, y que cada ser humano vivirá en el uno o el otro, dependiendo de su propio comportamiento, el cielo con la sabiduría para trascender voluntariamente a todo lo que sucede, el infierno con la ignorancia para aprender con sufrimiento, dos fuerzas inseparables, una que comprende que en el universo todo evoluciona hacia la perfección, que todo cambia, otra envuelta en un plano material que solo alimenta el egoísmo. En la época del cambio de los tiempos, todas las opciones estarán disponibles, prácticamente sin censura de ninguna clase, y los valores morales serán más laxos que nunca, para que cada cual se manifieste libremente como es, la segunda profecía afirma que sí la mayoría de los seres humanos cambia su comportamiento, y se sincroniza con el planeta, se neutralizarán los cambios drásticos que describen las siguientes profecías; hay que ser concientes de que el hombre siempre decide su propio destino, especialmente en esta época, las profecías son solo advertencias para que tomemos conciencia de la necesidad de cambiar de rumbo para evitar que se hagan realidad.

Tercera prfecía
La tercera profecía Maya dice que una ola de calor aumentará la temperatura del planeta, produciendo cambios climatológicos, geológicos y sociales en una magnitud sin precedentes, y a una velocidad asombrosa; los mayas dicen que el aumento de de la temperatura se dará por varios factores, uno de ellos generado por el hombre que en su falta de armonía con la naturaleza solo puede producir procesos de auto destrucción, otros serán generados por el sol que al acelerar su actividad por el aumento de vibración produce más radiación, aumentando la temperatura del planeta.

Por esta advertencia de la tercera profecía de los Mayas, se hace impostergable y urgente un cambio de conducta en lo individual y colectivo para asumir el compromiso de la practica cotidiana de acciones que ayuden a mejorar la ecología del planeta hasta lograr la plena armonía del actuar del ser humano con el entorno, a sabiendas de que el comportamiento del hombre será crucial para sobrellevar el aumento general de la temperatura causada por su propia conducta inconsciente y depredadora.

Cuarta profecía
La cuarta profecía dice que a consecuencia del aumento de la temperatura causado por la conducta antiecológica del hombre y una mayor actividad del sol, se provocará un derretimiento en los polos (ya tuvimos noticia reciente del desprendimiento de un bloque de hielo polar del tamaño del territorio del estado de Tlaxcala ubicado en el territorio mexicano), si el sol aumenta sus niveles de actividad por encima de lo normal habrá una mayor producción de viento solar, mas erupciones masivas desde la corona del sol, un aumento en la irradiación y un incremento en la temperatura del planeta. Los Mayas se basaron en el giro de 584 días del planeta Venus para calibrar sus cálculos solares, Venus es planeta fácilmente visible en el cielo, pues su órbita está entre la tierra y el sol. Ellos dejaron registrado en el códice Dresde que cada 117 giros de Venus marcados cada vez de que aparece en el mismo sitio en el cielo, el sol sufre alteraciones, aparecen enormes manchas o erupciones de viento solar; advirtieron que cada 5125 años se producen alteraciones aún mayores y que cuando esto ocurre el hombre debe de estar alerta, es el presagio de cambios y destrucción. En el códice Desdre también figura la cifra 1366560 kines que tiene una diferencia de 20 años con la cifra que aparece en el templo de la cruz en Palenque, que tiene tallado la cifra de 1366540 kines, correspondiendo esta diferencia al período de tiempo que llamaban tiempo de no tiempo, que es le que estamos viviendo desde 1992, los cambios en la actividad del sol serán más fuertes, puesto que las protecciones que tenemos a nivel planetario se están debilitando, el escudo electromagnético que nos cubre está diminuyendo su intensidad.
Sí sabemos que muchas cosas que queremos que no sucedan y que causan grandes tragedias finalmente suceden, debemos concentrarnos en producir resultados positivos de nuestras acciones y al mismo tiempo crecer con las dificultades que se nos presenten, debemos asumir la vida y tomar nuestras decisiones de manera conciente, hay que abrir los ojos a las posibilidades que puede traernos un mundo en el que todos culpan a los demás de lo que sucede.

Todas las profecías buscan un cambio en la mente del hombre, pues el universo está generando todos esos procesos para que la humanidad se expanda por la galaxia comprendiendo la integridad fundamental con lo que existe.

Quinta profecía
Esta profecía nos dice que todos los sistemas basados en el miedo sobre lo que se fundamenta nuestra civilización se transformarán simultáneamente con el planeta y el hombre para dar paso a una nueva realidad de armonía, el hombre está convencido que el universo existe solo para él, que la humanidad es la única expresión de vida inteligente, y por eso actúa como un depredador de lo que existe. Los sistemas fallarán para enfrentar al hombre consigo mismo y hacerle ver la necesidad de reorganizar la sociedad, y continuar en el camino de la evolución, que nos llevará a comprender la creación. El nuevo día galáctico está anunciado por todas las religiones y cultos como una época de paz y armonía para toda la humanidad, es claro entonces que todo lo que no produzca este resultado debe desaparecer ó transformarse, la nueva época de luz no puede tener una humanidad basada la economía militar de imposiciones de verdades por la fuerza.

Sexta profecía
La sexta profecía Maya dice que en los próximos años aparecerá un cometa cuya trayectoria pondrá en peligro la existencia misma del hombre, los Mayas veían a los cometas como agentes de cambio que venían a poner en movimiento el equilibrio existente para que ciertas estructuras se transformen permitiendo la evolución de la conciencia colectiva, todas las cosas tienen un lugar que les corresponde en todas las circunstancias, aún las mas adversas son perfectas para generar comprensión sobre la vida para desarrollar conciencia sobre la creación, por esto el hombre se ha enfrentado constantemente a situaciones inesperadas que le generan sufrimiento, es un modo de lograr que reflexione sobre su relación con el mundo y con los otros, así a lo largo de muchas vidas comprenderá las leyes universales de la razón de la creación, para los Mayas, Dios es la presencia de la vida que tiene todas las formas y su presencia es infinita.

El cometa del que habla la sexta profecía fue también anunciado por muchas religiones y culturas, por ejemplo la Biblia en el libro de las revelaciones aparece con el nombre de ajenjo. Sí el cometa aparece, es posible que su trayectoria lo lleve a chocar con la tierra, o también por medio de físicos o psíquicos logremos desviar su trayectoria (informaciones recientes nos hablan de un enorme asteroide que se ha descubierto en el espacio que en su trayectoria puede chocar con la tierra en los próximos años), los cometas siempre han formado parte del sistema solar, miles de residuos atraviesan, cruzan, rozan, van y vienen periódicamente e incluso chocan con los planetas que se mueven siempre tranquilos en órbitas regulares, alrededor del sol.

Los Mayas siempre estudiaron y registraron los eventos del cielo, su alerta fue prevenir al hombre de los peligros de no conocer las órbitas y períodos de grandes residuos que se cruzan con la trayectoria conocida de la tierra, ellos sabían que para el hombre moderno descubrir con anticipación un asteroide tan grande que pudiera causar su extinción y luego desviarlo sería uno de los mayores logros de la historia humana y un hecho crucial que nos uniría como especie. Antiguamente la esfera celeste era el dominio de los dioses, la aparición sorpresiva de un objeto desconocido que dominaba la noche era motivo de miedo y misticismo, por ese motivo los Mayas construyeron observatorios dedicados a estudiar los fenómenos, querían entender los impredecibles movimientos en el cielo, especialmente después de que establecieron las posiciones de los planetas y las estrellas. El peligro inminente del que nos alerta la sexta profecía nos obligaría a construir un nivel de cooperación internacional, a establecer un sistema de comando y control por encima de los países y una estructura de comunicación mundial, sería la única manera que los países declinaran su soberanía a una identidad como la Naciones Unidas, dando paso a un gobierno mundial para el bien común, sería un cambio para aprender a trascender la separación que es la base de nuestra sociedad.

Séptima profecía
Esta profecía Maya nos habla del momento que en el que el sistema solar en su giro cíclico sale de la noche para entrar en le amanecer de la galaxia, dice que los 13 años que van desde 1999 al 2012 la luz emitida desde la galaxia sincroniza a todos los seres vivos y les permite acceder voluntariamente a una transformación interna que produce nuevas realidades, culture maya 3 Que todos los seres humanos tienen la oportunidad de cambiar y romper sus limitaciones, recibiendo un nuevo sentido: la comunicación a través del pensamiento, los hombres que voluntariamente encuentren su estado de paz interior, elevando su energía vital, llevando su frecuencia de vibración interior del miedo hacia el amor, podrán captar y expresarse a través del pensamiento y con el florecerá el nuevo sentido.

La energía del rayo transmitido desde le centro de la galaxia activa el código genético de origen divino en los hombres que estén en una frecuencia de vibración alta, este sentido ampliará la convivencia de todos los hombres, generando una nueva realidad individual, colectiva y universal, una de las transformaciones mas grandes ocurrirá a nivel planetario, pues todos los hombres conectados entre si como un solo todo, dará nacimiento a un nuevo ser en el orden genético, la reintegración de las conciencias individuales de millones de seres humanos despertará una nueva conciencia en la que todos comprenderán que son parte de un mismo organismo gigantesco. La capacidad de leer el pensamiento entre los hombres revolucionará totalmente la civilización, desaparecerán todos los límites, terminará la mentira para siempre porque nadie podrá ocultar nada, comenzará una época de transparencia y de luz que no podrá ser opacada por ninguna violencia o emoción negativa, desaparecerán las leyes y los controles externos como la policía y el ejército, pues cada ser se hará responsable de sus actos y no habrá que implementar un derecho o deber por la fuerza. Se conformará un gobierno mundial y armónico con los seres más sabios del planeta, no existirán fronteras ni nacionalidades, terminarán los limites impuestos por la propiedad privada y no se necesitará el dinero como medio de intercambio; se implementarán tecnologías para manejar la luz y la energía y con ellas se transformará la materia produciendo de manera sencilla todo lo necesario, poniendo fin a la pobreza de siempre. La excelencia y el desarrollo espiritual serán el resultado de hombres en armonía que realizan las actividades con las que vibran mas alto y al hacerlo expandirán su nivel de comprensión sobre el orden universal, con la comunicación a través del pensamiento aparecerá un súper sistema inmunológico que eliminará las vibraciones bajas del miedo producidas por las enfermedades, prolongando la vida de los hombres, la nueva era no necesitará del aprendizaje del contraste inverso producido por las enfermedades y el sufrimiento que caracterizaron miles de años de historia.

Los hombres que conciente y voluntariamente encuentren paz interior, entran en una nueva época de aprendizaje por contraste armónico, la comunicación y la reintegración hará que las experiencias, los recuerdos individuales y conocimientos adquiridos estén disponibles sin egoísmos para todos los demás, será como una Internet a nivel mental que multiplicará exponencialmente la velocidad de los descubrimientos, y se crearán sinérgias nunca antes imaginadas. Se acabarán los juicios y los valores morales que cambian con las épocas, como la moda, se comprenderá que todos los actos de la vida son una manera de alcanzar una mayor comprensión y armonía, el respeto será el elemento fundamental de la cultura, transformará al individuo y a la comunidad y colocará a la humanidad en la posibilidad de expandirse por la galaxia, las manifestaciones artísticas y las actividades recreativas comunitarias ocuparán la mente humana, miles de años fundados en la separación entre los hombres que adoraron a un Dios lejano que juzga y castiga, se transformarán para siempre, el hombre vivirá la primavera galáctica, el florecimiento de una nueva realidad basada en la integración con el planeta y todos los seres humanos para en ese momento comprender que somos parte integral de un único organismo gigantesco y nos conectaremos con la tierra, los unos con los otros, con nuestro sol y con la galaxia entera; todos los hombres comprenderán que el reino mineral, vegetal, animal y toda materia esparcida por el universo a todas escalas desde el átomo hasta la galaxia, son seres vivos con una conciencia evolutiva, a partir de sábado 22 de diciembre del año 2012 todas las relaciones estarán basadas el la tolerancia y la flexibilidad, pues el hombre sentirá a otros como otra parte de si mismo.

contador de visitasvisitas webestadisticas web

Anuncios

En realidad crear un programa es fácil y complicado a la vez pero cuando se tienen los elementos y guías es fácil y divertido lo que se puede crear especialmente para un fin


Aquí les dejo este “manual de proceso a seguir”


Regla de oro de la programación: !! Nunca está terminado del todo ¡¡
§1 Sinopsis

Escribir un programa es establecer el comportamiento de una máquina mediante una serie de algoritmos que definirán su funcionamiento. En el estado actual de la ciencia, este algoritmo se plasma por escrito utilizando un lenguaje artificial comprensible por el humano-programador. Generalmente estas instrucciones, que aquí se denominan código fuente, vienen acompañadas de algunos datos en forma de texto o imágenes, contenidas en uno o varios ficheros denominados ficheros de recursos (“resources”). Sin embargo, las instrucciones y recursos solo pueden ser utilizadas por la máquina después de un proceso de traducción que es realizado por la propia máquina (puede ser distinta de la que ejecuta el programa). El proceso exige que el código fuente sea transformado en una nueva secuencia de instrucciones según un nuevo sistema de codificación (el lenguaje máquina), y que los recursos adopten una disposición particular. Este conjunto de instrucciones y datos, que constituyen el denominado ejecutable, corresponden a acciones concretas y datos, que pueden ser entendidas, ejecutadas y utilizados por la máquina.

En general este comportamiento pretende modelar o mimetizar el comportamiento de una entidad del mundo real, o de una abstracción que hemos imaginado; y es de tipo genérico. Se pretende que la máquina se comporte como una función que acepta un conjunto de condiciones de entrada y devuelve como salida un comportamiento concreto y predecible para cada combinación de las condiciones de entrada.
§2 Presentación del problema

Hay bastante literatura sobre programación en general; a los académicos les gusta hablar de “Teoría de la Programación”, y mucha gente se ha dedicado a especular sobre el tema. Incluso hay modas al respecto [4]. Es posible confeccionar una lista de las características que “debe” y “no debe” tener un buen programa (incluyendo la del Jefe, que solo tiene dos puntos: “Que esté para ayer; que salga barato”). El propio Stroustrup ( TC++PL) compara las condiciones para escribir un buen programa con las de escribir buena prosa. Según él, existen dos respuestas: “Saber que se quiere decir” y “Práctica. Imitar buenos escritores”. Más adelante nos recuerda que aprender a manejar bien un lenguaje puede constar tanto tiempo y esfuerzo como aprender a expresarse en un lenguaje natural o tocar un instrumento.

Por supuesto sería un atrevimiento por mi parte contradecir tan docta opinión, pero puestos a filosofar me gustaría puntualizar que el verdadero problema está en el segundo punto de la segunda respuesta; la primera, aunque ciertamente importante, me parece la verdad de Perogrullo . Siempre me ha parecido que programar (programar bien) tiene mucho de arte. Me parece que debe ocurrir como con la música; seguramente muchos pueden decir que debe tener una buena ejecución de violín, pero imitar a Paganini debe ser harina de otro costal. Seguramente los profesores de armonía saben que debe tener y no tener una buena sinfonía, pero otra cosa debe ser imitar a Mozart.

Bajando a la tierra; tampoco se trata aquí de hacer “Paganinis de la programación C++” (ya me gustaría para mí); el mensaje que quisiera transmitir es doble: El contenido en un viejo Refrán Español: “La Universidad no presta lo que la naturaleza no da”. Como suena un poco duro, añadiré un consuelo para los que somos menos dotados; un proverbio que leí hace tiempo, en línea con la respuesta de Stroustrup: “Por el dinero del trabajo los Dioses lo venden todo”.

A continuación se comentan brevemente los pasos imprescindibles en la creación de un programa C++. Vaya por delante, que las anotaciones de los puntos §3, §4 y §5 son opinión del que suscribe basados en la propia experiencia, por tanto totalmente subjetivos y opinables.
§3 Comprender el problema.

“Custom development is that murky world where a customer tells you what to build, and you say, “are you sure?” and they say yes, and you make an absolutely beautiful spec, and say, “is this what you want?” and they say yes, and you make them sign the spec in indelible ink, nay, blood, and they do, and then you build that thing they signed off on, promptly, precisely and exactly, and they see it and they are horrified and shocked, and you spend the rest of the week reading up on whether your E&O insurance is going to cover the legal fees for the lawsuit you’ve gotten yourself into or merely the settlement cost. Or, if you’re really lucky, the customer will smile wanly and put your code in a drawer and never use it again and never call you back”. Joel on Software “Set Your Priorities” http://www.joelonsoftware.com

“As more became known about what people wanted to do with computer, it became clear that there would always be increasingly more complex problems to solve. A part of that realization is the realization that our ability to accurately describe the problem determines the ability for the problem to be solved. Most people are incapable of clearly and precisely articulating — to the level necessary — the problems that they’re trying to solve. This is a problem that is getting larger and not smaller”. Robert Bogue (Jupitermedia Corp) en “Breaking Down Software Development Roles”

Esta es la típica obviedad que a veces se pasa por alto. Hemos dicho que escribir un programa es establecer el comportamiento de una máquina; parece lo más natural del mundo enterarse primero de cual es ese comportamiento. Tener una imagen mental lo más clara posible de las características de lo que pretendemos modelar. Esta cuestión es lo que los teóricos denominan el “espacio” del problema, “‘What’ domain” en la literatura inglesa.

A esta fase se la suele denominar análisis, y mi consejo particular es que después de una primera toma de contacto, el segundo paso sea definir de la forma más detallada posible el principio y el final del problema. Es decir: cual es la información de partida (incluyendo su formato y en que soporte se recibe) y cual es la información final y en que soporte se proporcionará; no es lo mismo mostrar una imagen que componer una factura o disparar un proceso si un sensor analógico-digital nos suministra una determinada señal (por citar algún ejemplo).

Normalmente en ambas cuestiones tiene mucho que decir el cliente [2], es lo que se llama especificación; el resto (lo que hay entre los datos de entrada y la salida), debe rellenarlo el programador. Generalmente si se tienen bien definidos ambos extremos, se tiene resuelta la mitad del problema; cuando se tengan diseñados los ficheros se tendrán dos terceras partes -ver a continuación-. Este sistema tiene además la ventaja de poner inmediatamente de manifiesto las indefiniciones de partida; a veces los clientes no saben exactamente qué desean y hay que ayudarles a centrar el problema.

Dentro de esta fase tiene especialísima importancia el tema de los límites; esto se refiere al orden de magnitudes que se manejarán. ¿De que rango serán las magnitudes numéricas? ¿Podrán adoptar valores negativos? ¿Hay información alfanumérica? ¿Como son de largas estas cadenas?. Especialmente si el programa implica diseño de archivos (como es casi seguro), ¿Cual podrá llegar a ser su tamaño dentro de la vida del programa?. Si se manejan ficheros u objetos binarios, ¿Como son de grandes? ¿Que concepto tiene el cliente de los que sería “rápido” o “lento”? (¿milisegundos, minutos, horas?). En esta fase sea especialmente precavido y no se crea a pié juntillas todo lo que le digan (intente hacer de abogado del diablo).

Como postre, diseñe las líneas maestras de una estrategia de recuperación de errores de ejecución, incluyendo que hará con los no recuperables (errores fatales). Piense por ejemplo que si algún día lo llaman para ver “que ha pasado”, quizás le interese disponer de un volcado de texto ASCII en el disco con una descripción del estatus del programa como parte de las funciones de salida ( 1.5). Hoy día, cuando se empieza a hablar de frigoríficos que avisarán de que faltan provisiones o de lavadoras que avisarán al técnico si se estropean, no estaría de más que sus programas estuviesen a la altura de las circunstancias.

§4 Diseñar los ficheros y módulos

Si el programa debe utilizar ficheros que no vengan impuestos (ya existentes), y suponiendo que todo lo anterior esté suficientemente claro, este es el momento de hacerlo. Ponga por escrito la especificación de tales ficheros, incluyendo el nombre que dará a las variables y, en su caso, el que tendrán en el disco o almacenamiento externo. Esto puede concretarse quizás a la definición de algunas estructuras ( 4.5). En esta fase es posible que tenga que repreguntar alguna cosa que se pasó por alto.

Teniendo ya una imagen más o menos clara de lo que hará su programa, si éste es mediano o grande, es posible que todavía tenga que realizar una labor previa antes de ponerse a escribir el código: diseñar a grandes rasgos cuales serán los módulos del programa; módulos que se corresponderán aproximadamente con la distribución del código en ficheros fuente independientes. Quizás tenga que decidir también si algunas partes aparecerán como librerías [1]. Recuerde lo indicado al respecto al tratar de los Subespacios de Nombres ( 4.1.11).

Esta fase es especialmente importante en el caso de programas muy grandes, cuyo desarrollo se reparte entre varios programadores que se encargan de uno o varios de estos módulos. En estos casos, el análisis, la especificación, la subdivisión en partes (con sus especificaciones particulares), y la asignación de estas como tareas a los programadores, lo habrá realizado el jefe de programación y desarrollo.

§5 Escribir el código

Suponiendo cumplimentados los pasos anteriores, el programador está en condiciones de construir una imagen mental clara de como será esa conexión entre la información de entrada y la salida, es lo que se denomina “espacio” de la solución (“‘How’ domain”); su forma concreta es justamente el fuente del programa que se pretende. La codificación consiste justamente trasportar a papel (en el lenguaje de programación elegido) la imagen mental de esa conexión.

Para escribir el código fuente de un programa C++ solo se puede utilizar un subconjunto de 96 caracteres del juego total de caracteres US-ASCII ( 2.2.1a). Son los siguientes [8]:

Juego de caracteres imprimibles:

a b c d e f g h i j k l m n o p q r s t u v w x y z
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9
_ { } [ ] # ( ) < > % : ; . ? * + ­ / ^ & | ~ ! = , \ ” ’

Caracteres no-imprimibles denominados separadores

Espacio horizontal; Tabulación horizontal (TAB); Tabulación vertical (VT);

Salto de forma (FF); Nueva línea (NL).

Nota: Para escribir el código solo hace falta un editor de texto plano, aunque las modernas “suites” de programación incluyen editores específicos que están conectados con el depurador, el compilador el enlazador (ver más adelante) e incluso el sistema de ayudas, de forma que, por ejemplo, pueden mostrarnos automáticamente la sentencia en la que se ha producido un error de compilación, o la página correspondiente del manual si pulsamos en una palabra reservada y pedimos ayuda (F1 generalmente). También muestran en diversos colores las palabras clave, los comentarios, Etc. Los más avanzados disponen incluso de opciones que podríamos calificar de “inteligentes”, en el sentido que pueden prever cual será nuestro próximo movimiento en función de la sentencia que estamos escribiendo (por ejemplo, ofrecernos una lista de las propiedades y métodos de una clase si nos estamos refiriendo a ella).

Durante la fase de escritura no desdeñe dos puntos:

*

Incluir la mayor cantidad de comentarios y aclaraciones posibles. Cuando se está muy “metido” en el programa todo parece evidente, pero piense que tiene que retocarlo dentro de unos años, quizás entonces le parezca “Chino” y agradecerá haber dejado la mayor cantidad de documentación y aclaraciones al respecto. Incluso si es seguro que no volverá a verlo, piense en el sufrido programador que le seguirá si tiene que habérselas con su código. En este sentido C++ no es precisamente COBOL, aunque afortunadamente permite incluir en el fuente comentarios todo lo extensos que se desee ( 3.1). No caiga tampoco en el error de pensar que esa información ya está en la documentación escrita que le han obligado a entregar junto con los fuentes; posiblemente dentro de unos años Usted mismo no encuentre esos documentos.
*

Incluir la mayor cantidad posible de rutinas y condiciones de comprobación de errores. Piense que el operador es un “manazas” o que los datos pueden venir con alguna corrupción, error de transmisión, etc. Verifique constantemente que las condiciones son las esperadas ( 1.4.5).

Una vez que se tiene el código fuente (en uno o varios módulos), el proceso de traducirlo a instrucciones comprensibles por el procesador (lenguaje máquina) puede hacerse siguiendo dos modelos: los intérpretes y los compiladores [3].

En el caso de lenguajes compilados como C++, el fichero de texto plano (ASCII 2.2.1a) que contiene el fuente del programador (con la terminación .C ó .CPP), es sometido a un proceso de varias fases que terminan en la obtención del ejecutable.

De forma genérica, todo este proceso se denomina “compilación”, aunque es una generalización un tanto incorrecta, ya que la compilación propiamente dicha es solo una de las etapas intermedias. Sería más correcto decir “construcción” del ejecutable, aunque por la extensión y generalización de su uso seguiremos utilizando el término genérico “compilación” para referirnos a él. Los procesos de construcción del ejecutable se esquematizan en la figura que comentamos a continuación:
§6 Preproceso

En la primera fase de la compilación; un programa especial, denominado make, es encargado de iniciar el proceso llamando a los diversos módulos que se encargan de la construcción del ejecutable (en 1.4.0 se amplían detalles sobre esta parte del proceso). El primero de estos módulos es el preprocesador.

El preprocesador ( 1.4.1) estudia el texto buscando directivas de preprocesado ( 4.9.10), por ejemplo sentencias que pueden ser suprimidas, incluye los ficheros correspondientes a las directivas #include, sustituye los #define, elimina los comentarios y expande las macros encontradas en el fuente y en los propios ficheros incluidos. El resultado obtenido es lo que se denomina unidad de compilación ( 1.4.2).

§7 Análisis sintáctico

Puesto que el fichero fuente está escrito en un “lenguaje” (C++ en este caso) que tiene sus propias reglas de sintaxis (como los lenguajes naturales), el compilador debe comprobar que estas reglas se han respetado. Este análisis (“Parsing”) es realizado por el analizador sintáctico [10].

En esta fase se realizan comprobaciones como que los paréntesis están cerrados, que no aparecen expresiones incompletas, etc. Para realizar esta labor, el “parser” debe identificar los tokens ( 3.2), de forma que el fuente es tokenizado, esto es, reducido a tokens y separadores.

El fuente es escaneado, el analizador sintáctico (parser) extrae los tokens, seleccionando el que coincida con la secuencia de caracteres más larga posible dentro de la secuencia analizada [9]. Por ejemplo, la palabra clave external es reconocida como un solo token (identificador de clase de almacenamiento) en vez de seleccionar extern (una palabra reservada) y al (que sería un identificador).

Los separadores (whitespaces) es el nombre genérico dado a los espacios (32), tabulaciones verticales VT (11), horizontales TAB (9) nueva linea NL (10) y retorno de carro CR (13). Los separadores sirven para indicar donde empiezan y terminan las palabras, pero después de esto cualquier separador redundante es descartado. Por ejemplo, las dos secuencias:

int i; float f;

int i;

float f;

son léxicamente equivalentes y el resultado del análisis son las seis palabras siguientes:

int

i

;

float

f

;

El carácter ASCII espacio puede formar parte de cadenas literales (alfanuméricas), en cuyo caso es protegido del proceso de análisis, permaneciendo como parte de la cadena. Por ejemplo:

char name[] = “Playa Victoria”;

es reducido a siete tokens, incluyendo una cadena literal “Playa Victoria”

char

name

[

]

=

“Playa Victoria”

;

§8 Análisis semántico

En lenguajes como el Ensamblador la comprobación se limita al análisis anteriormente señalado; con esto se garantiza que el fuente original es correcto (sintácticamente), es decir, es un escrito correcto desde el punto de vista del lenguaje, otra cosa es que tenga un sentido computacional correcto, o diga tonterías, incongruencias o sinsentidos [6].

Por supuesto la meta del compilador es conseguir descubrir con anticipación (al runtime) el máximo de errores posibles. En los lenguajes de alto nivel, esto se consigue con una cierta comprobación del “sentido” o “significado” del escrito, es el denominado análisis semántico (análisis del significado).

La mejor baza de que dispone C++ para esta segunda comprobación es la comprobación estática de tipos ( 2.2). Es decir, que las variables y las operaciones entre ellas se usan correctamente; esto supone verificar que las llamadas a funciones, los valores devueltos por estas y los operandos de las expresiones corresponden con el tipo que se les supone en cada caso. Por ejemplo:

int x;

char func();

….

x = func();

En este caso, la primera línea declara que la variable x es tipo int (entero); la segunda declara que la función fun devuelve un carácter (char); si una líneas más adelante se pretende igualar la variable x con el valor devuelto por la función, el analizador semántico estaría en condiciones de asegurar que existe una incongruencia en las pretensiones del programador, generando el correspondiente mensaje de advertencia o error .

§9 Generador de código

Todos estos tokens identificados por el analizador sintáctico, son organizados en una estructura como las hojas de un árbol. A continuación, el generador de código recorre este árbol traduciendo sus hojas directamente en código de la máquina para la que se compila [11].

Si se solicita, el compilador también puede en esta fase generar un fichero en lenguaje macro ensamblador para su posible inspección por el programador (este código es también dependiente de la máquina para la que se compila y fácilmente entendible por el humano; puede contener incluso comentarios para facilitar su lectura).

Nota: Los compiladores modernos suelen incluir opciones que permiten generar código optimizado para el tipo de procesador que se utilizará. Por ejemplo, el compilador Borland C++ dispone de opciones que permiten generar código optimizado para procesadores Intel de modelos específicos ( 1.4.3a). Como cabría esperar, el compilador GNU c++ es el que ofrece más posibilidades en este sentido, que incluyen el tipo de procesador dentro de una larga lista de fabricantes, y dentro de estos diferentes modelos. En concreto, para la familias Intel i386 y x86-64, permite elegir entre 20 posibilidades diferentes!!.

A veces, después del generador de código puede ejecutarse un optimizador (peephole optmizer). Este generador de código sería propiamente el compilador, es decir, el encargado de traducir algo entendible por el humano en código máquina.

En cualquier caso, el resultado es un fichero “objeto”, generalmente con la terminación .obj o .o. También puede ordenarse al compilador que incluya en el “objeto”, determinada información adicional que será utilizada más tarde por el depurador , por ejemplo los números de línea de las sentencias. Cuando se hace así, se habla de una compilación “provisional” o de “depuración”; distinta de la que se realiza para la versión definitiva (de campo) del programa en la que no se incluyen este tipo de información que ya no es necesaria.

§10 Enlazado

El último paso en construir un ejecutable es el enlazado. Recibe este nombre el proceso de aglutinar todos los recursos en un solo fichero ejecutable ( 1.4.4). Estos recursos son desde luego los ficheros-objeto obtenidos en la compilación de los diversos módulos (ficheros .c) que componen el programa. Además, si se han utilizado funciones o clases de librería [1] (como es casi seguro), el enlazador (“Linker”) es el programa encargado de incluir los módulos adecuados en el fichero ejecutable final.

Así pues, la función primordial del enlazador es resolver todas las referencias que puedan existir en el programa, es decir: que cada invocación a un valor o a una función corresponda una dirección donde se encuentra el recurso correspondiente, y que estén todos contenidos en un solo fichero que pueda ser cargado y ejecutado por el Sistema Operativo.

Eventualmente algunos recursos pueden estar en otros ficheros distintos del ejecutable, librerías de enlazado dinámico (en Windows se denominan DLLs). En cuyo caso el enlazador también incluirá las direcciones y convenciones de llamada adecuadas para que puedan ser traídos a ejecución desde el programa principal.

Por último, el enlazador se encarga de insertar en el ejecutable un trozo de código especial: el módulo inicial, que es el encargado de iniciar la ejecución ( 1.5).

Hay que tener en cuenta que generalmente el enlazador puede producir diversos tipos de resultados:
§10.1 Versión de depuración

Se trata de una versión en la que dentro del propio ejecutable, se incluye información adicional no estrictamente necesaria para la ejecución sino para la depuración (por ejemplo los números de línea del código fuente que corresponde a cada sentencia). Estos ejecutables permiten la ejecución en un modo especial, en la que por ejemplo, pueden ejecutarse las sentencias paso a paso, o que el programa se detenga al llegar a diversos puntos establecidos de antemano; ver el contenido de las variables, el estado de la pila y otros aspectos internos muy útiles cuando se intentan depurar errores de tiempo de ejecución. Esto se consigue porque el programa corre bajo control de otro programa que actúa de controlador de la ejecución, es el depurador (“Debugger”).

Nota: El depurador puede ser en realidad un módulo adicional al de inicio, inserto en el ejecutable, que se inicia antes que la propia función main ( 4.4.4), de forma que puede controlar la ejecución. Por esta razón entre otras, las versiones de depuración son mayores (en tamaño del fichero) que las definitivas o “de campo” [12].
§10.2 Versión de publicación

Es la versión definitiva que saldrá al público (se entregará al usuario). Se distingue de las versiones internas en que no incluye información para depuración. Es buena práctica incluir en cada versión publicada información sobre el número de versión del programa y de compilación (esto suele venir indicado en la siguiente forma: Versión xx.yy.zz build nnn).

Generalmente los programas sufren muchas modificaciones a lo largo de su vida (corrección de errores, perfeccionamientos, versiones para diversas plataformas, etc), y es preciso identificarlos. Es costumbre hablar de “versiones”, que se identifican por grupos de números separados por puntos. Por ejemplo: Versión xx.yy.zz. Cada fabricante de software, grupo de trabajo o programador, utiliza una convención, estableciéndose que tipo de cambios dan lugar a diferencias de versión en el grupo de cifras xx; en el yy o en el zz. Generalmente se acepta que los cambios de mayor nivel (xx) representan versiones totalmente nuevas del programa; que requieren incluso rescribir los manuales de uso. Los cambios menores corresponden a modificaciones en el grupo yy (por ejemplo utilizar otras versiones de las librerías o distinto compilador); finalmente los cambios de detalle representan modificaciones en el grupo zz. Viene a representar cambios mínimos, que no merecen una alteración del último grupo de cifras [7], pero cambios al fin y al cabo (cuando se recompila es porque algo ha cambiado, aunque sea un comentario en el fuente). Es también costumbre incluir un último identificador: El número de compilación o construcción (“build” en la literatura inglesa); es un número progresivamente creciente para cada compilación distinta. A título de ejemplo, en la página adjunta se muestra la clasificación utilizada para las sucesiones versiones de los productos de un conocido fabricante ( Designación de versiones).
§10.3 Librería

En las páginas siguientes veremos que como resultado de la “compilación”, no siempre se desea conseguir un ejecutable; al menos no en el sentido tradicional del término, sino una librería (de las que existen varios tipos), o un fichero objeto.

En lo que respecta al lenguaje C++, existen dos tipos fundamentales: Estáticas y Dinámicas. Las primeras son colecciones de ficheros precompilados, cuyo código puede ser añadido a un ejecutable en el proceso de enlazado (los ficheros de la Librería Estándar 5 que acompañan a los compiladores C++ son de este tipo). Las segundas son auténticos ejecutables externos que son invocados desde otro ejecutable y devuelven el control a este cuando terminan su ejecución. Más detalles al respecto en: ( 1.4.4a).

§11 Errores Volver al principio (rescribir el código)

La verdadera prueba de fuego del programador se presenta cuando lanza la orden de compilar y enlazar su programa. Todos los módulos involucrados en los pasos anteriores, compilador, analizador sintáctico y enlazador pueden detectar errores en nuestro código y mostrar los mensajes correspondientes.
§11.1 Tipos de errores

En cuanto al momento en que se producen, son básicamente de tres tipos:

*

De tiempo de compilación. Se engloban aquí los errores detectados por preprocesador, el analizador sintáctico y el propio compilador. Los hay meramente sintácticos, por ejemplo un paréntesis no cerrado; también de tipo lógico, por ejemplo la referencia a una variable no declarada previamente, etc. etc.
*

De tiempo de enlazado. Son detectados por el enlazador. Por ejemplo una llamada a función cuya definición no aparece por ninguna parte (el enlazador no es capaz de encontrarla en los directorios que tiene asignados como “normales” para buscar); también la inversa: dos funciones del mismo nombre situadas en dos módulos (fuentes) distintos (la referencia aparece duplicada).

*

De tiempo de ejecución (runtime). Existe finalmente una última clase de errores: los que se producen cuando se ejecuta el programa; son precisamente los más difíciles de diagnosticar y verificar, sobre todo en aplicaciones grandes (los relativos a “pérdidas misteriosas” de memoria y punteros descontrolados son especialmente temibles).

§11.2 Gravedad de los errores

Los errores producidos durante la compilación son de dos tipos, según su gravedad:

*

Errores fatales (“Errors”): Son errores graves, el proceso no puede continuar y es detenido después de mostrar la información pertinente.
*

Advertencias (“Warnings”): No son errores graves pero si circunstancias sospechosas o inusuales de las que el compilador entiende que merecen una advertencia por si es algo que se nos ha escapado inadvertidamente (por ejemplo: Una variable declarada que no se utiliza para nada más). En estos casos, el proceso continua y si no hay errores graves se construye un ejecutable.

En todos los casos el aviso incluye indicación del fichero (“fuente” .C/.CPP), el número de línea, y el nombre de la función donde se produce el error, así como una explicación más o menos clara de su motivo. En principio pueden ser cuestiones banales, como haber olvidado poner un punto y coma ; al final de una sentencia (muy corriente en los que estamos acostumbrados a programar en otros lenguajes). En otros casos los mensajes son especialmente crípticos, sobre todo para el profano, pero poco a poco los entendemos mejor y podemos aprender mucho de ellos si prestamos la debida atención y entendemos su “porqué”.

Recordar que todos los compiladores disponen de opciones para modificar el número y tipo de los errores y advertencias (“Warnings”) que aparecen. Respecto a los primeros, puede instruirse al compilador para que suspenda la actividad al aparecer el primer error, o que continúe hasta que aparezca un número determinado de ellos. Respecto a los avisos, puede ordenarse que no muestre ninguno, o que sea más o menos benevolente en determinados aspectos. Por ejemplo, puede indicarse que la comprobación siga estrictamente el estándar C++ y que avise de cualquier desviación al respecto (los compiladores suelen permitir ciertas “peculiaridades” que no son estándar).

Nota: La descripción e información acerca del error o advertencia, dependen de la plataforma, pero hemos de señalar que existen notables diferencias en cuanto al grado de desarrollo de los diversos compiladores, en especial respecto a los “Warnings”. Por ejemplo, en este sentido el Compilador Borland C++ 5.5 es mucho menos riguroso que el producto homólogo de Microsoft, cuyo sistema de verificación es con mucho superior al del primero, de forma que no es infrecuente que advertencias más o menos serias e incluso algunos errores advertidos por Visual C++ 6.0 sean totalmente ignorados por Builder. A su vez los errores y advertencias señalados por el compilador GNU Cpp suelen ser más explicativos que los señalados por Borland o Visual (que en este sentido son más crípticos).
§11.3 Generalidades sobre los errores de compilación

Respecto a los errores de compilación, es importante hacer una advertencia al neófito: Con frecuencia el compilador nos informa de error en una línea más abajo de donde está verdaderamente. Por ejemplo, olvidar un punto y coma de final de sentencia puede dar lugar a que el compilador nos informe de un error incomprensible dos o tres línea más abajo.

Cuando se realizan modificaciones en fuentes grandes y no se tiene mucha práctica, es preferible realizar cambios pequeños y compilar sistemáticamente después de cada uno. Así sabremos que el error corresponde a lo último que hemos tocado. Hay veces en que quitar una simple coma en una sentencia produce una listado de 15 o 20 errores en líneas siguientes. !Súbitamente nada tiene sentido para el compilador !!. [5]

En las asignaciones del tipo:

Rvalue = Lvalue;

en las que intentamos asignar un valor Lvalue ( 2.1 que puede ser el resultado de una expresión) a un Rvalue ( 2.1), son muy frecuentes los errores en que el compilador produce un mensaje del siguiente aspecto:

Error …. Cannot convert ‘xxxxx’ to ‘yyyyy’ in function ….

Lo importante a reseñar aquí, es que las expresiones xxxxx e yyyyy informan sobre el tipo de objeto que hay en cada lado de la expresión de asignación.

Nota: En el capítulo dedicado a los tipos de datos ( 2.2) se describe detalladamente como el compilador clasifica los objetos según su tipo.

En las asignaciones, el Rvalue debe recibir un valor de su mismo tipo. Si el tipo del Lvalue no concuerda con él, el compilador puede intentar adecuarlo, pero si esto no es posible, se produce un error como el señalado. En él se nos indica que el tipo xxxxx, que corresponde al Lvalue (el resultado de la expresión a la derecha del operador = ), no puede ser convertido al tipo yyyyy del Rvalue.

Hay que advertir que las expresiones xxxxx e yyyyy están codificadas. Cada compilador utiliza un algoritmo interno para designar cada uno de los innumerables tipos que puede existir en C++. En concreto, la designación utilizada en estos mensajes es la misma que utiliza en el operador typeid ( 4.9.14). En situaciones difíciles, es mucha la información que puede obtenerse de estas expresiones si se observan detenidamente.

Aunque la comprobación estática de tipos, y del cumplimiento de las reglas sintácticas realizada por el compilador, resultan muy eficientes en lo que respecta a la detección de errores, en realidad, el trabajo dista de ser completo y suficiente. Existen multitud de circunstancias potencialmente erróneas que son pasadas por alto. En especial las relacionadas con pérdidas de memoria; existencia de punteros descolgados; bucles infinitos; objetos declarados pero no utilizados, y un largo etcétera. Algunos de estos errores pueden permanecer agazapados en el código y solo aparecer en circunstancias muy especiales, incluso después de que la aplicación haya sido rodada largo tiempo sin contratiempos. Muchas de estas circunstancias pueden evitarse, o al menos mitigarse, siguiendo ciertas pautas y recomendaciones “de buena práctica”, muchas de las cuales están contenidas en la obra TC++PL de Stroustrup; la mayoría en forma de advertencias sobre cosas que “no” debe hacerse. Sin embargo, el problema persiste, máxime en un lenguaje como C++ plagados de peligros potenciales que acechan en el arcén, y con el que es posible “volarse la pierna completa”.

Para reforzar la calidad del código y prevenir errores posteriores (de run-time), se han creado multitud de herramientas. Entre las más conocidas se encuentran las siguientes:

* Lint, denominadas así en atención a que tienen su origen en una utilidad de este nombre (lint) desarrollada inicialmente en el entorno Unix. Estas utilidades se ejecutan sobre el fuente sin compilar (no confundirlas con los depuradores “debugger” -de run-time-, aunque también sirven para “depurar” el código); comprueban la sintaxis y errores en los tipos de datos de forma más concienzuda y profunda que los compiladores C/C++, y avisan de gran cantidad de peligros potenciales; incorrecciones; desviaciones sobre las reglas universalmente aceptadas como de “buena práctica”, etc. Actualmente han llegado a un elevado nivel de sofisticación, de forma que un buen Lint puede evitarnos muchas horas de depuración. En realidad es una herramienta que no debería faltar en el taller del programador profesional.
* cb. Esta utilidad, originaria del SO AIX, reformatea el código fuente contenido en un fichero y lo vuelca sobre el dispositivo estándar de salida (stdout 5.3) utilizando un formateo basado en sangrados y espaciados, que ayudan a interpretar la estructura del código.
* cflow. Esta utilidad, originaria del SO AIX, analiza el contenido de un fichero objeto C/C++ y proporciona en la salida estándar (stdout) un gráfico de sus referencias externas.
* cxref. Esta utilidad, análoga a las anteriores, analiza los fuentes C/C++ y genera una tabla con todos los símbolos encontrados en cada fichero, incluyendo los nombres de los parámetros formales de las funciones (contenidos en la definición de la función). La tabla es mostrada en el dispositivo estándar de salida (stdout), e incluye el sitio en que cada referencia se ha resuelto (suponiendo que la definición esté en el código analizado).

Si está interesado en las características y posibilidades de estos productos, la mayoría comerciales y algunos muy costosos, aparte de la correspondiente búsqueda en Google, existe un interesante artículo de Scott Meyers (uno de los “Gurus” del C++) y Martin Klaus titulado “A First Look at C++ Program Analyzers”, en el que se repasan las cualidades y características de distintos paquetes, incluyendo una evaluación de su comportamiento frente a lo que el autor considera deseable. Aparecido en el número de Febrero de 1997 del Dr. Dobb’s Journal, existe una versión de pre-publicación accesible on-line, que es incluso más completa que el artículo publicado (probablemente debido a las exigencias de maquetación de la revista): http://www.aristeia.com.

Uno de los productos punteros y más antiguos, es el de Gimpel Software http://www.gimpel.com; esta empresa dispone de dos versiones denominadas PC-Lint y FlexeLint. La primera para Windows, la segunda, más general, para cualquier entorno que soporte un compilador C, incluyendo Unix y Linux. Si tiene interés en comprobar más de cerca el tipo de información que proporcionan estas utilidades, en el sitio de este fabricante existe una sección denominada Bug del mes (“Bug of the month”) en la que se exponen ejemplos de código, junto con el resultado del análisis (después de pulsar un botón). Además de súmamente instructivos, los casos propuestos pueden servirle para auto-evaluar sus conocimientos de C++ al respecto. A mi entender también pueden constituir una magnífica fuente de inspiración para los enseñantes que busquen material para ejemplo o evaluación (ser piadosos en los exámenes porque algunos son realmente para niveles avanzados; no se puede pretender que después de un semestre de estudio, el alumno esté en condiciones de adivinar correctamente el “bug C/C++ del mes” 🙂
§11.4 Errores de ejecución

Para los errores de tiempo de ejecución se requieren estrategias especiales. En principio, durante la fase de comprobación inicial, se tienen las ofrecidas por el depurador . Prácticamente todos los entornos de desarrollo disponen de un depurador más o menos potente y sofisticado. Puede afirmarse que el depurador es otra herramienta que no debe faltar en el arsenal de cualquier programador profesional, en especial porque hay errores que son prácticamente imposibles de diagnosticar y corregir sin su ayuda.

Como se ha indicado, el depurador incluye en el ejecutable un código especial que realiza las funciones de depuración deseadas, pero aparte de los que podríamos denominar estándar (cuyos módulos son incluidos en durante la fase de enlazado del ejecutable), existen herramientas específicas que analizan el ejecutable y son capaces de detectar determinados errores e inconsistencias. Estas herramientas realizan su trabajo durante la ejecución, para lo que modifican el código a analizar incluyendo determinados módulos que les permiten controlar el desarrollo de la ejecución (se dice que “instrumentan” el código). La forma de realizar esta “instrumentación” depende de la herramienta: puede realizarse durante la compilación (“compile-time”), añadiendo código que no aparece en el fuente; durante el enlazado (“link-time”); durante la carga (“load-time”), cuando el ejecutable es acomodado en memoria, o antes de la carga, sobre cualquier ejecutable listo para ser usado. Generalmente estas herramientas controlan la ejecución, toman nota de las incidencias, y finalmente proporcionan un informe de las mismas cuando la ejecución finaliza.

Nota: no existe una denominación unificada para este tipo de productos. Quizás el más conocido es es BoundsChecker, de Numega http://www.numega.com (actualmente aparece como Compuware). También puede intentar una búsqueda en Google bajo el epígrafe “Memory debugger”.

Después de todas las medidas preventivas ya reseñadas, cuando finalmente, después de las pruebas de “laboratorio” damos por bueno el programa, este queda merced a si mismo; a la calidad de su propio mecanismo de defensa. Como errar es humano, los diseñadores del C++ pensaron que a pesar de la programación más cuidadosa, siempre pueden presentarse circunstancias excepcionales o imprevistas. Para poder hacerles frente, dotaron al lenguaje de opciones especiales con las que tratar este tipo de situaciones, de forma que pudiese seguir todo bajo control; estos recursos específicos se exponen con detalle en el capítulo dedicado al Tratamiento de Excepciones ( 1.6).
§12 Recursos

Ya hemos señalado que para construir un programa C++ basta un editor de texto plano y un compilador C++ para la máquina y Sistema en que deba ejecutarse, y que en el término “Compilador” incluimos todas las herramientas auxiliares, enlazador, librerías, etc.

Por supuesto que en este sentido, las plataformas comerciales, en especial las versiones denominadas “Enterprise”, ofrecen unas prestaciones inigualables, incluyendo potentes depuradores, diseño gráfico de elementos con capacidad de arrastrar y soltar (“dragg and drop”) elementos, y conjuntos preconstruidos de clases que simplifican extraordinariamente la construcción de determinados aspectos de las aplicaciones. Por ejemplo, el manejo de bases de datos o comunicaciones. En esta categoría podemos incluir productos como C++Builder de Borland o Visual C++ de Microsoft para el entorno Windows.

En la página dedicada a los Compiladores encontrará algunas referencias ( Compiladores).

Si desea saber más sobre aspectos relacionados con la compilación, preproceso, análisis sintáctico y semántico, traducción del código, etc, mi consejo es que consulte “Compiladores y Procesadores de Lenguajes” [Jiménez-04]

Inicio.

En el argot de programación, “función de librería” se refiere a un recurso prefabricado; trozos de código, generalmente en forma de funciones o clases que otros han escrito, que incluimos en nuestro programa. La confección de programas se parece a la construcción de un edificio en el que cada vez más se utilizan elementos preconstruidos (algunas veces normalizados), que facilitan y aceleran la construcción. Suelen ser de dos clases: incluidas en el compilador (lenguaje utilizado), que en caso del C++ están incluidas en la denominada Librería Estándar , y de terceras partes; librerías especializadas en cuestiones muy concretas que pueden adquirirse para no tener que escribir por nosotros mismos rutinas que otros (que además saben mucho sobre el tema), se han encargado de escribir y comprobar. Por ejemplo: librerías gráficas, de comunicaciones, estadísticas, para escribir códigos de barras en una impresora, Etc.

Las modernas “suites” de programación C++ incluyen completísimas librerías en las que están resueltas la mayoría de las situaciones que habitualmente se suelen presentar en la programación normal. Precisamente el entorno C++Builder de Borland-Imprise es un claro ejemplo. El paquete estándar comprende un entorno gráfico de programación (IDE) para Windows, que incluye un potente conjunto de librerías en forma de “herramientas”. Es un producto comercial con un precio determinado. En cambio, el compilador, el depurador y la Librería Estándar se suministran gratis. Es decir, se asume que el valor comercial está en el entorno gráfico integrado y en las librerías adicionales.

[2] Seguramente se me ocurre lo de “cliente” por deformación profesional; por supuesto el cliente podemos ser nosotros mismos, el jefe, el profesor de la asignatura, Etc.

[3] Con objeto de mejorar la velocidad de ejecución (tradicionalmente lenta), algunos intérpretes, utilizan en realidad un modelo híbrido. Obtienen un seudo-ejecutable intermedio, mediante un preprocesado seguido de un “parsing”, con lo que se obtiene un código “tokenizado” que es el que se entrega realmente al intérprete.

[4] A la hora de redactar estas líneas parece estar muy de moda una técnica denominada Programación Extrema (eXtreme programming), cuya filosofía se basa en 12 principios o mandamientos, alguno tan pintoresco como el de las “40 horas semanales”, según el cuál la mejor manera de aumentar el rendimiento es que los programadores “solo” trabajen 40 horas a la semana, pues está científicamente demostrado que un trabajador fresco produce código de mejor calidad que uno cansado. A mí particularmente, este tipo de consejos me recuerdan el de los libros de instrucciones americanos para el microondas: “No se aconseja utilizarlo para secar a su mascota” :-))

[5] Como consecuencia, después de algunos años de oficio, los programadores suelen (solemos) ser gente un poco “tocada de la azotea”. No cabe duda que pasar años viviendo en un mundo donde no da igual un punto que una coma en un millón de líneas de código termina imprimiendo carácter. El resultado es que el resto de la gente “normal” no entiende muy bien porqué somos tan maniáticos y puntillosos en algunos asuntos, ya que afortunadamente (¿?), el mundo real suele ser de lógica más “borrosa” (a veces, tan borrosa que apenas se ve nada…).

Nota: Esto de la lógica “Borrosa” viene a cuento y recuerdo de un amigo. Una persona de un gran talento natural que no ha tenido ocasión de recibir formación académica (es mecánico y apenas ha ido a la escuela). En cierta ocasión delante de unas cervezas intenté explicarle las diferencias entre la lógica binaria y la difusa (“Fuzzy logic”). Días después conversaba él con otras personas y me sorprendió como introducía el concepto de la lógica difusa con total oportunidad y como si fuese una cosa sabida de toda la vida. Solo había cambiado una palabra; “borrosa” en lugar de difusa.

[6] Las circunstancias son exactamente idénticas a las que se presentan en los lenguajes naturales. También en estos es posible construir frases sintácticamente correctas pero carentes de sentido (los políticos saben mucho de esto).

[7] En esta nomenclatura, una versión 2.4.10 es anterior a la 2.13.0, que a su vez es anterior a la 12.3.

[8] Para resolver el problema de que algunos de estos símbolos no aparecen en los teclados de determinados idiomas (por ejemplo, la tilde ~ en los teclados españoles) se recurrió a representarlos mediante ternas de otros caracteres, los denominados trigrafos ( 3.2.3e).

[9] Esta regla de análisis es conocida como de Max Munch; en realidad no es ningún personaje real, sino un convenio adoptado por los integrantes del primer Comité de Estandarización del lenguaje.

[10] En general, un “parser” es un programa diseñado para analizar un documento.

[11] “On average, each line of code in a system programming language translates to about five machine instructions, compared to one instruction per line in assembly language (in an informal analysis of eight C files written by five different people, I found that the ratio ranged from about 3 to 7 instructions per line; in a study of numerous languages Capers Jones found that for a given task, assembly languages require about 3-6 times as many lines of code as system programming languages). Programmers can write roughly the same number of lines of code per year regardless of language, so system programming languages allow applications to be written much more quickly than assembly language”. John K. Ousterhout. “Scripting: Higher Level Programming for the 21st Century” http://www.tcl.tk

[12] Como botón de muestra, señalar que en una aplicación C++ típica Windows, cuyo ejecutable resultaba de 631 KBytes en su versión “de campo”, la inclusión de la información necesaria para depuración hizo aumentar su tamaño hasta 3.257 KBytes (Compilador GNU gcc-g++ 3.4.2 para Windows -incluido en Dev-C++ -)

Espero que les haya servido, cualquier duda expresala

contador de visitasvisitas webestadisticas web
contadores de visitas

More

La mayoría tiene dudas acerca de esto y la verdad es fácil cuendo se tiene la información a la mano, por eso aquí les dejo esta pequeña explicación, espero les sea de utilidad.

Los juegos que nos descargamos vienen unas veces comprimidos en
Archivos rar y otras veces nos bajamos las imágenes listas para grabar
con el programa que correspònda.
Según la versión del juego, pueden ser imágenes de cd o de dvd.
Cuando un juego es en versión de cd,y viene comprimido en un archivo rar,
Generalmente con descomprimir ese rar automáticamente nos saldria la imagen del juego,si por el contrario la versión del juego es en dvd al descomprimir el rar nos saldra archivos del juego y otro monton de rar que generalmente tienen un tamaño de 50 mg aproximadamente.

Pues el siguiente paso seria descomprimir uno solo de esos rar y automáticamente te saldra una imagen de dvd lista para grabar con el programa que corresponda o en ultimo caso seria cargarla en una unidad virtual como la del alcohol o el daemon tools.

Si al realizar este proceso no conseguimos que la imagen se visualize el motivo puede ser por dos cosas:

1)Iriamos al explorador de windows en
mi pc>herramientas>opciones de carpeta>ver>y ahi comprobais si teneis activada la casilla Ocultar las extensiones de archivo para tipos de archivo conocido,si la teneis activada desactivarla.

2)cuando la imagen por ejemplo es una iso,el winrar asocia este tipo de imágenes como si fueran suyos,por eso a veces al descomprimir un rar no nos sale la imagen del juego en cuestion,sino los archivos que estan directamente en la imagen.
Por lo tanto en este caso no hace falta descomprimir nada se graba directamente ese rar que en realidad es una imagen.
Yo propongo que para que esto resulte mas comodo y veamos las imágenes tal como son al extraerlas del winrar es instalar una utilidad como el ultraiso y asi al descomprimir cualquier archivo rar que contenga una imagen automáticamente nos sale una imaen del tipo que sea y asi grabarlo con el programa que corresponda.
Después de esta explicación pasaremos a ver como se graban las distintas imágenes de los juegos.

IMÁGENES ISO Y NRG

Estas imágenes se graban con el nero o el alcohol.
Yo personalmente los grabo con el nero.

1)abrimos el nero y vamos a la seccion grabar imagen en disco.
2)buscamos la carpeta en nuestro disco duro donde se encuentre la imagen y le damos a abrir.
3)después seleccionamos nuestra lectora y listo para quemar la imagen en cuestion.

IMÁGENES BIN

Este tipo de imágenes tienen la particularidad de que necesitan un archivo cue que es el trae la información del bin.
Este caso es igual que el de antes solo que para poder grabarlo cuando busquemos la imagen del juego debemos cargar el cue y no el bin.
El problema viene cuando el cue no es binario del bin.
Para ello se podrian hacer dos cosas:
1)abrimos la imagen bin,y en tamaño de bloques(byte)poneis 2352,para que al grabar el bin sin el cue el juego quede grabado perfectamente.
2)tambien podemos coger el winiso o el bin to iso converter y transformar el bin en iso y grabar el iso directamente con el nero.
El winiso es muy versátil ya que con el podemos coger imágenes y observar que contienen,ademas de convertir una imagen de un tipo especifico a otra.

IMÁGENES CCD,IMG,SUB

Estas imágenes son procedentes del clone,y se graban con el clone o con el alcohol,para ello debemos escoger el archivo ccd y automáticamente se cargaran los datos en el programa y listo para grabar.

IMÁGENES MDS Y MDF

Estas imágenes vienen son procedentes del alcohol 120.
En ocasiones los juegos que vienen con estas imágenes vienen acompañadas de un documento de texto donde explican como grabarlo.
Para ello abrimos el alcohol:
Asistente de grabacion
Y buscamos la imagen mds y automáticamente cogera los datos del archivo mdf.
En ocsiones al cargar el mds no sale la información del mdf por lo que yo propongo que cargemos la imagen en una unidad virtual e instalar el juego desde ahí por si la imagen estuviera dañada y asi no perder un dvd virgen.
Si os dais cuenta el alcohol es para mi el programa mas versátil para grabar juegos ya que admite las imágenes nrg,iso,cue(del bin),mds(del mdf) ccd(del clone) y otras menos conocidas.

Yo siempre pruebo particularmente a instalar el juego desde una unidad virtual para comprobar que todo esta correcto y si merece la pena y todo esta bien procedo a la grabacion del mismo,pero esto queda a gusto del consumidor.

JUEGOS DE PS2

aca el DVD DECRYPTER esta con megaupload.

A TENIENDO EL DVDDECRYPTER HACES clic en

Mode/ISO/y aparece

READ R—-Para leer tus discos
Write W—para grabar los discos

“NOTA IMPORTANTE”:SIEMPRE USEN VELOCIDAD BAJA PARA GRABAR LA IMAGEN EN EL ORDEN DE 1X,2X,3X O 4X NO MAS…

<p>Suscribirse a las actualizaciones de titulares RSS de: <a href=”http://feeds.feedburner.com/bienvenidoADjbercy”></a><br />Ofrecido por FeedBurner</p> <p>

contador de visitasvisitas webestadisticas web
contadores de visitas

Estrella Fugaz!!

Esta es una recopilación de mis poemas, si deseas uno dedicado pídelo aquí.

Estrella fugaz!!!

Al sonoro y melodioso canto de tu voz
se disuelve mi corazón,
es como el idilio siempre deseado,
pero jamas tenido.

En ocasiones lo fuerte del viento en noches tranquilas
me zuzurra y me da escalofrio
pues una estrella fugaz
hace su aparición


y asi como aparece
se va, el recuerdo que me quedará
es que me hiciste sonreir
aunque solo un instante

es una ilusión
que jamás será
eres algo inalcanzable,
quize ir tras de ti
y mas… te alejaste de mi


la soledad me hace reflexionar y encontrar
mi destino
te pierdo entre la luna y las nubes,
mis ojos tristes
muestran algo de alegría despues de tanto llorar.

Estrella fugaz
¿Porque te vas?
¿A donde irás?
Tal vez hay alguien en el cielo que te espera ya donde tu aura termine su recorrido.

Quizá por mas que pida al cielo la rendición no será
ni me dará que pensar
eres libre de surcar por los cielos
y viajar a donde tu desees
nunca podré detenerte
y nunca lo haré,


fuíste una ilusión fugaz
que solo rozaste mis labios
con la brisa de tu imponente brillo
y seducción,
me fuiste envolviendo y caí
me rendí, creí
que podría viajar a tu lado
y dejar el mundo
pero no fué así


aún así te agradesco en ese tiempo fugaz
que me haigas dado un poco de vida a mi vida,
el idilio que jamás sucedió
lo platónico que si se encausó
en el deceso de este ente
querida Estrella fugaz
Adios!!

dedicated.ymea

D.R. Djbercy (filcowe).

COMO SE DEBEN HACER LAS COPIAS DE SEGURIDAD PARA QUE REALMENTE SEAN EFICACES.

Ya se ha tratado en varias ocasiones el tema de las copias de seguridad y las diferentes formas de hacerlas.

Hemos visto en el tutorial Hacer una copia de seguridad cómo y cuándo debemos hacerlas. En el tutorial Copias de seguridad del sistema con Windows Vista hemos visto las herramientas que nos brinda Windows Vista para hacer copias de seguridad, en el tutorial Salvaguardar nuestros datos: Otra forma de hacerlo hemos visto otra forma de hacer copias de seguridad de nuestros datos, e incluso en el tutorial Configuración de un PC para copias de seguridad hemos visto cómo podemos configurar un PC para hacer copias de seguridad o como aprovechar un ordenador que tengamos casi olvidado para este fin.

En este tutorial vamos a ver algunas cuestiones relativas a la forma de hacer estas copias de seguridad y de cómo las debemos guardar.

Desde luego, una de las formas más cómodas de hacer una copia de seguridad (otra cosa es si luego necesitamos recuperar un dato concreto) es mediante un backup. Este sistema tiene la ventaja de que se puede programar, se puede hacer comprimido e incluso se puede hacer de forma que tan sólo nos modifique aquellos archivos que han sufrido alguna variación desde la última copia que hicimos.

A todas estas ventajas yo suelo poner dos ”peros”. Uno de ellos es el momento en el que necesitamos recuperar un archivo concreto (no siempre necesitamos recuperar toda la copia de seguridad) y otro es que si en el momento de hacer el backup tenemos un archivo corrupto, pues la copia de seguridad nos va a servir de bastante poco.

A mi me gusta bastante más el simple sistema de copiar y pegar en otro disco duro o de grabar un CD o DVD con los datos de los que quiero hacer la copia de seguridad. Si queremos, podemos hacer esta copia mediante algún compresor, como puede ser Winzip o Winrar a fin de ahorrar espacio.

Pero hay un punto en el que se cae muchas veces, unas por comodidad y otras por querer ahorrar unos céntimos, y este punto puede ser la diferencia entre tener una copia de seguridad o simplemente tener copiados unos archivos.

Si lo que realmente queremos y necesitamos es tener una copia de seguridad de nuestros datos, nunca debemos machacar una copia de seguridad con otra. Esto, que ya a nivel particular tiene su importancia, a nivel empresa es fundamental. En el caso de que necesitemos recuperar un archivo o archivos por que se hayan corrompido, los hayamos sobreescrito involuntariamente o se nos haya colado algún ”bicho”, lo que necesitamos es la seguridad de que vamos a disponer de una copia ”limpia” de estos archivos, a si siempre hacemos nuestra copia de seguridad machacando la anterior es muy probable que cuando necesitemos tirar de ésta los datos estén en el mismo lamentable estado en el que los tenemos en nuestro disco duro.

Lo ideal es hacer una copia diaria en un CD y guardarlo (pero bien guardado). Dentro de un mismo CD podemos guardar varias copias de seguridad (dependiendo, claro está, de lo que éstas ocupen), pero siempre y cuando se haga en carpetas diferentes, es decir, una carpeta = un día.

Otro punto que debemos evitar es hacer estas copias en el mismo disco duro (aunque se trate de una partición diferente). Este sistema de hacer las copias de seguridad tiene un grave problema: Si se nos va el disco duro no nos sirven de nada, ya que no vamos a poder acceder a ellas.

Un error en el que a veces se puede caer es el de pensar que con un sistema RAID 1 (discos espejos) no hace falta hacer una copia de seguridad de nuestros datos. Y digo que esto es un error porque como su nombre indica, un RAID 1 es un sistema de discos espejo, es decir, ambos discos contienen exactamente la misma información, lo que quiere decir que si un archivo se nos corrompe, lo modificamos o eliminamos o se nos contamina, va a estar en el mismo estado en ambos discos.
Un sistema RAID nos garantiza una integridad (dependiendo del tipo de RAID) de nuestros datos ante un fallo en un disco, pero no en ninguno de los otros supuestos en los que podemos necesitar recurrir a una copia de seguridad.

Consideraciones adicionales cuando se trata de copias de seguridad en una empresa:

Una empresa tiene unas necesidades en cuanto a la salvaguarda de sus datos diferente a las que pueda tener un usuario doméstico.

Para empezar, en una empresa puede haber varios tipos de copias de seguridad, dependiendo de que se trate de copias del servidor, de archivos de uso común o de archivos de uso específico.

En estos casos la mejor solución es un servidor de copias de seguridad en red, en el que mediante diferentes unidades o permisos se puedan guardar todo tipo de copias de seguridad, debiendo además permitir que estas puedan ser encriptadas para salvaguardar la confidencialidad de estos datos.

Pero en una empresa hay unos riesgos añadidos que hacen que el tema de las copias de seguridad se deba tratar de una forma específica.

Un riesgo que, si bien el usuario doméstico no se encuentra libre de él, en una empresa es mucho mayor. Este riesgo es el de la pérdida de datos y equipos informáticos por robo.

A este respecto hay que considerar que la sustitución de equipos puede ser más o menos costosa, pero es totalmente factible en un periodo corto de tiempo, pero para una empresa es muchísimo más valiosa la información que los equipos en sí mismos.

Esto hace que en una empresa se deba considerar la posibilidad de hacer (esto por supuesto) una copia de seguridad de todo el sistema al finalizar la jornada, pero hay que estudiar la posibilidad de que esta copia de seguridad no se guarde en las dependencias de la empresa, sino en algún lugar diferente.

En el caso de empresas con diferentes sedes interconectadas (por una VPN, por ejemplo) una buena solución podría ser que cada centro haga una copia de seguridad en los ordenadores de otro centro.

En este caso también es muy importante la confidencialidad de los datos, por lo que las copias de seguridad se deben guardar a buen recaudo, destruyendo los soportes de éstas cada cierto tiempo (en el caso de CD’s o DVD’s). Existen máquinas específicas para este fín.

FUENTE

Como crear un autoinstaller UnleashX

contador de visitasvisitas webestadisticas web
contadores de visitas
Como crear un autoinstaller con el unleashx
Hay que leerlo, Manual de UnleashX para xbox

xbox

Bueno, como he visto q hay bastante desconocimiento del UnleashX, aqui les va un pequeño y sencillo manual.

NOTA: Escribo mas rapido de lo que puedo, asi que perdonen los errores.

¿Que es?
UnleashX es un dasboard (al igual que EvolutionX, Avalaunch, etc…)
bastante completo, configurable, y personalizable que nos permite hacr muchisimas cosas…

Instalacion
La misma que EvolutionX, ya que son 2 archivos igual que este, un archivo de configuracion (Config.xml) y el dash (xxxxx.xbe) he peusto xxxxx.xbe, porque dependiendo de cada persona puede llamarse de una forma, en mi caso, uso exploit, el cual busca el archivo evoxdash.xbe, asi que lo renombro de tal forma que cuadno la xbox busque ese archivo (el evolutionx en realidad) se ejecute el unleashx. Pero para los que tengan chips y demas, creo que hay Installers de Slayers de esos (perdon por mi ignorancia de los slayers, pero jamas use tal cosa xD) con el unleashX, o si tienes el evox, renomrbar el unleashX tal como el evox esta (solo el xbe), cada cual tendra su metodo.

Caracteristicas principales:

– Busqueda automatica de juegos/aplicaciones en tu disco duro, con sus respectivos iconos si los tienen, haciendo un indice de todo tu HD para mejorar las busquedas de los programas.
– Explorador de Ficheros (Copia/Mueve/Borra/ archivos, copias rapidas de la unidad DVD, edita los titulos de los archivos .xbe…)
– Autodeteccion del contenido del DVD (DATA/DVD/JUEGO/etc…) con posibilidad de autoejecucion si asi se desea.
– Visor de imagenes (bmp, jpg, xbx y xpr (Incluido en el Explorador de Ficheros))
– Comprime/Descomprime Zips y RAR (solo 2.0, rar 3.0 solo lo muestra pero no se peude extraer nada) en la xbox (Soporta archivos Xip de xbox)
– Proteccion de cada elemento con contraseña (Cada elemento del menu puede estar protegido con password, (El password por defecto para el menu Format es “Xbox” respetando la mayuscula))
– Temas de color (Se peude cambiar totalmente el color del dashboard (aparte de los skins))
– Completamente configurable (Archivo XML donde se puede configurar copmpletamente el UnleashX)
– Soporte para formato “Widescreen” (para los que useis este “modo grafico” en vuestra xbox)
– Servidor FTP con modo PASV y multi-cliente (maximo 10) (Se peude configurar el nombre de usuario, password, puerto, accesos anonimos, etc…) User/Pass por defercto: Xbox/Xbox
– Screensaver (Al dejar la xbox sin actividad durante un rato, saltara un salvapantallas (Texto configurable rebotando en nuestra television))
– Efectos de sonido y musica de fondo (UnleashX usa los efectos de sonido del dash original cuando nos movemos por los menus, pulsamos botones, etc… Tambien permite tener musica de fondo a nuestra eleccion. .MP3, .WMA)
Control de la musica:
Blanco+DpadIzquierda=Proxima Cancion
Blanco+DpadDerecha=Cancion Anterior

– Configuracion desde la consola (No tienes que configurar nada desde el PC)
– Soporte para teclados USB y dispositivos IR (lo de los ir no lo he probado)
– Teclado Virtual en pantalla para la configuracion (ayuda bastante… smile_:))
– Soporte de unidades de memoria en el FTP y el Explorador de Ficheros (puedes copiar/mover/borrar directamente)
– Formateo de particiones
– Screenshots (Se pueden hacer capturas de pantalla en el dash apretando el stick izq + boton negro (stick = palanca parecida a los dual shock…))
– Totalmente personalizable (Soporta skins con videos de fondo, intros, etc… Soporta skins en zip, sin necesidad de extraerlos, permite previsualizarlos)
– Soporta RSS Newsfeed (Podemos leer las ultimas noticias de http://www.xbox-scene.com por ejemplo en nuestra xbox smile_:))
– Soporte de comandos batch
– Soporte de Particion G
– Soporte de videos (puedes ver videos (XMV y WMV8 o inferiores) desde el dashboard, poner videos de previsualizacion de tus juegos para verlos desde el menu (siempre que el skin lo permita (Pulsar stick Derecho para pantalla completa)), etc…)
– Si tienes musica ripeada con el M$dash original puedes seguir usandola configurando su localizacion
– Modo seguro de skins (Si tu xbox se reinicia o falla algo por algun skin defectuoso, arrancara la proxima vez con el skin por defecto para evitar posibles loops de fallos)
– Se puede formatear y montar un nuvo HD desde una copia de seguridad proporcionada desde un CD-R/DVD-R etc…)
– Editor de Textos
– Deteccion automatica de modo de video y formato de TV
– Ajuste de la velocidad del ventilador
– Gestor de Partidas Guardadas

– Y alguna que se me quedara atras smile_:)

Se planea implementar:
– SMTP (Envio de e-mail desde el dashboard)
– Soporte FTP de xbox a xbox

Archivo de configuracion
Aqui teneis un ejemplo de un archivo de configuracion comentado, si teneis algun problema con el vuestro, podeis borrarlo que el UnleashX creara uno automaticamente con la configuracion por defecto. (No copieis y pegueis ni nada de eso porque os ira mal, cada cual necesita su propia configuracion)

-Cabecera…

C:\Xboxdash.xbe -Localizacion del M$dash original

Xbox -Password que pedira el UnleashX para que peudas usa la xbox (Si metes un jeugo y arrancas podras jugar, solo restringe al dashboard)

(Opciones Validas Enable:Yes/No, Type:Static/DHCP)

192.168.1.100 -IP de la Xbox

255.255.255.0 -Mascara de red

192.168.0.1 -Puerta de Enlace

192.168.0.1

192.168.0.7

-Activa/Desactiva el FTP

xbox -Nombre de Usuario

xbox -Contraseña

21 -Puerto del FTP

2 -Usuarios Maximos

No -Permitir conexiones anonimas

Welcome to XBOX FTP Server -Saludo al conectar

-Acitva/Desactiva las news y configura le intervalo de tiempo entre las mismas

http://www.xbox-scene.com/xbox1data/xbox-scene.xml

http://www.xbins.org/xbins.xml

Autoejecutar los juegos

C:\xboxdash.xbe -Autoejecutar DVDs y con que

C:\xboxdash.xbe Lo mismo que arriba

-Autoejecutar los cds de datos

90 -Volumen de los efectos de sonido del dash (de o a 100)

90 -Volumen de la musica de fondo (de o a 100)

Both -Activa/Desactiva la musica de fondo, configura el directorio donde tenemos nuestra musica de fondo propia, y configura que musica de fondo queremos (Si ponemos “Xbox”, sonara la originald e la xbox, si ponemos “custom” sonara la que tenemos en MusicPath, y si ponemos “both” sonaran ambas si estan disponibles)

False -Usar Farenheits para la temperatura

192.168.1.1 -Para sincronizar la Xbox con un server de hora o con el PC

-Directorio donde tenemos los skins

1 -Velocidad del ventilador (de 1.0 a 5.0 con pasos de 0.5)

Orange Cambia el color del Led de la Xbox (Orange, Green o Red. Off para que no se encienda)

-Tiempo en segundos hasta que aparezca el salvapantallas (el tipo aun no se usa, pero se añadiran mas screensavers)

My b0x 0wnZ j00 Lo quie quieres que salga en el salvapantallas

0 Para autoapagar la consola cuando pasen los minutos que indiquemos

True -Para montar la particion 6 como F: (si no tienes un HD de los que la traen no lo actives, puede dar molestias)

True -Para montar la particion 7 como G: (si no tienes un HD de los que la traen no lo actives, puede dar molestias)

Menus:

Se pueden configurar los menus totalmente, mostrando listas o ejecutando acciones.
Opciones valicas para menus:

Text -Texto que aparecera en el menu

Password -Contraseña para el elemento

Sort –On/Off -Para ordenar los elementos

Auto -No usado de momento

Batch -Ejecuta todos los subelementos de un menu hasta llegar al final

Action -Deberia apuntar a un xbe o una funcion valida de UnleashX
Los menus pueden tener iconos.

Ejemplo de Menu (el de mi xbox vamos…):

Ejecutar DVD

E:\Games
F:\Games
G:\Games
E:\HDDLoader
F:\HDDLoader

E:\Apps
F:\Apps
Editor de Texto

G:\Emuladores

Configuracion
Partidas Guardadas

Parar FTP
Ejecutar FTP
Reiniciar FTP
Reiniciar Red
Cerrar DVD Tray
Abrir DVD Tray
Copiar Disco

Formatear X
Formatear Y
Formatear Z

Seguro que quieres formatear F?
Pulsa OK para continuar.
Formatear F

Seguro que quieres formatear G?
Pulsa OK para continuar.
Formatear G

Seguro que quieres formatear E?
Pulsa OK para continuar.
Formatear E

Skins

HD Explorer
MS Dashboard
Reiniciar
Apagar

Acciones de menus:

LaunchDVD -Ejecuta el DVD que este puesto
Ej: Ejecutar DVD

FileManager -Ejecuta el Explorador de Ficheros
Ej: HD Explorer

Settings -Abre la pantalla de configuracion
Ej: Configuracion

Skins -Muestra el selector de Skin
Ej: Skins

Restart -Reinicia la Xbox.
Ej: Reiniciar

Shutdown -Apaga la consola.
Ej: Apagar

FTPReset -Reinicia el servidor FTP.
Ej: Reiniciar FTP

FTPStop -Para el servidor FTP.
Ej: Parar FTP

FTPStart -Arranca el servidor FTP.
Ej: FTP Start

NetReset -Reinica la Red.
Ej: Resetear Red

TrayClose/TrayOpen –Cierra/Abre la bandeja del DVD.
Ej: Cerrar DVD, Abrir DVD

Format Arg1 -Formatea la particion indicada en Arg1.
Ej: Formatear F

Copy Arg1 Arg2 -Copia los archivos o directorios dados en Arg1 a Arg2
Ej: Copiar Backup desde el CD

PrepareHD -Formatea un nuevo HD instalado en la Xbox (Ejecutar solo desde un UnleashX en CD o DVD). Todo lo que necesitamos es poner en nuestro CD-R/DVD-R la copia de seguridad de nuestro antiguo HD (la de c: en \CDrive de nuestro CD, la de e: en \EDrive de nuestro CD, etc…), arrancar una copia de unleashx desde ese CD, usar el comando PrepareHD, y seguir las instrucciones (no he probado esto personalmente)
EJ: Preparar nuevo HD

Delete -Borra un archivo o directorio. Usar con cuidado.
Ej: Borrar Cache, Borrar directorio de Skins

Zip Arg1 Arg2 -Comprime en zip.
Ej: Comprimir directoriod e Skins

Unzip Arg1 Arg2 -Descomprime un zip.
Ej: Extraer Skins.

MessageBox Arg1 -Muestra una ventana de texto con Arg1 como titulo. El usuario solo puede pulsar Ok.
Ej: Esto es un mensaje.\nPulsa Ok para continuar

AskUser Arg1 -Lo mismo que arriba, pero esta vez el usuario puede elegir entre “si” o “no”.
Ej: Quieres continuar?

SetClock -Configura el reloj.
Ej: Configurar Hora/Fecha

InputBox –Muestra el teclado virtual y un espacio para insertar texto. Utila para seleccionar paths en instaladores y demas.
Ej: Ejemplo

Para usar el valor devuelto esta $KBresult$ y KBresult:

Has introducido ‘$KBResult$’
Copiar Video

Xenium-OS -Lanza el Xenium-OS
Ej: Xenium-OS

Skins
UnleashX es quizas el dashboard mas flexible en cuanto a skins, soporta videos de fondo, intros, videos y pantallas de carga, etc…
Aqui pongo un ejemplo de un Skin.xml (uno hecho por el equipo de UnleashX, podeis probar los mios si quereis ^_^), archivo de configuracion de los skins, comentare las lineas que creo q son necesarias. :

-Nombre del Skin

UnleashX

Copyright 2003

1.0

Aqui empieza lo importante smile_:)

C:\xodash\media\live.xmv -Video de intro de nuestro skin, solo formatos WMV y XMV

Background.png -Asigna una imagend e fondo para el Explorador de Ficheros

Background.png -Video o imagen que aparecera cada vez que carguemos alguna aplicacion. Para ocultar el titulo: ShowInfo=False

-Globe indica si mostrara la esfera rotatoria esa de UnleashX, Orb es el circulo de adentro, y Fog es la “niebla” <– Para ver esta lo mejor es probarla asis abreis a lo que me refiero

C:\xodash\media\live.xmv -Selecciona un video o imagen de fondo principal del dash, para videos con sonidos activar EnableAudio

Cell.png -Cell es la rejilla que aparece en forma de sphera de fondo girando lentamente

Orb.jpg -Para cambiar la imagen que viene por defecto en Orb

-El menu. Activa la opcion Smooth para tener tranciosiones en los scrolls del menu. Align puede ser “Left”, “Middle” o “Right”. ShowIcon determina si se muestra el icono delante del nomrbe ed cada juego. Activando Rotate conseguiremos que cada vez que lleguemos al final del menu, si seguimos avanzando, empezaremos desde el priemr elemento del menu otra vez. ShowArrows sirve para mostrar las flechas del menu. Tambien se peude configurar para que muestre le menu horizontalmente.

-Se puede colocar cada item del menu donde queramos añadiendolos uno a uno como se ve a continuacion:

Arial12.xpr -Fuente para mostrar el texto del menu. Se pueden hacer fuentes propias con un programa llamado FontBundle

-Si no usais las posiciones individuales para le menu, con est aopcion configurais la posicion del menu (en conjunto) Nota: Si onemos Fixed=”True” y FixAt”3″ se parecera al menu del EvolutionX smile_:)

-Configuracion de los videos de previsualizacion de juegos (preview.wmv/.xmv) EnableAudio para activar el sonido de los videos, Left y Top son las posiciones de alto y ancho en pixels, y width/Height el tamaño de la ventana del video en pixels tambien)
<– Se acabo el menu smile_:P

Arial12.xpr -Selecciona una fuente a nuestra eleccion para mostrar el texto de informacion

A continuacion informacion sobre la Xbox que podremos mostrar en pantalla por medio de nuestro skin

-Left y top ya sabreis lo que es, posicion. Align, pues tambien sabreis, la alineaciond el texto. Color, color del texto en formato html (0xFFFFFFFF seria blanco) y por ultimo, pero el mas importante, Source, que es una variable de sistema, en este caso el espacio libre de C:, y es lo que se mostrara en pantalla. Hay muchisimas variables que ahora os pongo. Tambien podemos poner texto a nuestra eleccion en Source, ahora os pongo unos ejemplos.

-Otra variable, esta vez la temperatura del micro

-Texto a nuestra eleccion

-Cone sto podemos dibujar formas en pantalla, solo soporta Rectangulos, Rectangulos Redondeados (RoundedBox) y triangulos

sobrepuesta.png -Carga una imagen en pantalla, con Opacity controlamos la transparencia de la imagen

-Para configurar el area donde se muestran los iconos de los juegos. top, left, width… no creo que necesiten explicacion a estas alturas

Añadiendo esto podemos hacer que use la misma “ventana” del icono para el video del juego (creo que es la unica utilidad de esta funcion…)

-Aqui empieza la configuracion del tema de color del skin

Colores de la niebla, del ambiente o fondo (fondo detras de tu fondo xD no se si lo pillais), y color del Cell o rejilla 0xFF002000
0xFF004000
0x0600C000

-Aqui la verdad que lo mejor es probar para saber que es cada cosa, a veces no me aclaro ni yo, con la practica te iras acordando, aunque intentare comentarlo un poco.
El caso es mirar los BACKCOLOR, TEXTCOLOR, ACTIVETEXTCOLOR, etc.. no creo que haga falta mucha explicacion

0xFFFFFFC0 0xFF686485
-Captione s el titulo de las ventanas por asi decirlo

0xFF0C0A18 0xCD636482 0xFF636482 0xE1004100
0xFFFFFFFF 0x7F086820
-Los dialogs, son la mayoria de las ventanas que veras, las de selecciond e skins, de formatear, etc…

0xFF02C90C
0xFFFFFFFF 0xFF02C90C
-Ventana de configuracion





0xCC00C000
0xffc0c0c0
0xff808080
0xff000000
0xff808080
0xff008000
0xff000000 0xffFFFFFF 0xff0000FF
-El Teclado virtual

0x99FFFFFF 0xFF40FF40 0x00000000
0x00000000 0xFF004000 0xFF686485
-Colores del menu principal

VARIABLES DE SISTEMA PARA LOS “SOURCE”

“DVDTitle” -El titulo o descripciond e lo que hay dentor del DVD

“C_Free” -Espacio libre en C, en bytes

“C_Total” -Espacio total de C, en bytes

“E_Free”

“E_Total”

“F_Free”

“F_Total”

“G_Free”

“G_Total”

“C_FreeMB” -Espacio libre en C, en MBytes

“C_TotalMB” -Espacio libre en C, en MBytes

“E_FreeMB”

“E_TotalMB”

“F_FreeMB”

“F_TotalMB”

“G_FreeMB”

“G_TotalMB”

“Time” -Hora actual

“Date” -Fecha actual. El formato depende del idioma de la xbox

“DateTime” -Fecha/Hora actuales

“NickName” -Nick de tu Xbox

“CPUTemp” -Temperatura del micro, Celcius o Fahrenheit depende de tu configuracion

“MBTemp” -Temperatura de la placa base, Celcius o Fahrenheit depende de tu configuracion

“CPUTempC” -Temperatura del micro en Celcius

“MBTempC”

“CPUTempF” -Temperatura del micro, en Fahrenheit

“MBTempF”

“SongName” -Cancion actual que este sonando

“SoundTrack” -Banda Sonora a la que pertenece la cancion

“SongTime” -Tiempo de la cancion

“Tray” -Estado/Tipo del DVD

“DVDType”

“VideoMode” -NTSC/PAL

“IP” -IP de la Xbox

“Subnet” -Mascara de Subred

“Gateway” -Puerta de Enlace

“DNS1”

“DNS2”

“AppVersion” -Version del UnleashX

“MAC” -MAC de la targeta de red

“SkinAuthor” -Autor del skin actual

“SkinVersion” -Version del skin actual

“Version” -Version de Xbox

“HDDKey”

“SerialNum” -Numero de Serie de tu Xbox

“NumClient” -Clientes conectados al FTP de la consola

“ChipID”

“Newsfeed” -Muestra las “news” o noticias como mas os guste

“NewsSource” -Proveedor de las noticias RSS

“LaunchMode” -Como se lanzo UnleashX

“FanSpeed” -Velocidad del ventilador

“Thread” -Numero de procesos ejecutados

Si queremos mezclar variables y texto, debemos usar $variable$
Ejemplo:
<– Mostrara “Xbox: Kaede” en mi caso jeje, Kaede es mi cajita xD