lunes, 8 de septiembre de 2008

www.ftp.cu

Alien [blackhat4all@gmail.com]

Mucho y más que mucho se ha hablado en BlackHat y demás espacios similares sobre las carencias de conectividad "Full" a Internet y todo lo que esto nos afecta a los que, día a día tenemos que lidiar con este problema. Las causas y razones se han expuesto también en muchos lugares y, clara o no, convincentes o dudosas, son las respuestas que tenemos y con las que debemos lidiar. No obstante, pienso (y ya he confirmado), que no soy el único que se hace esta pregunta:

¿Por que no iniciar una alternativa que, si bien no suplante a Internet, si sea capaz de cumplir, en un pequeño porciento la función de esta?

No hace mucho, navegando en uno de los foros de nuestro país, me encontré con alguien que planteaba la idea de crear una especie de FTP gigante en el que se acumule toda la información posible.

Como todos sabemos, los FTP, más allá de ser meros lugares de descarga, se han convertido para muchos en la salida efectiva que soluciona varios problemas. Se empieza a hacer muy frecuente ya escuchar a personas decir:
- Fulano, tu tienes...?
- Entra a... y descárgalo desde allá.

Pero, ¿por que tener varios lugares y no tratar de agruparlos todos en un solo sitio?

Por lo general, cuando se aprende a andar en la red, una de las cosas que casi siempre tratamos de recordar son aquellos lugares en los que podemos tener a la distancia de un clic uno o varios programas que nos serán útiles para algo, pero según se va uno adentrando en el ciberespacio, aprender y memorizar estos lugares se hace cada vez más difícil, ahora, ¿cuan distinto se haría todo si existiera un sitio denominado algo así como www.ftp.cu?

En contra

Un sitio de este tipo, al que se conectarían cientos de personas al mismo momento, puede requerir de un buen ancho de banda, el que no tenemos en estos momento, pero para suplir esto, se pudieran tomar algunos server (de esos que están como adornos decorativos en la red) y ponerlos a disposición de una idea de este tipo, acción con la que se dividiría el trabajo y por lo tanto tocaría a menos esfuerzo por parte de cada maquina.

Puede que pensar de esta forma nos enfrente a otro problema; ¿Qué pasaría si todos trataran de acceder al mismo lugar y en el mismo tiempo?. Pues para esto también se podría hacer mirror de los server en distintos lugares y un software que sea capaz de saber cual está menos cargado y desviar los accesos a esa dirección, de esa forma no habría sobrecarga para ningún servidor en específico y si además, nos centramos en que, por la baja tasa de transferencia, nadie se atrevería a descargar más de 50 Mb, los programas que se podrían almacenar serían finitos, pero suficientes.

(Una vez resuelto el (quizás) mayor problema con el que de seguro se tendría que lidiar pasaremos a los pros)

A favor

Con toda la información agrupada en un solo lugar, darse a la tarea de buscar algo seria más fácil para todos.

Si se le quita a todos los servidores que tengan FTP este servicio y se pasa a un servidor específico para que cumpla esta tarea, todos los servidores aliviaran su carga de trabajo y se desempeñaran de mejor forma.

Estando el FTP en un dominio .cu, y con acceso desde todas las subredes, se podría hacer referencia al mismo desde cualquier lugar del país.

Pero...

Un FTP de esta magnitud debe ser alimentado no solo por lo que existe actualmente en los FTP comunes, sino que, por la facilidad que tienen algunas personas para conseguir programas actualizados o que por lo general se hacen difíciles de adquirir por vías normales, no sería mala idea que también un usuario normal pudiera tener la facilidad de subir más información para este proyecto. Por supuesto, todo lo que se envíe pasaría por un "filtro", que no sería más que una serie de personas que catalogarían los archivos según su genero, tipo y demás calificaciones, además de que aprobarían o cancelarían la subida de un archivo.

Ya se sabe que carecemos en cuba de muchas cosas, pero lo que a veces sobran son ideas y personas de buena voluntad que quieren hacer el bien para todos. Si logramos una idea en conjunto y podemos entre todos ayudar a crear un espacio de este tipo, podríamos convertir a la hoy poco atractiva red .cu en un lugar más interesante y en el que nosotros mismos tendríamos miles de cosas por explorar.

Continuar leyendo

Por un hacking más transparente

Mr I/O [blackhat4all@gmail.com]

A kind108 mi novia, por demostrarme que ser como soy es algo especial.

Nota: Esto no es otro manifiesto h@cker

¿Qué es un h@cker?

Aun no lo se, creo que es alguien en una dimensión más allá, un modelo, una utopía, la aspiración, el jedi de la mente de una biónica traducida a impulsos por – los dedos – ecuaciones matemáticas y lógicas mas allá de algunos periféricos, protocolos, e interfaces, un wizard de la matrix – uno más – un redentor anónimo en mundo virtual.

¿Cuándo seré un h@cker?

Tal vez nunca y no me importa. Solo se que existo, más allá del código, o de las funciones, con las que interactúo con objetos que no existen en el mundo real, mientras manipulo entornos que no están en ninguna lado. Existo, luego pienso.

Este es mi reino de hadas. El paraíso interior, el de las mentes maestras. Que comparto con otros como yo, y con algunas plagas y otros maleficios tal vez indeseables, Dios nos hizo, y la Electrónica – más bien la Física – nos unió, y nos hizo comunidad.

Soy un tipo normal, pues vivo como todos un par de vidas: una pública, modelo de la común donde voy a fiestas – cuando puedo – hago deportes y tengo sexo con chicas, pues me divierto como alcanzo, en la cual trabajo y sufro decepciones como todos, y de todo ello me alegro pues es sinónimo de que estoy vivo.

Pero tengo otra – igual a todo el mundo – privada, donde me divierto más y me siento más a gusto, en un mundo donde la gente media e incluso mucha de la gente de la otra media – la media de esto que se hace llamar TIC – no me entiende, donde pienso distinto y me siento mejor.

¿Qué eres? ¿Qué es un h@cker?

Me revuelvo en la pregunta, pues la realiza una núbil diosecilla de la desnudes y los keyboards en la tranquilidad de una cama, y no se muy bien que responder.

El dinero es una mercancía, el trabajo del hombre es otra. El dinero es necesario, es útil, pues es cierto que vivirás con el sudor de tu frente como está escrito en algún texto antiguo, y debes conseguirlo para poder vivir. Por tanto el dinero se cambia por trabajo.

Pero si el dinero se vuelve demasiado importante para uno, y para conseguirlo no te importa estafar a otros – eso incluye robar – te sacaste automáticamente del paraíso de los h@ckers y te conviertes en un pirata, en un mercenario más de la larga cola de los triunfos a medias, esa que encabezan los Gates multimillonarios, lo siento pero frágil criatura si vives así ya no eres un h@cker.

Solo eres entonces alguien más en la fila de los colonizadores de este mundo de las nuevas tecnologías, y serías aun peor que ellos, pues ni siquiera posees las patentes que supuestamente te hacen dueño de algo – o de todo.

Tengo vicios naturalmente, soy humano, algunos me toman de las manos y me conducen a camas donde duermo con dos chicas de vez en vez, otros me destrozan los pulmones con nicotina y otras mierdas – algunas radiactivas – que habitan en la punta roja de mis cigarrillos.

Otro me obligan a superarme – el vicio de la lectura – que me arrastra desde revistas técnicas a la literatura universal, convirtiéndome en un devorador de bytes de información que almaceno en un disco duro que no se cuando se llenará. Y aunque juego también, este no es un espacio vital en mi vida, es solo un pedacito de luz de la extraña filosofía que rumio, es la ultima parte, más me interesa el making of, el código públicado, robado, o simplemente emulado.

Así que si del juego solo me interesara el ganarlo para ponerlo en una colección de victorias virtuales, no sería siquiera un aspirante, sería solo un gambler, un gamer, un vicioso más del ciber_ludo.

No me jacto – aprendo a vivir en el clandestinaje, el mejor aliado es pasar sin ser percibido – vivir sin alardear de que haber roto no se que contraseña – sin hacerlo siempre que se pueda – sin activar no se que proxialgo – peligroso software – en una work station estatal – o en la de alguien – que te podría meter tras las rejas porque el delito informático existe y está legislado.

Por ello – y por respeto (y cautela) – no me doy gloria banal frente a una masa de analfabetos de segundo tipo, una masa de no conocedores a los cuales por lo general nunca nadie les explica como se hace, ya que quien lo hace conoce en el fondo que no ha hecho nada y si enseña los trucos que aprendió – o le enseñaron – hasta ahí llegará su nombre y su reputación de h@cker.

Se – sin embargo –que la magia esta en un código, compilado tal vez en tierras lejanas, que para colmo quizás he robado o alguien lo hizo por mi, que tenía dentro encriptado en binario las llaves de la puerta que estaba aparentemente cerrada. Y que sin saberlo un perezoso administrador – cuidado roots – ha dejado entornada.

Pobre criatura aquellas que tratando de llegar a sitios para alardear desconocen – en su ignorancia mortal – como otros personajes con más blancas u oscuras intensiones, que sin utilizar software – aprendices de lo poco que pueden o profesionales de la incursión – se han movido por las paredes invisibles de los cables, navegando en los canales, con comandos añejos por el desuso – al conocer el vocablo estudiar y haberlo hecho su bandera – que sentados frente a negras consolas, ven el tentador mundo prohibido – al infinito y más allá – sin dejar trazas, o dejando algunas realmente incomprensibles para los estupefactos “ingenieros” a los cuales no voy a definir pues ya alguien explicó quienes eran – que tienen que quitarse el sombrero y guardarlo frente a novicios del arte tan capaces, algunas veces adolescentes, y para nada genios.

Por ello no soy simplemente un cracker – pero no confundirlos con la otra especie que admiro – o sea, no soy solamente un password cracker, sin tener la menor idea de lo que ha hecho, y que tan solo posees una pizca de inteligencia que le permite entender – a veces de forma mecánica – como funciona alguna herramienta informática – si tu eres uno no te sientas mal pues eres dichoso, tu masa encefálica funciona bastante bien, recuerda que mucha gente tiene acceso a ellas y no saben siquiera como echarlas a andar – y que la usa para beneficio individual.

Lo peor de ser un cracker de sistemas no es serlo, el más grande es envolver a terceras personas que no son lo que tú eres, y que sin embargo ya son como tú, pues tú usas su nombre.

Los otros crackers – de los que tampoco soy parte – son otra cosa, son los magisters de la ingeniería inversa, los crackeadores de programas, los bucaneros, los desmontadores de códigos, la gente del soft-ice y otros desensambladores, los reyes del binario y del hexa – saludos a estos chicos y chicas que admiro por su constancia – que no tendrían que ser ladrones – si, ladrones, es la palabra correcta – si nos moviéramos en ambientes más libres – viva el ñu.

No soy un phreacker, ni siquiera a medias – tampoco un pirata de la phibra – se como funcionan los teléfonos y celulares, conozco los programas con que se liberan estos últimos, no tienen nada del otro mundo, tan solo es que no están escritos en tu español – y como casi ni hablas bien este, como vas a entender la bárbara lengua de los anglosajones – también conozco de otros programas que sirven para otras cosas que un día meterán en problemas a más de un tonto. Pero no poseo estas armas en mi modesto arsenal de guerra.

Yo prefiero mantenerme limpio, y dejarme estafar a sabiendas, que estafar a otros mientras robo un servicio que no es mío, pues me basta con saber que la sin par tecnología por la que nos cobran un ojo de la cara, ya debía ser gratis pues todos los capitales invertidos ya se han pagado con creces, y sin embargo sigue siendo tan cara, como si a diario se pusieran en orbita más satélites para hacer mejor y mas eficiente este servicio. Me niego a ingresar en ninguna de esas nóminas de ladrones que conozco bien.

Creo en la doctrina del copy left, del software libre, del comunismo digital, y creo debiera aplicarse a más cosas. Soy un fanático defensor de la libertad de la información, de la lucha contra las brechas digitales. Y creo en el derecho a la existencia de derechos – y (of course) patentes menos restringentes – que permitan a los desposeídos poder vivir, pero no apruebo la piratería, que por desgracia si he practicado, pues he tenido que hacer cosas para poder vivir.

Aunque me hubiera gustado serlo – no nací con ese talento – no soy electrónico de la arquitectura inversa – ni de los de la improvisación de la reparación de equipos, pobres locos que entregan sus equipos a los empíricos electrónicos del desastre – aunque mi título universitario incluye esa palabra, hace siglos que no ejerzo y el estar ocioso oxida los dedos y el cerebro, pues la práctica crea la perfección.

No soy un diseñador de nada, no me hallo frente a ese arte menor que es la publicidad, ni sus derivados de arte kitch como fotomontajes y demás malezas, no creo en el photoshop ni en ningún otro software semejante, no soy editor de videos de nada, aunque domine quizás bastante de formatos de imágenes, sonidos y sus amalgamas en movimiento. Esto tampoco es lo que yo hago aquí, indudablemente no soy de la farándula cibernética, lo cual no quiere decir que no sepa como hacerlo.

Tampoco me corroe el fanatismo a Micrososft, ni de Apple, ni a IBM, ni a AMD, no he jurado aun esas banderas. Estos no son equipos de fútbol, son transnacionales del quinto poder, y puedes apostar que a ninguna de esa gente le importará robarnos o aplastarnos – si fuera necesario – para poder llegara su meta. Por ello no juego en su equipo de grandes estafas y fraudes – averigüen antes quienes son estos tipos y vean como se hicieron ricos.

Al final de lo que estoy seguro es de no saber quien soy, pero si tengo claro que cosa no soy, y estoy orgullosos de ser quien soy y de no ser lo que no soy, – cualquier cosa que sea – dentro de un mundo tan revuelto que la mayoría no sabe que es, al creer que es alguien que no es – engañado por la propaganda seudo_filosófica de una informática más sencilla (?).

O encerrado en las tierras donde la gente no sabe quien es, al estar perdidos en imitar y tratar de ser quienes no son. Se por donde camino, y lo duro que es, conozco las consecuencias de los actos que día tras día activo al interactuar con los eventos que se me abalanzan, conozco la caída, el dolor y el levantarme.

Solo se que nadie es dueño del conocimiento – pues es propiedad de todos – que nadie debe cobrar por la información; me veo solo como alguien que vive por y para las máquinas, que se siente bien aprendiendo de su arquitectura, de sistemas operativos, de programación y telefonía, pero que aun después de 25 – ¿tantos ya? – años frente a ellas aun no se siente listo para ser llamado h@cker aunque algunos desde siempre me hayan puesto la etiqueta.

Etiqueta inútil que aunque reconforta y te llena de placer, quiebra estatus y te vuelve peligroso y sospechoso de delitos por cometer, ante personal calificado para darte trabajo. Entonces pagas el precio de la popularidad y no te ofrecen puestos, o cuando lo hacen personas convencidas de tu talento, te encuentras en la base de la cadena alimenticia – y de los trabajos – y tus ideas – ¿para qué las quieres? – no valen nada, pues no serán llevadas a ninguna práctica más allá de un Forum de base.

Cuando los de arriba – casi siempre seres sin talento – demuestran la verdad de la ley gravitacional que plantea que las materias más pesadas se mantendrán pegadas al suelo y con grandes posibilidades de caer, mientras las más livianas cabezas – sin cerebros en la mayoría de los casos – vuelan hasta el estrellato, y deciden que tu propuesta no sirve, pues no la entienden.

Eso soy, lo que lucha y se mueve, lo que se adapta para seguir reptando, en el afán de conocer y no quedar atrapado en la ignorancia, pues ser cultos es el único modo de ser libres. Para ello leo, y cada día leo más.

Pero ¿Quién eres tú?

Siéntate entonces y piensa, mueve tus neuronas, focaliza que parte tomas tú en este submundo, y que parte es la que aspiras a formar, entonces levántate, trázate metas, se lo que eres y lucha por llegar a donde quieres, date tu nombre y úsalo con orgullo. Pues cada quien es lo que es, y el tratar esforzadamente de ser otra cosa te lleva a ser mejor persona.

Solo un par de consejos más para terminar esta retórica: no te categorices como h@cker, ni dejes que nadie lo haga, puede cerrarte las puertas en buenos trabajos mañana, tampoco le niegues la ayuda a aquellas criaturas torpes que se mueven en nuestro mundo aunque te parezca estúpido que alguien no pueda aprender a dar formato a un documento, a hacer una tabla o simplemente a grabarlo en un dispositivo extraíble, no te asombres ni molestes, la realidad es más asombrosa que la ficción.

Vive tranquilo y piensa que no existen barreras, solo las hay en tu mente, por eso estudia, para que formes parte mañana de este nuevo underground cubano, una tierra virtual cada día más transparente, cada día más segura.

Continuar leyendo

Programación en C++

Alex17 [marisolriech@infomed.sld.cu]

A través de muchas ediciones de blackhat muchos suscriptores ha dicho que quisieran aprender a programar y en este artículo que por supuesto continuará el objetivo que tiene es enseñar a programar en el compilador c++.


Este fue mi trabajo de curso junto a 7 estudiantes más, con el objetivo que todos los alumnos de mi escuela repasaran y aprendieran programación. Este artículo solo tiene conceptos básicos, así que no le servirá a nadie que quiera masterizarse en la programación.

Bueno primero comenzaremos con algunos conceptos básicos:

Fichero fuente y programa o código fuente:

Los programas se escriben con la ayuda de un editor de textos del mismo modo que cualquier texto corriente. Los ficheros que contiene programas forma de texto se conocen como ficheros fuente, y el texto del programa que contiene se conoce como programa fuente. Nosotros siempre escribiremos programas fuente y los guardaremos en ficheros fuente.

Ficheros objeto, código objeto y compiladores:

Los programas fuente no pueden ejecutarse. Son ficheros de texto, pensados para que los comprendan los seres humanos, pero incomprensibles para los ordenadores.

Para conseguir un programa ejecutable hay que seguir algunos pasos. El primero es compilar o traducir el programa fuente a su código objeto equivalente. Este es el trabajo que hacen los compiladores.

Consiste en obtener un fichero equivalente a nuestro programa fuente comprensible para el ordenador, este fichero se conoce como fichero objeto, y su contenido como código objeto.

Los compiladores son programas que leen un fichero de texto que contiene el programa fuente y generan un fichero que contiene el código objeto.

El código objeto no tiene ningún significado para los seres humanos, al menos no directamente. Además es diferente para cada ordenador y para cada sistema operativo. Por lo tanto existen diferentes compiladores para diferentes sistemas operativos y para cada tipo de ordenador.

Librerías:

Junto con los compiladores de C y C++, se incluyen ciertos ficheros llamados librerías. Las librerías contienen el código objeto de muchos programas que permiten hacer cosas comunes, como leer el teclado, escribir en la pantalla, manejar números, realizar funciones matemáticas, etc. Las librerías están clasificadas por el tipo de trabajos que hacen, hay librerías de entrada y salida, matemáticas, de manejo de memoria, de manejo de textos, etc.

Hay un conjunto de librerías muy especiales, que se incluyen con todos los compiladores de C y de C++. Son las librerías ANSI o estándar. Pero también hay librerías no estándar, y dentro de estas las hay públicas y comerciales.

Ejemplo de librerías:
iostream.h: esta es muy utilizada en el modo consola pues es la que permite que se puedan mostrar datos, textos y guardar datos en variables.
macht.h: esta también es muy utilizada ya que dentro trae todas las funciones matemáticas, raíz, raíz cubica, seno, coseno, etc.
conio.h: esta librería al igual que la iostream, trae muchas funciones, como por ejemplo para detener la pantalla cuando estamos mostrando datos, limpiar la pantalla entre otras.
windows.h: esta librería es muy utilizada ya que trae a dentro multiples funciones para trabajar con las APIS de Windows.
regitry.h: esta librería se utiliza mucho para el trabajo con el registrode Windows, para crear, eliminar o modificar claves en el mismo.

Entre otras muchas mas para buscarlas ir a C:\Archivos de programa\Borland\bin\include\ en esta dirección se encuentran todas las librerías que utiliza el borlad.

Para llamar cualquier librería del sistema se hace de la siguiente forma:
#include <libreria>

Tipos de variables:

Una variable es un espacio reservado en la memoria de la PC para contener valores que pueden cambiar durante la ejecución de un programa. Los tipos determinan cómo se manipulará la información contenida en esas variables. No olvides, si es que ya lo sabías, que la información en el interior de la memoria del ordenador es siempre binaria, al menos a un cierto nivel. El modo en que se interpreta la información almacenada en la memoria de un ordenador es siempre arbitraria, es decir, el mismo valor puede usarse para codificar una letra, un número, una instrucción de programa, etc. El tipo nos dice a nosotros y al compilador cómo debe interpretarse y manipularse la información binaria almacenada en la memoria de un ordenador. De momento sólo veremos los tipos fundamentales, que son: void, char, int, float y double, en C++ se incluye también el tipo bool. También existen ciertos modificadores, que permiten ajustar ligeramente ciertas propiedades de cada tipo; los modificadores pueden ser: short, long, signed y unsigned o combinaciones de ellos.

Tipo "char" o carácter:

[signed|unsigned] char Es el tipo básico alfanumérico, es decir que puede contener un carácter, un dígito numérico o un signo de puntuación. Desde el punto de vista de la PC, todos esos valores son caracteres. En C y C++ este tipo siempre contiene un único carácter del código ASCII. El tamaño de memoria es de 1 byte u octeto. Este tipo de variables es apto para almacenar números pequeños o letras.

Tipo "int" o entero:

[signed|unsigned] [short|long] int [signed|unsigned] long [int] [signed|unsigned] short [int] Las variables enteras almacenan números enteros dentro de los límites de su tamaño, a su vez, ese tamaño depende de la plataforma del compilador, y del número de bits que use por palabra de memoria: 8, 16, 32... No hay reglas fijas para saber el mayor número que podemos almacenar en cada tipo: int, long int o short int; depende en gran medida del compilador y de la PC. Sólo podemos estar seguros de que ese número en short int es menor o igual que en int, y éste a su vez es menor o igual que en long int. Veremos cómo averiguar estos valores cuando veamos los operadores. Este tipo de variables es útil para almacenar números relativamente grandes, pero sin decimales, por ejemplo el dinero, salvo que seas Bill Gates.

Tipo "float" o coma flotante:

float Las variables de este tipo almacenan números en formato de coma flotante, mantisa y exponente, para entendernos, son números con decimales. Son aptos para variables de tipo real, como por ejemplo el cambio entre Dólar y CUC. O para números muy grandes, como la producción mundial de trigo, contada en granos. El fuerte de estos números no es la precisión, sino el orden de magnitud, es decir lo grande o pequeño que es el número que contiene. Por ejemplo, la siguiente cadena de operaciones no dará el resultado correcto: float a = 12335545621232154; a = a + 1; a = a - 12335545621232154; Finalmente, "a" valdrá 0 y no 1, como sería de esperar. Los formatos en coma flotante sacrifican precisión en favor de tamaño. Sin embargo el ejemplo si funcionaría con números más pequeños. Esto hace que las variables de tipo float no sean muy adecuadas para los bucles, como veremos más adelante. Puede que te preguntes (alguien me lo ha preguntado), qué utilidad tiene algo tan impreciso. La respuesta es: aquella que tú, como programador, le encuentres. Te aseguro que float se usa muy a menudo. Por ejemplo, para trabajar con temperaturas, la precisión es suficiente para el margen de temperaturas que normalmente manejamos y para almacenar al menos tres decimales. Pero hay cientos de otras situaciones en que resultan muy útiles.

Tipo "bool" o Booleana:

bool Las variables de este tipo sólo pueden tomar dos valores "true" o "false". Sirven para evaluar expresiones lógicas. Este tipo de variables se puede usar para almacenar respuestas. O para almacenar informaciones que sólo pueden tomar dos valores, por ejemplo: qué mano usas para escribir. En estos casos debemos acuñar una regla, en este ejemplo, podría ser diestro->"true", zurdo->"false". bool respuesta; bool continuar; Tipo "double" o coma flotante de doble precisión: [long] double Las variables de este tipo almacenan números en formato de coma flotante, mantisa y exponente, al igual que float, pero usan mayor precisión. Son aptos para variables de tipo real. Usaremos estas variables cuando trabajemos con números grandes, pero también necesitemos gran precisión. Lo siento, pero no se me ocurre ahora ningún ejemplo. Bueno, también me han preguntado por qué no usar siempre double o long double y olvidarnos de float. La respuesta es que C siempre ha estado orientado a la economía de recursos, tanto en cuanto al uso de memoria como al uso de procesador. Si tu problema no requiere la precisión de un double o long double, ¿por qué derrochar recursos?. Por ejemplo, en el compilador Dev-C++ float requiere 4 bytes, double 8 y long double 12, por lo tanto, para manejar un número en formato de long double se requiere el triple de memoria y el triple o más tiempo de procesador que para manejar un float. Como programadores estamos en la obligación de no desperdiciar nuestros recursos, y mucho más los recursos de nuestros clientes, para los que haremos nuestros programas. C y C++ nos dan un gran control sobre estas características, es nuestra responsabilidad aprender a usarlos como es debido.

Tipo "void" o sin tipo:

void Es un tipo especial que indica la ausencia de tipo. Se usa en funciones que no devuelven ningún valor, también en funciones que no requieren parámetros, aunque este uso sólo es obligatorio en C, y opcional en C++, también se usará en la declaración de punteros genéricos, lo veremos más adelante. Las funciones que no devuelven valores parecen una contradicción. En lenguajes como Pascal, estas funciones se llaman procedimientos. Simplemente hacen su trabajo, y no revuelven valores. Por ejemplo, funciones como borrar la pantalla, no tienen nada que devolver, hacen su trabajo y regresan. Lo mismo se aplica a funciones sin parámetros de entrada, el mismo ejemplo de la función para borrar la pantalla, no requiere ninguna entrada para poder hacer su cometido.

Continuar leyendo

Liberar Motorola V3

Bill WHG [michel.grc1@gmail.com]

Aquí les traigo una guía fácil, y sobre todo muy eficaz, quiero aclarar que hay muchos artículos en la Web algo parecidos, pero esto que traigo es un estudio que hice, a partir de muchas ideas que faltaban por concretar, e aquí mis resultados y conclusiones.


Espero que tomen provecho de este artículo y se ahorren 20cuc, que es lo que cobra Etecsa por desbloquear un celular.

La tecnología celular llega a nuestro país con la llamada aparición de la empresa de telecomunicaciones Etecsa, y su afiliada Cubacel. Hoy su mercado crece cada día más ahora que los ciudadanos cubanos tienen derecho a adquirir una línea, por cierto bastante cara que es.

Comencemos con el desbloqueo, este tipo de liberación se conoce por Extracción y Edición de PDS.
¿Que es el PDS?: Es un área o sistema protegido en la memoria del teléfono en conjunto con la OTP (One time programming) son dos secciones a tener en cuenta al momento de realizar el proceso de liberación, con la cual se debe extremar el cuidado. Son zonas que si se corrompen o quedan con valores erróneos, puede ser muy difícil solucionarlas.

En el PDS encontramos semms de subsidy lock, bootloader del teléfono, número de IMEI entre otras cosas.
Ahora si el teléfono esta en estado de coma, que no es mas que una mal procedimiento de flasheo o un mal proceso de Backup cuando presenta errores en su Bootloader, es que se corrompió el PDS, entonces habrá que realizar otro procedimiento para ponerlo en modo que acepte Flash. En este caso debemos pasar a otro proceso llamado Test Points, puntear integrados en la placa del teléfono para ponerlo en modo de Flash.

Para el caso que el teléfono solo este bloqueado, pero sin presentar ningún otro conflicto, pasaremos a la siguiente ejecución:

Que vamos a hacer:
*EXTRAER PDS EN FORMATO BIN.
*REALIZAR UNA COPIA DE SEGURIDAD.
*EDITAR EL PDS CON "PDS EDITOR".
*ARMAR UN TEMPLATE CON SHXCODEC.
*FLASHEAR BOOTLOADER 70.D0 (Downgrade)
*FLASHEAR EL PDS AL CELULAR.

Software que necesitamos:
P2K Drivers para instalar nuestro teléfono en nuestra PC
Flash backup 2.3
PDS Editor
BOOTLOADER 70.D0
SHXCodec
RSD Lite

1) Extracción del PDS

Suponiendo que ya tienen los drivers P2K instalados y que Windows lea el dispositivo cada vez que lo colocamos, abrimos FlashBackup 2.3.

- Vamos hasta el botón superior que dice SETUP y hacemos click
- Marcamos la casilla que dice "Disable backup Compression and support for compressed backups" o en español "Deshabilitar compresión de backup y soporte para backup comprimido" (Con esto logramos que FlashBackup nos genere cuando hagamos un backup, un archivo ".bin" que nos posibilita poder editarlo como archivo binario).
- Vamos hasta el botón superior "BACKUPS" y hacemos click.
- En la sección inferior llamada "Select Loader (Only for advanced users!)", la dejamos
pulsada y desplegamos la lista. Allí mismo marcamos "Select Another..." y en el cuadro de examinar, seleccionamos el archivo "32 MB (08A0).ldr" que debería encontrarse en una carpeta llamada "RamDld Pack" dentro de la carpeta que contiene a FlashBackup 2.3.
- En la opción superior "BACKUP MODE", en la lista desplegable seleccionamos "PDS Backup".
- Por último, nos aseguramos que el teléfono esté encendido y que FlashBackup lo esté reconociendo por su modelo o por "Phone Connected" (eso lo leemos en una leyenda en la parte inferior del programa, en color verde)
- Presionamos el botón "CREATE".

Ahora flasbackup mostrará dos barras de progreso y apagará nuestro teléfono. Si todo ha salido bien, Flashbackup habrá extraído el PDS de nuestro equipo celular (V3) y lo habrá guardado en la carpeta indicada en la solapa a la que podemos acceder por medio del botón "SETUP" que se encuentra en la parte superior del programa.

-Ahora, repetimos todo este paso, a excepción del punto donde cambiamos la opción "SELECT LOADER". En esta repetición, dejamos seleccionada la opción "BUILT-IN LOADER". Proseguimos con el resto del procedimiento. (Esto es solo una medida preventiva y de seguridad, para tener por seguro backupeado tu PDS).

2) Backup

- Pues eso, nos vamos hasta la carpeta donde se extrajo nuestro PDS (debería llamarse algo como "PDS.bin") y hacemos una copia en algún lado, por si acaso nos sucede algo mal.

3) Editando el PDS con PDS Editor:

- Abrimos PDS Editor, un único archivo ejecutable sin instalación.
- vamos a File > Open y en el cuadro de examinar buscamos el PDS extraído y lo abrimos. (No olvidemos que el backup que hicimos en el anterior paso DEBE quedar intacto).
- En la pantalla principal del PDS Editor, presionamos el botón "Undo last subsidy seems".
- Vamos a File > Save As y guardamos el archivo PDS con otro nombre.
- Cerramos PDS Editor y lo volvemos a abrir.
- vamos a File > Open y abrimos el PDS que acabamos de guardar.
- (notamos que ahora, el archivo tiene menos contenido que antes, eso está bien.)
- Hacemos click en la ficha (solapa) "Seem History"
- En la lista izquierda de "combinaciones alfanuméricas", seleccionamos la que dice "00AB".
- Presionamos UNA SOLA VEZ (RECUERDA, SOLO UNA VEZ) el botón "STEP BACK". No verás ningún cambio, pero lo hizo.
- Vamos a File > Save As y guardamos el archivo con otro nombre (distinto a los anteriores). Memoricemos este nombre, porque ahora lo vamos a necesitar.

4) Armando el Template del PDS para poder flashear

Ahora deberemos preparar el PDS en un formato especial SHX para poder flashearlo.

Para preparar el PDS utilizaremos el PDS_Flash (que es un archivo comprimido que contiene un archivo flash SHX) y el programa SHXCodec. Relájate, esto es más facil de lo que parece.
- Descomprimimos el archivo PDS_Flash.zip
- Descomprimimos el programa SHXCoDec en una carpeta y verificamos que en la misma estén los archivos: "midas.dll" y "SHXCoDec.exe".
- Ejecutamos SHXCoDec.exe
- Dentro de SHXCodec, buscamos el campo superior llamado "Source SHX File" y hacemos click en la Carpeta de Examinar que figura a la derecha del campo.
- Buscamos en el cuadro de examinar, el archivo "R374_V3_PDS_template.shx" que descomprimimos previamente del archivo PDS_Flash.zip y aceptamos el cuadro.
Ahora hacemos click en el botón que dice "Split source SHX File".
- (SHXCodec procesará y mostrará en la lista de abajo, dos ítems.)
- Seleccionamos el ítem en la lista que dice:

CG: 6, TYPE: PDS (Safety Zone), Start add: 10010000, End add: 1001FFFF, Size: 65536.

- Ahora presionamos el botón "REPLACE".
- En el cuadro de examinar, cambiamos el tipo de archivo a "Bin Files (*.BIN)"
- Buscamos nuestro "PDS.bin" donde lo tengamos almacenado y aceptamos el cuadro.
- ShxCodec nos preguntará si queremos continuar con el reemplazo, hacemos click en YES.
- Por último, presionamos el botón que está en la esquina inferior derecha "Compile SHX", nos preguntará donde lo queremos almacenar. Buscamos una ubicación cómoda y un nombre de archivo que podamos recordar, algo así como "V3PDS" y guardamos. ShxCodec lo llamará "V3PDS.shx" y estará listo para ser flasheado a nuestro V3.

Lo que acabamos de hacer, es generar un compilado SHX FLASH para poder FLASHEAR directamente a nuestro V3, sin pasar por ningún programa intermediario como Flash backup . En ese compilado SHX hemos metido nuestro PDS, que está también con un RAM Downloader correcto para nuestro V3, lo que nos asegura que el procedimiento saldrá correctamente.

5) Cambiando el Bootloader a 07.D0 (downgrade):

IMPORTANTE: antes de proseguir con este procedimiento, debemos revisar y anotar nuestra actual versión de Bootloader. Para eso encendemos el teléfono en modo flash (* y # y luego Power) y verificamos si en la pantalla dice: BootLoader 07.E0, 8.26, 8.23, 07.D0. Si nuestra versión fuera la 07.D0 DEBEMOS continuar con el siguiente paso y omitir este.

Es fundamental saber y tener anotado cuál es el bootloader original, porque luego de terminar el proceso, debemos restaurar el bootloader correspondiente a la versión de flex instalada.

Entonces, para que el desgraciado de nuestro equipo nos permita hacer cambios en nuestro PDS, tendremos que cambiar la versión de Bootloader a 70.D0.

Para eso:
- Arrancamos FlashBackup 2.3.
- Hacemos click en el botón superior que dice "FLASHER" y en la nueva solapa, localizamos el campo de arriba de todo que dice "Select Flash File" y hacemos click en el botón [...]. Buscamos el archivo que ya debemos tener descomprimido llamado "BootLoader_07_D0_fo_08.23_by_Arkasha18.shx" y aceptamos el cuadro de examinar.
- Encendemos el celular en modo flash: mantenemos # y * presionados y luego presionamos POWER para encender.
- Verificamos que FlashBackup 2.3 nos dice abajo de todo "Phone Connected" o la "V3 Connected" en verde.
- Hacemos click en FLASH.
- (FlashBackup cargará unas barras de progreso, diciéndonos "SENDING LOADER" entre otras. En la pantalla del celular veremos algo como "SW Update in Progress...")

Una vez finalizado el proceso, FlashBackup apagará nuestro equipo.
Lo volvemos a encender en modo flash (# y * luego POWER, ultima vez que lo repito) y verificamos que la versión de bootloader en la pantalla del celular diga: 07.D0.
Si es así, todo ha salido bien hasta ahora.
Apagamos el celular.

6) Flasheando el PDS al celular

Ahora procederemos a Flashear el archivo SHX que generamos (compilamos) con SHXCoDec a nuestro V3.

- Descomprimimos y ejecutamos el instalador del RSD Lite 2.5
- Abrimos RSD Lite 2.5
- Conectamos el teléfono (V3) y esperamos a que RSD Lite lo reconozca.
- Click en el botón "[...]"
- Buscamos el archivo generado, debería ser algo como "V3PDS.shx" según el nombre que le hayas puesto. Una vez localizado, aceptamos el cuadro de examinar.
- (Vemos la información que RSD Lite nos da sobre el archivo en el panel derecho.)
- Encendemos el V3 en modo Flash (# y * y luego POWER).
- Vemos que RSD Lite nos toma el teléfono como "V3". (Si lo tuyo está jodido lo tomará como "S Blank Neptune".
Presionamos el Botón "START".
- (Ahora esperamos a que RSD Lite trabaje, demorará muy poco y finalmente apagará nuestro teléfono. En la pantalla del V3 se leerá "SW Update in Progress...")
- Encendemos nuevamente el V3 en modo Flash. Vemos que sigue operativo y su bootloader es 07.D0.
- Apagamos el teléfono.
- Encendemos nuevamente el teléfono en modo NORMAL (es decir, sólo presionando POWER) y... NUESTRO V3 ENCIENDE EN MODO FLEX y está liberado!!!

Ahora, supongamos que justo a tí, no te encendió. Debemos entonces tener un problema de bootloader. Es decir, el Bootloader que queda instalado (07.D0) no es compatible con tu versión de flex instalada. Si seguiste mis instrucciones y anotaste tu anterior versión de bootloader, la idea sería restaurársela. Para eso, tenemos que repetir todo el paso 5) pero en este caso, reemplazar el "BootLoader_07_D0_fo_08.23_by_Arkasha18.shx" por el archivo ".shx" que contenga tu anterior bootloader o una versión compatible con el mismo.

Espero que les sea de mucha utilidad, y ahorren dinero.

Bill WHG

 

Continuar leyendo

Servicios de Google

Alchemist [lazaroramos@rgibara.icrt.cu]

A veces solo vemos a google como un buscador o el mejor de ellos, pero en realidad google encierra muchas utilidades que no vemos a veces porque solo lo utilizamos como tal. Aquí les traigo una lista de los distintos servicios y sus descripciones con los que cuenta este magnifico buscador, muchos de estos encontrados navegando por ahí y leyendo artículos otros los he descubierto casi sin querer. También es valido aclararles que hay servicios que no he expuesto aquí por la simple razón de que están bloqueados para Cuba por la propia empresa de Google.

Grupos de Google

(http://groups.google.com.cu) Estos hacen veces de Foros y Listas de correos están destinados a servir de páginas de discusiones de disímiles esferas de la sociedad, estos trabajos han sido agregados por usuarios desde los inicios de Google, en ellos podemos encontrar variada informaciones y artículos.

Gmail

(http://mail.google.com) El conocido por todos “correo de google” con 6gb y en aumento este correo ha sido llamado por muchos como el mejor de Internet. También a Gmail esta añadido el Messenger de google “Gtalk” que usa el protocolo de Jabber.

Centro de Asistencia para Webmasters

Aquí podemos encontrar mucha información y Tips de ayuda para aquellos que les motiva el diseño Web y lo ejerzan, también nos da la posibilidad de usar el PageRank y agregar nuestras webs al índice de google. Este centro de asistencia en línea lo podemos encontrar en la siguiente dirección: http://www.google.com.cu/support/webmasters/

Google Traductor

(http://translate.google.com.cu/): Excelente herramienta que nos permite traducir no solo texto si no Webs, Documentos, etc. También cuenta con un buen diccionario bilingüe. Este servicio cuenta con 23 idiomas y con la posibilidad de que si no sabes en que idioma esta el texto el lo detecta automáticamente.

Google News

(http://news.google.com.cu): Este es un servicio de búsqueda actualizada de noticias con el cual podemos hacer búsqueda de noticias de cualquier tema y en 52 países.

Google Books

(http://books.google.com.cu/): Un servicio de búsqueda especializada de libros y revistas.

Navegación para Móviles

(http://www.google.com.cu/gwt/n): ¡No me miren así, jejeje!, esto es un simple servicio mas que aunque lo hemos cogido para una que otra cosilla es solo una versión de google para navegar con móviles (esta en peligro de extinción en la red cubana, XD).

Estos son los servicios mas comunes que brinda Google o sea los que están linkeados en sus paginas. Pero ahora les muestro los servicios más curiosos y a la vez útiles que nos brinda el tan nombrado buscador.

Calculadora

Este es un servicio que te permite hacer cálculos sin tener que minimizar el navegador. Para ver un ejemplo en la página principal de google (www.google.com.cu) vamos a poner lo siguiente 2+2 cuando hagamos clic en buscar nos pondrá el resultado del calculo que hicimos.

Conversión de Dinero

Cuando tengamos la duda de cuanto son 100 dólares americanos convertidos en euros vamos a google y escribimos (100 dólares en euros) y nos aparecerá el resultado así como también podemos usar cualquier tipo de moneda del banco internacional.

Mapas

A veces cuando vamos a algún lugar (extranjero) necesitamos saber que nos vamos a encontrar y que calle cruzar, pues google nos brinda esta posibilidad podemos hacer uso de sus mapas cuando hacemos una búsqueda con tan solo poner el nombre de la ciudad o el país. Vamos a probar esta utilidad poniendo Cuba para país y La Habana para ciudad. Y nos saldrá una imagen de pequeño tamaño con la imagen del mapa.

Diccionario

Ahora veremos el servicio de diccionario de google, vamos a su pagina principal y en el cuadro de búsqueda vamos a escribir define:palabra y nos saldrán varias definiciones de la palabra que especifiquemos, estas definiciones vienen a cargo de sitios como Wikipedia. Para ver un ejemplo vamos a poner define:BlackHat y nos saldrá una definición que traducida vendría siendo algo como esto:

“Un experto hacker que hackea para ilegales y siniestra, a veces, política y económica, y no sólo para bromas.” (Bueno eso dicen ellos, XD)

Espero que les halla servido de algo este pequeño artículo, si tienen dudas con algo bueno contáctenme a mi correo. Nos vemos por ahí en la red cubana. Salu2s Alchemist

Continuar leyendo

Introducción a las Estructuras de Datos (Parte 2)

CHenry [chenry@lab.matcom.uh.cu]

Tipos de Datos Abstractos (TDA).

Para brindar descripciones adecuadas a los objetos de un tipo determinado, se necesita una metodología que cumpla las siguientes condiciones:

Descripciones precisas y sin ambigüedades, es decir, que exprese con claridad y de manera concisa la funcionalidad del tipo de dato que se pretende describir.

Descripción completa, o lo más completa posible, de las propiedades que distinguen a un determinado tipo de dato del resto de los tipos.

Especificar solo lo necesario (NO a las sobreespecificaciones).

Ejemplo 3:
En la descripción de los objetos de tipo Pila se deben especificar sólo aquellas operaciones propias de una pila, y no otras de carácter específico que estén relacionadas con una implementación determinada, como es la propiedad estáLlena de una pila que sólo tiene lugar cuando la implementación se hace sobre una memoria de tamaño fijo como lo es un arreglo. Si esta propiedad aparece en la descripción, entonces se está haciendo una sobreespecificación de los objetos de este tipo.

Por lo tanto, para describir el comportamiento de un tipo de objetos, que es lo mismo que describir el tipo de dato al que pertenecen, se necesita seguir un método que permita:
• completitud
• precisión en las descripciones

Y no tenga:
• ambigüedades
• sobreespecificaciones

Definición 4:

Un axioma es una sentencia clara y evidente por si misma que no necesita ser demostrada (5). Un axioma es una verdad lógica.

Ejemplo 4:
• Una pila, al crearse, está vacía.
• Todo elemento es igual a sí mismo.

Definición 5:

Una función f: A -> B es total si está definida x A. Una función es parcial cuando no es total.

Definición 6:

Sea la función parcial f: A -> B definida en C A (subconjunto propio, o sea, nunca llega a ser A). La función cf: A -> {true, false} es una función característica de f si x A se cumple que cf(x) = true si y solo si x C.

Definición 7:

Una precondición es una función característica de una función parcial. En otras palabras, es una condición necesaria para que dado un elemento del dominio de una función parcial se pueda evaluar dicha función en ese elemento.

Ejemplo 5:
• Para pedir el tope de una pila, esta no puede estar vacía.

Definición 8:

Un Tipo de Dato Abstracto (TDA) es un modelo matemático formado por un conjunto de operaciones (funciones parciales o totales) definidas sobre él y que cumplen con determinados axiomas y precondiciones. En resumen, algo así como:

Modelo Matemático = conjunto de operaciones + axiomas + precondiciones

Un Tipo de Dato Abstracto describe un tipo de dato, y a su vez, todo tipo de dato está caracterizado por un Tipo de Dato Abstracto. A la hora de especificar un Tipo de Dato Abstracto, deben tenerse en cuenta los siguientes aspectos:

Tipo de dato que describe (nombre que se le da al tipo).
Funciones (una por cada operación definida sobre el tipo de dato descrito).
Axiomas (condiciones que se imponen a las funciones para describir el comportamiento deseado).
Precondiciones (condiciones necesarias para que se puedan efectuar determinadas operaciones definidas sobre el tipo de dato).

Ejemplo 6:
Hagamos la descripción de los objetos de tipo Pila (STACK). Cualquier otra definición de un Tipo de Dato Abstracto puede tomar este ejemplo como base.
Tipo:
STACK [G]

En esta definición del tipo de dato se está haciendo una descripción genérica de una pila (una pila de enteros tiene las mismas operaciones y el mismo comportamiento que una pila de cadenas de caracteres). Las propiedades de una pila no dependen de la información que en ella se almacena, lo más correcto es entonces definir un ADT genérico que las describa a todas por igual.

Cuando se especifica STACK [G], G es un parámetro formal genérico que representa simbólicamente el tipo de información que se almacenará.

De STACK [G] se hacen derivaciones a través de G, por ejemplo:
STACK [INTEGER]
STACK [STRING]
STACK [CUENTA_BANCARIA]

Donde INTEGER, STRING y CUENTA_BANCARIA son también tipos de datos abstractos. Cuando se define un TDA genérico se presenta una recursión, porque se puede definir entonces STACK [STACK [INTEGER]].

Funciones (describen las operaciones que se pueden realizar con los objetos de tipo STACK [G]; el concepto matemático que más se corresponde a la representación de las operaciones es el de función; cada función describe una operación):
push: STACK[G] x G => STACK[G]
pop: STACK[G] -> STACK[G]
top: STACK[G] -> G
empty: STACK[G] => BOOLEAN
new: STACK[G]

Normalmente cuando le hacemos push a una pila, lo que se hace es poner el elemento en el tope de esa misma pila. Pero conceptualmente, cuando hacemos esta operación lo que obtenemos es una nueva pila que contiene los elementos de la anterior más el nuevo elemento. Por lo que la operación push se puede representar de manera funcional. Igualmente sucede con la operación pop.

La operación new es una función de creación. En este caso particular no necesita de ningún argumento, por eso escribimos new: STACK[G] y no new: => STACK[G], aunque esta segunda variante es más formal.

La notación f: A => B indica que la función es total (está definida para todos los valores del dominio). La función pop es parcial porque no está definida para las pilas vacías, por eso se utiliza -> en vez de =>

En las funciones push y pop, STACK[G] aparece en el dominio y en la imagen, por eso se dice que estas operaciones son de transformación. En el caso de empty y top, STACK[G] aparece solamente en el dominio, en este caso son funciones de consulta. Se dice además que new es de creación porque STACK[G] aparece solamente en el dominio. Lo mismo ocurre con otros tipos de datos abstractos.

Axiomas (indican que lo que estamos describiendo es una pila y no otra cosa. Expresan cual es la semántica que las funciones tienen que cumplir; es falso decir que un tipo de dato que tenga las operaciones anteriormente descritas sea una pila):

Sea s de tipo STACK[G], x de tipo G.
top(push(s, x)) = x: expresa la estrategia de almacenamiento de la información (LIFO).
pop(push(s, x)) = s: expresa la estrategia de almacenamiento de la información (LIFO).
empty(new): expresa que toda pila nueva se genera vacía.
not empty(push(s, x)): cualquier pila tras habérsele hecho un push no esta vacía.

Como se ve, la interrelación entre las diferentes funciones expresadas a través de los axiomas, deja explícita las particularidades que distinguen el funcionamiento de cada una de ellas.

Precondiciones (condiciones que determinan para una operación descrita a través de una función parcial cuáles son los valores del dominio para los que existe su imagen):
pop(s: STACK[G]): not empty(s). La función pop no está definida para pilas vacías, o sea, para hacer un pop es necesario que la pila no este vacía.
top(s: STACK[G]): not empty(s). La función top no está definida para pilas vacías, o sea, para pedir el top de una pila es necesario que esta tenga algún elemento.

Finalmente el tipo de dato abstracto queda formalizado de la manera siguiente:

Pila

 

Tipo

STACK[G]

Funciones

push: STACK[G] x G Þ STACK[G]
pop: STACK[G] -> STACK[G]
top: STACK[G] -> G
empty: STACK[G] => BOOLEAN
new: STACK[G]

Axiomas

top(push(s, x)) = x
pop(push(s, x)) = s
empty(new)
not empty(push(s, x))

Precondiciones

pop(s: STACK[G]): not empty(s)
top(s: STACK[G]): not empty(s)


La definición del tipo de dato abstracto no implica que las operaciones definidas sean las únicas. Para representaciones concretas, pude que sea necesario añadir nuevas operaciones.

Ejemplo 7:
Cuando se desea implementar un STACK sobre un espacio fijo de memoria, debemos añadir la operación:
isfull: STACK[G] => BOOLEAN

a partir de la cual se detectan las situaciones de overflow sobre la pila.

Un Tipo de Dato Abstracto es, en resumen, un mecanismo formal para describir cualquier estructura de datos que queramos diseñar desde el punto de su funcionalidad.

Continuar leyendo

Breve Análisis sobre los Chats

Yordan [truano@infomed.sld.cu]

Hola amigos, sé que este es un tema que interesa a la mayoría, por eso lo abordo, pero antes de comenzar quiero dejar claro que lo que dejaré plasmado en estas líneas es solo mi humilde opinión, nada que ver con resoluciones ni mandamientos de ningún tipo, es solamente eso, lo que piensa un usuario común del tan underground mundo chatero, y digo underground porque últimamente todos los chat han debido de estar prácticamente ocultos para lograr que perduren, y aun así, se los persigue.


Como primer punto trataremos de dar algunas explicaciones de porque surgen los chats; ante todo surgen por la necesidad del ser humano de comunicarse con sus semejantes, la comunicación siempre ha sido la base de toda buena relación a cualquier escala, desde una relación interpersonal hasta las internacionales entre los diferentes países, habiendo buena comunicación se logran nuevas amistades, se fortalecen las ya existentes, se evitan guerras, he incluso se encuentra el amor.

Por todo lo antes expresado es lógico deducir que los chats surgen para bien, claro que siempre una mente mal intencionada pudiera hacer uso de una vía como esta para causar algún tipo de problemas, ya sea políticos, morales o sencillamente sociales, para esto existen los administradores y moderadores de dichos chats, en sus manos está evitar este tipo de problemas, y créanme, existen “op” que hacen muy bien su trabajo.

La duda puede surgir cuando intentamos acceder desde “ciertos” servidores a un nuevo chat que con mucho trabajo fue montado en algún sitio por personas que están a favor de la comunicación, y nos damos cuenta que estamos bloqueados, que no se permite acceder, entonces la pregunta se reduce a “¿Por qué?”, “si el chat es algo bueno”, ha, pues tenemos que tener en cuenta que muchísimas personas entran a los chats desde sus centros de trabajo y pudieran estar dejando de producir para colarse en ese mundo tan adictivo; y si, suena hasta lógico, pero, acaso en cada centro de trabajo donde existan computadoras con algún tipo de acceso no debe haber un administrador de sistemas e incluso hasta una persona encargada de la seguridad informática?, hasta donde yo lo veo si, y estas personas serían las encargadas de controlar que los usuarios no hagan uso de ese servicio en horarios laborales, o sencillamente que no hagan uso en el centro de trabajo, pero porque un servidor que brinda servicio de conexión a “particulares” o por decirlo de una manera que encaje mas con la situación, personas que se conectan desde su casa y que no afectan para nada la producción o el buen funcionamiento de ningún centro laboral también restringen estos sitios?.

Existirían miles que palabras de explicar dicha forma de actuar, pero serían meras justificaciones, la mayoría de ellas sin sentido para los afectados, y como bien dice una amiga “la justificación es la prostitución del carácter”, entonces tratemos de no prostituirnos, tratemos de hacer lo mejor y lo más efectivo para los usuarios, actualmente existen miles de cubanos cumpliendo misiones en países extranjeros, cubanos que dejaron familias detrás añorando su regreso, deseando a cada momento saber cómo las va, y quien crea que el correo es suficiente entonces no tiene a nadie lejos, existen personas que aunque no estén cumpliendo misiones, la vida les llevó a vivir en otro país, y no por eso dejan de ser cubanos y no por eso dejan de tener necesidad de comunicación con sus seres queridos, a esas personas, médicos, deportistas, trabajadores de cualquier sector y si, porque no, incluso a los que han emigrado les debemos una plataforma comunicativa lo más cercana a la realidad, lamentablemente eso no lo logra el frio correo, y las llamadas telefónicas son incosteables para muchos.

Quien no ha llorado o reído cuando su ser más querido le dice a través del chat “por fin te encuentro, no sabes cuánto te he extrañado”, y en ese mismo momento podemos contestarle entre risas o llantos, (pero igualmente emocionados) “yo también deseaba saber de ti”; esto que he representado, puede ser una conversación cualquiera de un día cualquiera, mantenida por una pareja separada por la necesidad de cumplir con un deber asignado por el país, entonces ¿con que derecho declaramos a los chats como algo que solamente sirve para perder el tiempo, o para ralentizar las redes?, ¿con que derechos privamos a esa pareja de un encuentro virtual que les haga sentirse juntos una vez más?, no, no existe justificación posible para esa pareja, no para privarles de lo que pudiera ser su mejor encuentro en meses, no tenemos derecho.

Comencemos a ver las salas de chateo con el ojo correcto y hagamos fuerza por lograr que perduren y que podamos tener acceso desde cualquier servidor, y porque no, que se convierta en un servicio oficial, nunca dudemos que será muy agradecido por miles de personas que hoy por hoy nos representan en países extranjeros.

Continuar leyendo