Obten Softmaker Office 2008 de manera gratuita hasta el 31 de Diciembre

| sábado, 19 de diciembre de 2009

Descarguenlo ya lo tienen tanto para Windows com para Linux Descarga

Fuente

Cambio la apariencia de la pagina de OpenSuse

|

http://www.opensuse.org/es/

Google Wave

| viernes, 13 de noviembre de 2009

Hola a estas alturas muchos ya habran escuchado acerca de google wave la nueva plataforma unifacada de trabajo en tiempo real la cual posiblemente sea lanzado a fines de año afortunadamente pude me dieron una invitacion para el preview bueno de jare un archivo pdf con algunos robots para los que ya tengan su cuenta en google wave

Google Wave Extension List

Salio Firefox 3.6 Beta 2 VLC 1.0.3

|

Que tal despues de algun tiempo se actualizo mi reproductor preferido de videos VLC se acutalizo a la version 1.0.3 ademas salio la segunda beta de de firefox 3.6 que parece que saldra para fines de año bueno dejo los enlaces nos vemos



Cambios entre VLC 1.0.2 y 1.0.3

Video outputs:
* Fix video quality when resizing the video on Windows Vista and 7, due to
regressions in most popular drivers
* New deinterlacers modules based on yadif and yadif(x2) algorithms

Decoders:
* Windows version supports now natively the WMA Professional codec, as it
didn't work in the packaged version of 1.0.2
* Fix downmixing of particual 4.0 AC-3 audio tracks

Encoders:
* x264 has profile-limitter, like:
#transcode{vcodec=h264,venc=x264{profile=baseline,level=12}..}

Input:
* Update for appletrailers lua script
* Fixes on the RAR stream filter
* Fix for E-AC3 in ATSC/TS streams
* Various fixes for v4l and v4l2
* Fix a crash in mjpeg demuxer

Service discovery:
* New udev module for linux

Qt4 interface:
* Fixes on the playlist and the stream output panels

Translations:
* French, Galician, Korean, Polish, Russian, Romanian, Slovak and Ukrainian updates

Video Lan Client




Lo nuevo en Mozilla Firefox 3.6 Beta 2

Firefox 3.6 Beta is built on Mozilla's Gecko 1.9.2 web rendering platform, which has been under development for several months and contains many improvements for web developers, Add-on developers and users. This version is also faster and more responsive than previous versions, and has been optimized to run on small device operating systems such as Windows CE and Maemo.

* More than 190 bug fixes from the last beta to improve performance, stability, security and features.
* This beta is available in more than 45 languages - get your local version.
* Users can now change their browser's appearance with a single click, with built in support for Personas.
* Firefox 3.6 will alert users about out of date plugins to keep them safe.
* Open, native video can now be displayed full screen, and supports poster frames.
* Support for the WOFF font format.
* Improved JavaScript performance, overall browser responsiveness and startup time.
* Support for new CSS, DOM and HTML5 web technologies.

Developers can find out about all the changes and new features at the Mozilla Developer Center.
Mozilla Firefox 3.6 Beta 2

Skype se pasa al open source

| lunes, 2 de noviembre de 2009

Tras una queja de un programador al servicio técnico de Skype en la que pedía que lanzaran un paquete específico RPM de la última versión deeste programa para Mandriva, tal y como ya se había hecho con anterioridad, se ha podido saber gracias a la contestación a la misma que Skype será open source proximamente, con lo que la comunidad de programadores linuxeros tendrán a su disposición el código fuente para colaborar en su desarrollo.

Una gran noticia que abre grandes posibilidades al futuro de Skype, cuestionado ultimanente, y que resalta una vez mas, la importancia y potencia del software libre en la actualidad.

Integracion con Windows 7

| domingo, 1 de noviembre de 2009


Con la salida de Windows 7 lo acabo de instalar en una Notebook HP Pavilion DV6000 tengo algunos problemas con el Quick Touch espero que se solucionen pronto, bueno el punto es que lo interesante es la integracion que he podido lograr con el reproductor por excelencia Winamp he tenido que añadir un plugin para lograr la integracion con TaskBar como se puede ver en las capturas es interesante lo que se puede lograr



les dejo el link para que lo puedan desargar el plugin

Win7Shell

Ademas firefox se integra tambien con windows 7 no dejo capturas porque aun no lo probe de todas maneras les dejo el enlace

Mozilla Firefox 3.6 Beta 1

Actualizacion:Por cierto estoy preparando un articulo con programas compatibles con Windows 7 Nos vemos.

Pide tus CD's llegan a tu casa gratuitamente

| jueves, 29 de octubre de 2009




Despues de un tiempo sin escribir (hace mucho por cierto) les quiero comentar de seguro mucho saben que actualmente puedes pedir el envio de Cd's tanto de ubuntu 9.10 tanto la version desktop como la version server, kubuntu , opensolaris y para desarrolladores el IDE de Sun Microsystems (Oracle) Netbeans a continuacion les dejo los links:

Aqui piden el ubuntu 9.10 (recien salido) version desktop y server

Solicita Ubuntu

Este es igual que ubuntu solo cambia el entorno de escritorio porque tambien es la version 9.10

Solicita Kubuntu

Este link les manda a descargar el arte es decir labels, covers

Artwork 9.04

Solo se registran y ya pueden pedir tu OpenSolaris
OpenSolaris

Para terminar pidan el IDE por excelencia para varios de lenguajes como Java , PHP, Ruby, ademas de traer la ultima version de Java FX OJO el envio esta disponible solo por tiempo limitado
NetBeans DVD Starter Kit Program

Red Hat ingresa al Standard & Poor’s 500

| jueves, 23 de julio de 2009


Cuando se realizó la OPA (Oferta Pública de Acciones) de Red Hat en 1999, muchos lo vieron como un signo del inicio de la era de Linux. No hay duda de que se trató de un gran evento para Red Hat y Linux, pero quizás no es tan importante como el que ocurrirá este viernes 24 de julio cuando Red Hat ingrese al índice bursátil Standard & Poor’s 500.

Se trata de uno de los principales índices bursátiles, en donde se incluye a las compañías más grandes del mundo. Las empresas listadas en este índice son seleccionados por un comité que aplica el criterio de incluir aquellas compañias que son más representativas de la industria de Estados Unidos.

Una de las dudas sobre compañías como Red Hat, que proveen infraestructura y servicios para el resto de la industria, es cómo ésta se ve afectada por la crisis económica. Independiente de lo que ya dicen los expertos, la respuesta es evidente: Red Hat sigue creciendo, y ahora con mayor razón.

Red Hat se ha posicionado como un proveedor de infraestructura de Tecnologías de Información a nivel corporativo, tanto en sectores de gobierno como en servicios financieros, manufactura, etc. No están sujetos a un mercado vertical, y su ingreso al S&P es una muestra de la importancia de Red Hat en el análisis de la salud del mercado en general.

Red Hat es una de las pocas empresas que ha logrado establecer un modelo de negocios que funcione, y que esté basado en servicios relacionados con Linux y Software Libre. Hay que recordar que a pesar de la popularidad de distribuciones como Ubuntu, la empresa que hay detrás (Canonical) aún no logra encontrar un modelo de negocio sustentable.

¿Qué es lo que ha sabido hacer bien Red Hat? No sólo se ha enfocado en aportar enormemente en el desarrollo de Linux, sino que han sabido apuntar a un mercado en donde los servicios relacionados con tecnologías de información son fundamentales y por lo tanto tienen una inversión asegurada. Por otra parte siempre han trabajado en conjunto con otros gigantes - como Oracle - para proveer en conjunto la plataforma base en donde se implementan soluciones de software corporativas.

Independiente de las experiencias que cada usuario pueda tener a nivel personal con el sistema operativo Linux, es un hecho indiscutible que se ha convertido en una plataforma válida en la industria, y que de a poco ha ido ganando el terreno que antes dominaba Unix. El ingreso de Red Hat al S&P así lo confirma.

Fuente

El servidor de OPERA esta fallando

|
Al parecer se cayo el servidor de opera justo cuando pensaba descargar el beta del Browser la version aqui dejo una captura nos vemos

Nuevo Curso en CESLCAM

| lunes, 4 de mayo de 2009


Hace algun tiempo publique informacion acerca del CESLCAM un sitio que ofrece cursos gratuitos con certificacion en Cursos de Aplicaciones de Software Libre y la pregunta si ya hable antes de esto poque escribo este articulo bueno la novedad es que abrieron un curso Inicialización a Internet con herramientas de Software Libre asi que esperas aprovecha tus tiempos muertos y aprender algo que en la actualidad toda persona debe saber a continuacion pondre informacion precisa de que trata el curso.


Este curso está orientado a usuarios sin conocimientos previos en el uso de las herramientas de acceso a Internet. Durante el desarrollo del mismo se guiará por los procesos de instalación, configuración básica y uso de los servicios básicos y herramientas de red necesarios para acceder a Internet. Muchas de las aplicaciones que vamos a ver son multiplataforma, es decir, existen versiones tanto para Windows como para GNU/Linux u otros sistemas operativos, lo que se indicará a lo largo del curso cuando sea necesario.
Matriculate en el Curso

Gmail Labs se globaliza

|

Gmail Labs, una herramienta que ofrece a los usuario mejorar y personalizar su bandeja de entrada de correo electrónico como acceso al correo sin conexión o deshacer el envío de emails, y un largo etc. Aunque ell lanzamiento inicial de Gmail Labs en inglés, fue en 2008, ahora se ha ampliado internacionalmente en las distintas lenguas locales, incluyendo el español.

Hasta hace poco el servicio Gmail Labs sólo se podía activar si se configuraba nuestra cuenta de correo en el idioma inglés, con el inconveniente que representaba para aquellos que no se llevan bien con éste idioma. Y que a más de uno le ponía los “dientes largos”, por no poder hacer uso de las herramientas que amplian las posibilidades del correo de Gmail.

Pero al fin Google, ha anunciado el soporte de nuestro idioma como parte de su internacionalización, y de hecho Gmail Labs ya es accesible a prácticamente todos los idiomas en los que era posible utilizar el servicio.

Como he mencionado anteriormente, el apartado de Gmail Labs, nos permite acceso a funcionalidades extra de nuestro correo electrónico web, y el cual cada vez gana más adeptos, gracias precisamente a la presencia de prestaciones que otros servicios no pueden ofrecer.

Este anuncio ha coincidido con el quinto aniversario de Gmail, desde su lanzamiento el 1 de abril de 2004.

Isabel Salazar, responsable de producto de marketing de Google, comenta :

Estamos muy contentos con el lanzamiento internacional de Gmail Labs cuando se cumple el quinto aniversario de Gmail. Ya que la rapidez de innovación en Gmail Labs, es un claro ejemplo de cómo Gmail ha crecido a lo largo de estos cinco años. Consiguiendo dar vida a un programa de correo electrónico más intuitivo, potente e innovador.


Para activar Gmail Labs, una vez hayas entrado en tu cuenta, sólo tienes que pulsar en el enlace Configuración (en la parte superior derecha de la página) y elige la pestaña Labs. Y sólo activar la correspondiente herramienta que quieras agregar a tu cuenta de correo de Gmail.



Fuente

Campaña mejor cambiese

| domingo, 3 de mayo de 2009
Como sabran trato de alguna manera difundir el software libre y me encontre con esta pagina la cual realiza una campaña en la cual te dan opcion te inscribir tu sitio y poner una imagen como esta



Solo tienes que ingresar a www.mejorcambiese.com y listo pueden participar de la campaña

Entra a: www.mejorcambiese.com

IBSN: Internet Blog Serial Number

|
Bueno en esta oportunidad les traigo algo que tal vez para algunos no sea una novedad pero como sabran existen codigo de barras para los productos investigando un poco me di cuenta en un blog el punto es que puedes entra a esta pagina y registrar tu blog con un número unico siempre y cuando este disponible

Por cierto puedes tenerla en tres formatos diferentes

JPG



GIF



PNG



Pagina de Registro ISBN

Cómo hacer un curriculum para encontrar trabajo

| viernes, 24 de abril de 2009
Tu curriculum es una herramienta imprescindible para encontrar un trabajo. Ten en cuenta que las personas que lo leerán buscarán información clara y concisa para poder decidir si te conceden una entrevista. Por eso, conviene que sigas estos consejos:
Consejos para un curriculum exitoso

* Demuestra en tu curriculum que reúnes las condiciones para el puesto de trabajo.
* Escribe un curriculum diferente para cada puesto de trabajo.
* Sé breve:
Usa palabras, frases y párrafos cortos.
Limítate a una idea por frase.
No uses tres palabras para lo que puedas decir en una.
No repitas informaciones.
Evita llenar el curriculum de cursos breves y antiguos.
Todo tu curriculum tiene que ocupar una página, dos a lo sumo.
* Sé ordenado:
Ordena información de acuerdo a su importancia.
Resalta los datos importantes, usando negritas o cursivas.
Recuerda que tu curriculum tiene que leerse fácilmente.
* Di la verdad:
Evita mentir o falsear datos porque la empresa los comprobará.
* Cuida la ortografía.

Elementos del curriculum

* Datos personales:
Apellidos
Nombre
Domicilio
Teléfono
Correo electrónico
Fecha de nacimiento
* Foto
Debe ser reciente.
* Formación académica: indica fecha, centro y lugar donde has realizado tus estudios.
* Formación complementaria: indica fecha, centro y lugar donde has realizado tus estudios.
* Idiomas: señala los idiomas que conoces y tu nivel. Menciona los títulos reconocidos que tienes, por ejemplo el First Certificate en inglés.
* Informática: sistemas operativos, procesadores de texto, hojas de cálculo, bases de datos, Internet, etc.
* Experiencia
Experiencia profesional
Experiencia no profesional
* Otros Datos de Interés: coche, carné de conducir, disponibilidad, etc.

Ideas para incorporar al curriculum

* Responsabilidad
* Entusiasmo
* Energía
* Dinamismo
* Iniciativa
* Tenacidad
* Capacidad para trabajar en equipo
* Liderazgo

Presentación del curriculum

Las formas más usadas para presentar un curriculum son tres:

Curriculum cronológico directo: presenta la información partiendo de lo más antiguo a lo más reciente. Tiene la ventaja de resaltar la evolución, poniendo de relieve el desarrollo ascendente de tu carrera.

Curriculum cronológico inverso: presenta la información partiendo de lo más reciente a lo más antiguo. Cada día se usa más porque resalta tus experiencias más recientes, que son las que más interesan a las personas que pueden contratarte.

Curriculum funcional: ordena la información por temas y proporciona un conocimiento rápido de tu formación y experiencia. Es un perfecto instrumento de marketing porque, como no sigue una progresión cronológica, permite seleccionar los puntos positivos y omitir los que no te son favorables como los periodos en paro, los frecuentes cambios de trabajo, etc.

Fuente:todotutoriales

Firefox 3.0.9

| jueves, 23 de abril de 2009


Mozilla acaba de publicar la versión 3.0.9 de Firefox, una nueva actualización de estabiilidad y seguridad. En este caso se han solucionado 9 problemas de seguridad, entre ellos uno considerado como crítico posibilitando el cuelge del navegador por corrupción de memoria, así como también un error que provocaba que se perdieran las cookies almacenadas. Pueden ver más detalles en las notas de lanzamiento de la nueva versión.

Si todavía no se ha actualizado tu navegador seguramente te avisará pronto, pero si no quieres esperar puedes ir a Ayuda - Buscar actualizaciones, o descargar la nueva versión desde el siguiente enlace.

Descargar Firefox 3.0.9

El Software libre si cuesta ....!!!!!!!!!!

| martes, 14 de abril de 2009
Hola hoy pondre los precios de las licencias para Red Hat Linux Enterprise que por cierto lo usa NASA





Fuente:Red Hat Linux Enterprise

10 cosas que deberías saber si piensas dedicarte a la informática

| domingo, 12 de abril de 2009
10. El sueldo suele ser bueno comparado con otras profesiones, pero dado que te pagan bien, a menudo creen que son tus dueños. Así que olvídate de horas extras y acostúmbrate a llamadas a horas intempestivas o a trabajar en festivos y fines de semana. Para la empresa, va con el sueldo.
9. Tú serás el culpable cuando los usuarios cometan errores estúpidos. Eso incluye ordenadores que no funcionan porque no están enchufados o tazas de café derramadas encima de una CPU.
8. Pasarás de héroe a villano varias veces en un sólo día. Cuando consigas solucionar algo que tenía parados a un cierto número de usuarios que no se darán cuenta de lo sencillo que era serás su héroe, pero lo olvidarán todo cuando un oscuro fallo en la red haga que todo funcione a una velocidad glacial, aunque afortunadamente podrás ponerlos de nuevo de tu parte si les enseñas algún pequeño truquillo de Excel o Word antes de irte a casa.
7. Las certificaciones no siempre te harán mejor en tu trabajo, pero pueden ayudarte a conseguir un puesto mejor o una subida de sueldo. Aún así, tendrás que demostrar después lo que vales.
6. Tus compañeros de trabajo de otros departamentos te usarán como soporte técnico para sus ordenadores de casa. Además de familia, amigos y vecinos, claro. Y gratis. En un momento dado tendrás que aprender a decir «no» firmemente.
5. Los proveedores y consultores se atribuirán todos los méritos cuando las cosas funcionen y te echarán a ti la culpa cuando no lo hagan. Ya sabes, sus sistemas funcionan sin problemas en todas las demás instalaciones, así que debe ser que algo falla en la infraestructura informática de tu empresa. Si todo funciona, tenderán a olvidar todo el trabajo que has hecho para adecuar su producto a las necesidades de tu empresa.
4. Pasarás más tiempo manteniendo en funcionamiento viejas tecnologías que implementando nuevas. Puede que tengas la oportunidad de jugar con tecnologías muy nuevas en modo de pruebas, pero a la hora de la verdad, el trabajo tenderá a ser llevado a cabo con tecnologías ya probadas.
3. Los veteranos de los departamentos de informática a menudo son el principal obstáculo para implementar nuevas tecnologías. A menudo instalar nuevo hardware o software supondría importantes mejoras y/o ahorro, pero muchas veces no serán consideraciones presupuestarias lo que lo dificulte, sino el deseo de los veteranos del departamento de no tocar las cosas en aplicación de la vieja máxima de «Si funciona, no lo toques».
2. Algunos profesionales de los departamentos de tecnología instalan cosas más con el objeto de consolidar su poder que de ayudar a la empresa. No es que sea algo generalizado, pero tampoco es raro ver cómo algunos profesionales del campo deciden instalar una solución que tira más hacia su campo de especialización que hacia lo que realmente necesita la empresa.
1. Los informáticos a menudo usan jerga para confundir a los responsables que no saben de tecnología y así escurrir el bulto. Todo el mundo mete la pata de vez en cuando, pero no todo el mundo es capaz de admitirlo, y a menudo usan explicaciones técnicas para despistar a sus supervisores que no tienen los conocimientos suficientes como para saber que les están contando una milonga.

Fuente:Gadgetopia

Asterisk implementa central PBX

| viernes, 10 de abril de 2009

Asterisk es una aplicación de software libre (bajo licencia GPL) que proporciona funcionalidades de una central telefónica (PBX). Como cualquier PBX, se puede conectar un número determinado de teléfonos para hacer llamadas entre sí e incluso conectar a un proveedor de VoIP o bien a una RDSI tanto básicos como primarios.

Mark Spencer, de Digium, inicialmente creó Asterisk y actualmente es su principal desarrollador, junto con otros programadores que han contribuido a corregir errores y añadir novedades y funcionalidades. Originalmente desarrollado para el sistema operativo GNU/Linux, Asterisk actualmente también se distribuye en versiones para los sistemas operativos BSD, MacOSX, Solaris y Microsoft Windows, aunque la plataforma nativa (GNU/Linux) es la mejor soportada de todas.

Asterisk incluye muchas características anteriormente sólo disponibles en costosos sistemas propietarios PBX como buzón de voz, conferencias, IVR, distribución automática de llamadas, y otras muchas más. Los usuarios pueden crear nuevas funcionalidades escribiendo un dialplan en el lenguaje de script de Asterisk o añadiendo módulos escritos en lenguaje C o en cualquier otro lenguaje de programación soportado por Linux.

Para conectar teléfonos estándar analógicos son necesarias tarjetas electrónicas telefónicas FXS o FXO fabricadas por Digium u otros proveedores, ya que para conectar el servidor a una línea externa no basta con un simple módem.

Quizá lo más interesante de Asterisk es que soporta muchos protocolos VoIP como pueden ser SIP, H.323, IAX y MGCP. Asterisk puede interoperar con terminales IP actuando como un registrador y como gateway entre ambos.

Asterisk se empieza a adoptar en algunos entornos corporativos como una gran solución de bajo coste junto con SER (Sip Express Router).

Pagina Oficial: Asterisk

Thalia antes, ahora y por siempre (Grandes Exitos)

|
Hola! aca les dejo para que descargen Lo nuevo de Thalia... es un recopilatorio de hits que hizo con EMI music... es el ultimo disco Con EMI ya que se cambio de discografica.. se fue a casablanca records (UNIVERSAL)



Calidad de audio: 128 kpps
contiene caratula frontal y trasera

Cd 1
01. Piel Morena
02. Gracias A Dios
03. Amándote
04. María La Del Barrio
05. Nandito Ako
06. Amor A La Mexicana
07. Por Amor
08. Mujer Latina
09. Rosalinda
10. Entre El Mar Y Una Estrella
11. Regresa A Mi
12. Arrasando
13. Reencarnación
14. Amor A La Mexicana (Emilio Banda Mix)
15. Piel Morena (Emilio Banda Mix)

Cd 2
01. Tú Y Yo
02. No Me Enseñaste
03. ¿A Quien Le Importa?
04. I Want You
05. Baby, I´m In Love
06. Cerca De ti
07. Acción Y Reacción
08. Amar Sin Ser Amada
09. Un Alma Sentenciada
10. Seducción
11. Olvídame
12. Cantando Por Un Sueño
13. No, No, No
14. Ten Paciencia
15. Sera Porque Te Amo

DESCARGA:

CD 1:Disco 1

CD 2:Disco 2

Agradecimientos al usuario superthaliafan

Serie: The Listener

| martes, 7 de abril de 2009


The Listener se centra en la vida de un hombre que puede leer la mente de la gente que le rodea; algo que recuerda mucho al personaje de Matt de Heroes.

La serie está interpretada por el desconocido Toby Logan y su personaje, un joven paramedico, deberá combinar su vida privada con el hecho de ser una especie de “detective telepático”.

Por primera vez, varios canales de todo el mundo se han puesto de acuerdo para estrenarla en la misma semana a nivel mundial. Y, también por primera vez, este nuevo proyecto de origen canadiense llega a España bastante antes que a la NBC, cadena que se encargará de emitirla en Estados Unidos próximamente. FOX España ofreció su primer episodio ayer en pleno primetime, aunque también hay que aplaudirles por haberlo puesto a disposición del público unos días antes en su web oficial.

Sin mas que decir vi el episodio piloto y lo veo algo interesante habra que ver más episodios para poder dar una opinion más objetiva de esta serie

Los programadores de verdad

| lunes, 6 de abril de 2009
Esta es una recopilación de algunas citas que he encontrado en Internet que comienzan con el típico "Los programadores de verdad". Y tú, ¿eres un programador de verdad?

Los programadores de verdad no necesitan comentarios -- el código es obvio.

Los programadores de verdad no documentan. La documentación es para los idiotas que no pueden leer un volcado de memoria.

Los programadores de verdad pueden escribir bucles de 5 páginas sin confundirse.

Los programadores de verdad escriben su código en binario. O como mucho ensamblador.

Los programadores de verdad escriben código automodificable, especialmente si con ello consiguen ahorrar 20 nanosegundos en un bucle.

Los programadores de verdad no tienen miedo a usar GOTOs.

Los programadores de verdad procesan listas usando Fortran.

Los programadores de verdad desarrollan programas de Inteligencia Artificial en Fortran (si no puedes hacerlo en Fortran, hazlo en ensamblador).

Los programadores de verdad trabajan para la Agencia de Seguridad Nacional, decodificando transmisiones rusas.

Los programadores de verdad no comentan su código. Si fue difícil escribirlo, debería ser difícil entenderlo, y más difícil de modificar.

Los programadores de verdad no programan en BASIC. De hecho, ningún programador escribe en BASIC después de la pubertad.

Los programadores de verdad no programan en LISP. Sólo los idiotas escriben programas con más paréntesis que código.

Los programadores de verdad no usan FORTRAN. FORTRAN es para ingenieros débiles que usan calcetines blancos.

Los programadores de verdad no escriben especificaciones. De hecho, los usuarios deberían dar gracias de obtener algo de nosotros. Tienen suerte de que decidamos entregarles el programa.

Los programadores de verdad no leen manuales. El uso de manuales de referencia es para los novatos y los cobardes.

Los programadores de verdad no dibujan diagramas de flujo. Un diagrama de flujo no es más que documentación para analfabetos. Los cavernícolas dibujaban diagramas de flujo; y mira dónde están ahora.

Los programadores de verdad piensan que la programación estructurada es un invento de los comunistas.

Los programadores de verdad no creen en los plazos. Los supervisores establecen los plazos. Los jefes los firman. Los programadores asustadizos se esfuerzan en cumplirlos. Los programadores de verdad ignoran los plazos.

A los programadores de verdad no les gusta el concepto de programación en equipo. A menos que les asignen el puesto de programador jefe, claro.

Los programadores de verdad usan 5 dígitos para las fechas, y están preparados para el problema del año 10.000.

Los programadores de verdad no prueban el código, los usuarios se inventaron para eso.

Concurso Asiatico

|
Hola solo para pongo es te articulo para poner este video si que los asiaticos hacen concursos interesantes vean el video y veran de que hablo

Estructuras Java

| lunes, 30 de marzo de 2009
Enumeraciones

En cualquier clase de colección, debe haber una forma de meter cosas y otra de sacarlas; después de todo, la principal finalidad de una colección es almacenar cosas. En un Vector, el método addElement() es la manera en que se colocan objetos dentro de la colección y llamando al método elementAt() es cómo se sacan. Vector es muy flexible, se puede seleccionar cualquier cosa en cualquier momento y seleccionar múltiples elementos utilizando diferentes índices.

Si se quiere empezar a pensar desde un nivel más alto, se presenta un inconveniente: la necesidad de saber el tipo exacto de la colección para utilizarla. Esto no parece que sea malo en principio, pero si se empieza implementando un Vector a la hora de desarrollar el programa, y posteriormente se decide cambiarlo a List, por eficiencia, entonces sí es problemático.

El concepto de enumerador, o iterador, que es su nombre más común en C++ y OOP, puede utilizarse para alcanzar el nivel de abstracción que se necesita en este caso. Es un objeto cuya misión consiste en moverse a través de una secuencia de objetos y seleccionar aquellos objetos adecuados sin que el programador cliente tenga que conocer la estructura de la secuencia . Además, un iterador es normalmente un objeto ligero, lightweight, es decir, que consumen muy pocos recursos, por lo que hay ocasiones en que presentan ciertas restricciones; por ejemplo, algunos iteradores solamente se puede mover en una dirección.

La Enumeration en Java es un ejemplo de un iterador con esas características, y las cosas que se pueden hacer son:

* Crear una colección para manejar una Enumeration utilizando el método elements(). Esta Enumeration estará lista para devolver el primer elemento en la secuencia cuando se llame por primera vez al método nextElement().
* Obtener el siguiente elemento en la secuencia a través del método nextElement().
* Ver si hay más elementos en la secuencia con el método hasMoreElements().

Y esto es todo. No obstante, a pesar de su simplicidad, alberga bastante poder. Para ver cómo funciona, el ejemplo java412.java, es la modificación de anterior, en que se utilizaba el método elementAt() para seleccionar cada uno de los elementos. Ahora se utiliza una enumeración para el mismo propósito, y el único código interesante de este nuevo ejemplo es el cambio de las líneas del ejemplo original

for( int i=0; i < coches.size(); i++ )
(( Coche )coches.elementAt( i ) ).print();

por estas otras en que se utiliza la enumeración para recorrer la secuencia de objetos

while( e.hasMoreElements() )
(( Coche )e.nextElement()).print();

Con la Enumeration no hay que preocuparse del número de elementos que contenga la colección, ya que del control sobre ellos se encargan los métodos hasMoreElements() y nextElement().

Tipos de Colecciones

Con el JDK 1.0 y 1.1 se proporcionaban librerías de colecciones muy básicas, aunque suficientes para la mayoría de los proyectos. En el JDK 1.2 ya se amplía esto y, además, las anteriores colecciones han sufrido un profundo rediseño. A continuación se verán cada una de ellas por separado para dar una idea del potencial que se ha incorporado a Java.

Vector


El Vector es muy simple y fácil de utilizar. Aunque los métodos más habituales en su manipulación son addElement() para insertar elementos en el Vector, elementAt() para recuperarlos y elements() para obtener una Enumeration con el número de elementos del Vector, lo cierto es que hay más métodos, pero no es el momento de relacionarlos todos, así que, al igual que sucede con todas las librerías de Java, se remite al lector a que consulte la documentación electrónica que proporciona Javasoft, para conocer los demás métodos que componen esta clase.

Las colecciones estándar de Java contienen el método toString(), que permite obtener una representación en forma de String de sí mismas, incluyendo los objetos que contienen. Dentro de Vector, por ejemplo, toString() va saltando a través de los elementos del Vector y llama al método toString() para cada uno de esos elementos. En caso, por poner un ejemplo, de querer imprimir la dirección de la clase, parecería lógico referirse a ella simplemente como this (los programadores C++ estarán muy inclinados a esta posibilidad), así que tendríamos el código que muestra el ejemplo java413.java y que se reproduce en las siguientes líneas.

import java.util.*;

public class java413 {
public String toString() {
return( "Direccion del objeto: "+this+"\n" );
}

public static void main( String args[] ) {
Vector v = new Vector();

for( int i=0; i < 10; i++ )
v.addElement( new java413() );
System.out.println( v );
}
}

El ejemplo no puede ser más sencillo, simplemente crea un objeto de tipo java413 y lo imprime; sin embargo, a la hora de ejecutar el programa lo que se obtiene es una secuencia infinita de excepciones. Lo que está pasando es que cuando se le indica al compilador:

"Direccion del objeto: "+this

el compilador ve un String seguido del operador + y otra cosa que no es un String, así que intenta convertir this en un String. La conversión la realiza llamando al método toString() que genera una llamada recursiva, llegando a llenarse la pila.

Si realmente se quiere imprimir la dirección del objeto en este caso, la solución pasa por llamar al método toString() de la clase Object. Así, si en vez de this se coloca super.toString(), el ejemplo funcionará. En otros casos, este método también funcionará siempre que se esté heredando directamente de Object o, aunque no sea así, siempre que ninguna clase padre haya sobreescrito el método toString().

BitSet

Se llama así lo que en realidad es un Vector de bits. Lo que ocurre es que está optimizado para uso de bits. Bueno, optimizado en cuanto a tamaño, porque en lo que respecta al tiempo de acceso a los elementos, es bastante más lento que el acceso a un array de elementos del mismo tipo básico.

Además, el tamaño mínimo de un BitSet es de 64 bits. Es decir, que si se está almacenando cualquier otra cosa menor, por ejemplo de 8 bits, se estará desperdiciando espacio.

En un Vector normal, la colección se expande cuando se añaden más elementos. En el BitSet ocurre los mismo pero ordenadamente. El ejemplo java414.java, muestra el uso de esta colección.

Se utiliza el generador de números aleatorios para obtener un byte, un short y un int, que son convertidos a su patrón de bits e incorporados al BitSet.

Stack


Un Stack es una Pila, o una colección de tipo LIFO (last-in, first-out). Es decir, lo último que se coloque en la pila será lo primero que se saque. Como en todas las colecciones de Java, los elementos que se introducen y sacan de la pila son Object, así que hay que tener cuidado con el moldeo a la hora de sacar alguno de ellos.

Los diseñadores de Java, en vez de utilizar un Vector como bloque para crear un Stack, han hecho que Stack derive directamente de Vector, así que tiene todas las características de un Vector más alguna otra propia ya del Stack. El ejemplo siguiente, java415.java, es una demostración muy simple del uso de una Pila que consisten en leer cada una de las líneas de un array y colocarlas en un String.

Cada línea en el array diasSemana se inserta en el Stack con push() y posteriormente se retira con pop(). Para ilustrar una afirmación anterior, también se utilizan métodos propios de Vector sobre el Stack. Esto es posible ya que en virtud de la herencia un Stack es un Vector, así que todas las operaciones que se realicen sobre un Vector también se podrán realizar sobre un Stack, como por ejemplo, elementAt().

Hashtable

Un Vector permite selecciones desde una colección de objetos utilizando un número, luego parece lógico pensar que hay números asociados a los objetos. Bien, entonces ¿qué es lo que sucede cuando se realizan selecciones utilizando otros criterios? Un Stack podría servir de ejemplo: su criterio de selección es "lo último que se haya colocado en el Stack". Si rizamos la idea de "selección desde una secuencia", nos encontramos con un mapa, un diccionario o un array asociativo. Conceptualmente, todo parece ser un vector, pero en lugar de acceder a los objetos a través de un número, en realidad se utiliza otro objeto. Esto nos lleva a utilizar claves y al procesado de claves en el programa. Este concepto se expresa en Java a través de la clase abstracta Dictionary. El interfaz para esta clase es muy simple:

* size(), indica cuántos elementos contiene,
* isEmpty(), es true si no hay ningún elemento,
* put( Object clave,Object valor), añade un valor y lo asocia con una clave
* get( Object clave ), obtiene el valor que corresponde a la clave que se indica
* remove( Object clave ), elimina el par clave-valor de la lista
* keys(), genera una Enumeration de todas las claves de la lista
* elements(), genera una Enumeration de todos los valores de la lista

Todo es lo que corresponde a un Diccionario (Dictionary), que no es excesivamente difícil de implementar. El ejemplo java416.java es una aproximación muy simple que utiliza dos Vectores, uno para las claves y otro para los valores que corresponden a esas claves.

import java.util.*;

public class java416 extends Dictionary {
private Vector claves = new Vector();
private Vector valores = new Vector();
public int size() {
return( claves.size() );
}
public boolean isEmpty() {
return( claves.isEmpty() );
}

public Object put( Object clave,Object valor ) {
claves.addElement( clave );
valores.addElement( valor );
return( clave );
}

public Object get( Object clave ) {
int indice = claves.indexOf( clave );
// El metodo indexOf() devuelve -1 si no encuentra la clave que se
// esta buscando
if( indice == -1 )
return( null );
return( valores.elementAt( indice ) );
}

public Object remove(Object clave) {
int indice = claves.indexOf( clave );

if( indice == -1 )
return( null );
claves.removeElementAt( indice );
Object valorRetorno = valores.elementAt( indice );
valores.removeElementAt( indice );
return( valorRetorno );
}

public Enumeration keys() {
return( claves.elements() );
}

public Enumeration elements() {
return( valores.elements() );
}

// Ahora es cuando se prueba el ejemplo
public static void main( String args[] ) {
java416 ej = new java416();
for( char c='a'; c <= 'z'; c++ )
ej.put( String.valueOf( c ),String.valueOf( c ).toUpperCase() );

char[] vocales = { 'a','e','i','o','u' };
for( int i=0; i < vocales.length; i++ )
System.out.println( "Mayusculas: " +
ej.get( String.valueOf( vocales[i] ) ) );
}
}

La primera cosa interesante que se puede observar en la definición de java416 es que extiende a Dictionary. Esto significa que java416 es un tipo de Diccionario, con lo cual se pueden realizar las mismas peticiones y llamar a los mismos métodos que a un Diccionario. A la hora de construirse un Diccionario propio todo lo que se necesita es rellenar todos los métodos que hay en Dictionary. Se deben sobreescribir todos ellos, excepto el constructor, porque todos son abstractos.

Los Vectores claves y valores están relacionados a través de un número índice común. Es decir, si se llama al método put() con la clave "león" y el valor "rugido" en la asociación de animales con el sonido que producen, y ya hay 100 elementos en la clase java416, entonces "león" será el elemento 101 de claves y "rugido" será el elemento 101 de valores. Y cuando se pasa al método get() como parámetro "león", genera el número índice con claves.indexOf(), y luego utiliza este índice para obtener el valor asociado en el vector valores.

Para mostrar el funcionamiento, en main() se utiliza algo tan simple como mapear las letras minúsculas y mayúsculas, que aunque se pueda hacer de otras formas más eficientes, sí sirve para mostrar el funcionamiento de la clase, que es lo que se pretende por ahora.

La librería estándar de Java solamente incorpora una implementación de un Dictionary, la Hashtable. Esta Hashtable tiene el mismo interfaz básico que la clase del ejemplo anterior java416, ya que ambas heredan de Dictionary, pero difiere en algo muy importante: la eficiencia. Si en un Diccionario se realiza un get() para obtener un valor, se puede observar que la búsqueda es bastante lenta a través del vector de claves. Aquí es donde la Hashtable acelera el proceso, ya que en vez de realizar la tediosa búsqueda línea a línea a través del vector de claves, utiliza un valor especial llamado código hash. El código hash es una forma de conseguir información sobre el objeto en cuestión y convertirlo en un int relativamente único para ese objeto. Todos los objetos tienen un código hash y hashCode() es un método de la clase Object. Una Hashtable coge el hashCode() del objeto y lo utiliza para cazar rápidamente la clave. El resultado es una impresionante reducción del tiempo de búsqueda. La forma en que funciona una tabla Hash se escapa del Tutorial, hay muchos libros que lo explican en detalle, por ahora es suficiente con saber que la tabla Hash es un Diccionario muy rápido y que un Diccionario es una herramienta muy útil.

Para ver el funcionamiento de la tabla Hash está el ejemplo java417.java, que intenta comprobar la aleatoriedad del método Math.random(). Idealmente, debería producir una distribución perfecta de números aleatorios, pero para poder comprobarlo sería necesario generar una buena cantidad de números aleatorios y comprobar los rangos en que caen. Una Hashtable es perfecta para este propósito al asociar objetos con objetos, en este caso, los valores producidos por el método Math.random() con el número de veces en que aparecen esos valores.

En el método main() del ejemplo, cada vez que se genera un número aleatorio, se convierte en objeto Integer para que pueda ser manejado por la tabla Hash, ya que no se pueden utilizar tipos básicos con una colección, porque solamente manejan objetos. El método containsKey() comprueba si la clave se encuentra ya en la colección. En caso afirmativo, el método get() obtiene el valor asociado a la clave, que es un objeto de tipo Contador. El valor i dentro del contador se incrementa para indicar que el número aleatorio ha aparecido una vez más.

Si la clave no se encuentra en la colección, el método put() colocará el nuevo par clave-valor en la tabla Hash. Como Contador inicializa automáticamente su variable i a 1 en el momento de crearla, ya se indica que es la primera vez que aparece ese número aleatorio concreto.

Para presentar los valores de la tabla Hash, simplemente se imprimen. El método toString() de Hashtable navega a través de los pares clave-valor y llama a método toString() de cada uno de ellos. El método toString() de Integer está predefinido, por lo que no hay ningún problema en llamar a toString() para Contador. Un ejemplo de ejecución del programa sería la salida que se muestra a continuación:

%java java417
{19=526, 18=533, 17=460, 16=513, 15=521, 14=495, 13=512, 12=483,
11=488, 10=487, 9=514, 8=523, 7=497, 6=487, 5=489, 3=509, 2=503,
1=475, 0=505}

Al lector le puede parecer superfluo el uso de la clase Contador, que parece que no hace nada que no haga ya la clase Integer. ¿Por qué no utilizar int o Integer? Pues bien, int no puede utilizarse porque como ya se ha indicado antes, las colecciones solamente manejan objetos, por ello están las clases que envuelven a esos tipos básicos y los convierten en objetos. Sin embargo, la única cosa que pueden hacer estas clases es inicializar los objetos a un valor determinado y leer ese valor. Es decir, no hay modo alguno de cambiar el valor de un objeto correspondiente a un tipo básico, una vez que se ha creado. Esto hace que la clase Integer sea inútil para resolver el problema que plantea el ejemplo, así que la creación de la clase Contador es imprescindible. Quizás ahora que el lector sabe que no puede colocar objetos creados a partir de las clases correspondientes a tipos básicos en colecciones, estas clases tengan un poco menos de valor, pero... la vida es así, por un lado da y por otro quita... y Java no va a ser algo diferente.

En el ejemplo se utiliza la clase Integer, que forma parte de la librería estándar de Java como clave para la tabla Hash, y funciona perfectamente porque tiene todo lo necesario para funcionar como clave. Pero un error muy común se presenta a la hora de crear clases propias para que funcionen como claves. Por ejemplo, supóngase que se quiere implementar un sistema de predicción del tiempo en base a objetos de tipo Oso y tipo Prediccion, para detectar cuando entra la primavera. Tal como se muestra en el ejemplo java418.java, la cosa parece muy sencilla, se crean las dos clases y se utiliza Oso como clave y Prediccion como valor.

Cada Oso tendrá un número de identificación, por lo que sería factible buscar una Prediccion en la tabla Hash de la forma: "Dime la Prediccion asociada con el Oso número 3". La clase Prediccion contiene un booleano que es inicializado utilizando Math.random(), y una llamada al método toString() convierte el resultado en algo legible. En el método main(), se rellena una Hashtable con los Osos y sus Predicciones asociadas. Cuando la tabla Hash está completa, se imprime. Y ya se hace la consulta anterior sobre la tabla para buscar la Prediccion que corresponde al Oso número 3.

Esto parece simple y suficiente, pero no funciona. El problema es que Oso deriva directamente de la clase raíz Object, que es lo que ocurre cuando no se especifica una clase base, que en última instancia se hereda de Object. Luego es el método hashCode() de Object el que se utiliza para generar el código hash para cada objeto que, por defecto, utiliza la dirección de ese objeto. Así, la primera instancia de Oso(3) no va a producir un código hash igual que producirá una segunda instancia de Oso(3), con lo cual no se puede utilizar para obtener buenos resultados de la tabla.

Se puede seguir pensando con filosofía ahorrativa y decir que todo lo que se necesita es sobreescribir el método hashCode() de la forma adecuada y ya está. Pero, esto tampoco va a funcionar hasta que se haga una cosa más: sobreescribir el método equals(), que también es parte de Object. Este es el método que utiliza la tabla Hash para determinar si la clave que se busca es igual a alguna de las claves que hay en la tabla. De nuevo, el método Object.equals() solamente compara direcciones de objetos, por lo que un Oso(3) probablemente no sea igual a otro Oso(3).

Por lo tanto, a la hora de escribir clases propias que vayan a funcionar como clave en una Hastable, hay que sobreescribir los métodos hashCode() y equals(). El ejemplo java419.java ya se incorporan estas circunstancias.

import java.util.*;

// Si se crea una clase que utilice una clave en una Tabla Hash, es
// imprescindible sobreescribir los metodos hashCode() y equals()
// Utilizamos un oso para saber si está hibernando en su temporada de
// invierno o si ya tine que despertarse porque le llega la primavera
class Oso2 {
int numero;
Oso2( int n ) {
numero = n;
}

public int hashCode() {
return( numero );
}

public boolean equals( Object obj ) {
if( (obj != null) && (obj instanceof Oso2) )
return( numero == ((Oso2)obj).numero );
else
return( false );
}
}

// En función de la oscuridad, o claridad del día, pues intenta saber si
// ya ha la primavera ha asomado a nuestras puertas
class Prediccion {
boolean oscuridad = Math.random() > 0.5;

public String toString() {
if( oscuridad )
return( "Seis semanas mas de Invierno!" );
else
return( "Entrando en la Primavera!" );
}
}

public class java419 {
public static void main(String args[]) {
Hashtable ht = new Hashtable();

for( int i=0; i < 10; i++ )
ht.put( new Oso2( i ),new Prediccion() );
System.out.println( "ht = "+ht+"\n" );

System.out.println( "Comprobando la prediccion para el oso #3:");
Oso2 oso = new Oso2( 3 );
if( ht.containsKey( oso ) )
System.out.println( (Prediccion)ht.get( oso ) );
}
}

El método hashCode() devuelve el número que corresponde a un Oso como un identificador, siendo el programador el responsable de que no haya dos números iguales. El método hashCode() no es necesario que devuelva un identificador, sino que eso es necesario porque equals() debe ser capaz de determinar estrictamente cuando dos objetos son equivalentes.

El método equals() realiza dos comprobaciones adicionales, una para comprobar si el objeto es null, y, en caso de que no lo sea, comprobar que sea una instancia de Oso, para poder realizar las comparaciones, que se basan en los números asignados a cada objeto Oso. Cuando se ejecuta este nuevo programa, sí se produce la salida correcta. Hay muchas clases de la librería de Java que sobreescriben los métodos hashCode() y equals() basándose en el tipo de objetos que son capaces de crear.

Las tablas Hash son utilizadas también por muchas clases de la librería estándar de Java, por ejemplo, para obtener las propiedades del sistema se usa la clase Properties que hereda directamente de Hashtable. Y además, contiene una segunda Hashtable en donde guarda las propiedades del sistema que se usan por defecto.

Firefox 3.0.8 disponible

| sábado, 28 de marzo de 2009


Hace solamente dos días fue noticia una vulnerabilidad en Firefox considerada como crítica por Mozilla. La misma, descubierta por el hacker italiano Giudo Landi, provocaba un fallo en el navegador al ejecutar un archivo XML malicioso. A raiz de ello la gente de Mozilla se ha adelantado y acaba de ser publicado Firefox 3.0.8 que soluciona este y otros problemas de seguridad.

Seguramente te aparezca un mensaje de actualización durante las próximas horas, o puedes ir al menú Ayuda - Buscar actualizaciones para realizar la actualización manualmente. Si no quieres esperar ya puedes descargarte la nueva versión desde el siguiente enlace:

Descargar Firefox 3.0.8

Crea contraseñas más seguras

|


La elección de una buena contraseña para cualquier cosa, especialmente en la web, siempre es un pequeño dolor de cabeza. Las características que debe tener una buena contraseña para que sea segura (es decír, difícil de averiguar ya sea por medios técnicos o por ingeniería social) son:

* Que sea fácil de recordar.
* Que sea larga (casi todos los servicios piden, como mínimo, 8 caracteres)
* Que alterne signos, números y letras en mayúsculas y minúsculas.
* Que no contenga información personal tuya que sea pública (es decir, que hayas publicado en Internet) o que sea fácil de obtener (“Estamos haciendo una encuesta…”).
*
Que sea rápida de escribir (esto no se comenta mucho, pero… ¿a qué prefieres no tardar mucho cada vez que entras en tu servicio web favorito?)

Estas características casi son excluyentes entre ellas. ¿Cómo alcanzar un equilibrio combinándolas para que crear una contraseña que sea fácil de recordar al tiempo que sea segura y relativamente corta, para que no nos lleve horas (y varios errores) entrar a un servicio?

En Make use of, Damien Oh nos propone un método muy curioso para ello. Veámoslo resumido (o pásate por allí para leer la entrada original) y con alguna que otra aportación del que suscribe.

- Elige un término personal, que no vayas a olvidar. Preferiblemente, que sea corto. Sí, sí, ya sé que he dicho que una contraseña debe ser larga… Déjame terminar. Yo voy a elegir uno poco original: mi casa.

- Sustituye las letras de tu término elegido de la siguiente manera:

* las “a” por @
* las “s” por $
* Los espacios por %
* Las “o” por 0 (cero)
* Las “i” por ¡ (en el original dice “!”, pero ya que en español tenemos signo de apertura en las exclamaciones, aprovechémoslo).

De esta forma, mi casa se transforma en m¡%c@s@.

- A continuación, añade el nombre del servicio para el cual creas la contraseña. Por ejemplo, si la contraseña anterior fuera para Gmail, podría ser m¡%c@s@gm@¡l.

Y eso es todo. Damien propone también cambiar el orden de los términos (el término elegido y el nombre del servicio), y aunque a mí me parece rizar el rizo, no me parece mal tenerlo en cuenta por si acaso, que los ladrones de cuentas andan al acecho de cualquier descuido que tengamos.

Proyecto Autodidacta

Qué significan los emoticonos más usados

|


Un emoticono es un conjunto de signos de puntuación que, agrupados, tratan de reflejar el matiz de una frase que puede ser difícil de apreciar pero que, si la misma fuese realizada verbalmente, podríamos distinguir gracias a la entonación.

Aunque no sean perfectos, sirven para aligerar la carga de una frase o para enfatizar una de las maneras en que puede ser interpretada. El texto puede resultar en ocasiones muy frío y una simple frase puede interpretarse de muchas maneras. Por ejemplo, la frase…

Ya era hora de que terminaras




… puede parecer una recriminación y “sonar” algo brusca. Pero si le añadimos un emoticono…

Ya era hora de que terminaras :)



… estamos ayudando a matizar que la frase es dicha sin acritud, de buen humor y sin que “suene” a reprimenda.

Para interpretarlos, todo lo que tenemos que hacer es girarlos imaginariamente hacia la derecha en nuestra cabeza. De esa forma, un :) se transformará en una cara sonriente.

Los emoticonos más comunes suelen construirse con dos o tres signos, dependiendo de la persona. Los de tres signos lo que suelen hace es añadir una nariz para que resulte más claro. De esa forma, a la cara sonriente :) se le añade una nariz :-) para que parezca más una cara que dos puntos seguidos de un paréntesis.

A pesar de la gran variedad de emoticonos que existe, tan sólo se utilizan unos pocos de manera regular. La imaginación de los usuarios ha hecho que aparezcan muchos que, aunque ingeniosos, son de difícil interpretación. A continuación, veamos qué emoticonos se suelen usar habitualmente en las conversaciones, correos e incluso entradas de blogs con más asiduidad:








































:)


:-)

Sonrisa: emplealo cuando la frase pueda ser malinterpretada.
;)


;-)

Guiño: úsalo cuando quieras reflejar complicidad o ironía.
:D


:-D

Carcajada: refleja que lo que se ha dicho o lo que dices te causa mucha risa.
XD


X-D

Muerto de la risa: pues eso, que te mueres de risa con lo que se ha dicho o con lo que dices.
:(


:-(

Tristeza: lo que dices, lo dices con pena; o demuestras tu pesar ante lo que se dice.
:o


:-o

Sorpresa: lo que dicen te sorprende, te asombra.
:p


:-p

Sacando la lengua: úsalo cuando quieras añadir algo de burla, broma, cachondeo…
^_^Felicidad: úsalo para demostrar que te sientes contento.


Proyecto Autodidacta

Como ser un buen autodidacta

|



No importa que tan largo, intensivo o profundo sea el curso que sigamos: en esto de la informática la formación debe ser continua. A cada rato aparecen nuevos programas y nuevas tecnologías que nos exigen actualizarnos con rapidez para poder sacarles el mayor rendimiento. Por ello, es necesario contar con una cierta “vena” autodidacta, un impulso que nos lleve a tratar de aprender las cosas por nosotros mismos, con nuestros propios recursos.

En esta entrada, reciclada de una que escribí hace tiempo para una de las encarnaciones pasadas de esta web, vamos a ver algunos consejos que te pueden ser útiles a la hora de enfrentarte a un programa o hasta a todo un sistema operativo de manera que aprendas a manejarlo de una manera que te resulte productiva, entretenida e interesante.

Aunque recibir clases formales siempre resulta de utilidad, aprender algo por nosotros mismos es, en muchos casos, más enriquecedor. El proceso de descubrimiento y aplicación permite que el conocimiento se afiance más y, algo nada desdeñable, nos sentimos mucho más orgullosos de nosotros mismos.

Entonces, hagamos un ejercicio de imaginación: estás frente a un programa cuyas posibilidades te entusiasman y al que quieres sacarle partido de manera que chorree bits por sus costados. Acabas de instalarlo y entonces…

1.- Explora el programa, haz clic por todas partes, cambia valores y configuraciones. Si estás explorando el sistema operativo, ten cuidado con algunas cosas. Generalmente, los sistemas suelen avisar cuando se van a realizar cambios importantes que pueden dejarle inservible o producir problemas, así que ten mucho ojo y lee los cuadros de aviso que vayan apareciendo (esto es sobre todo para Windows).

2.- Usa la ayuda del programa. Si bien explorar es una actividad sumamente productiva, en ocasiones nos vamos a topar con que no encontramos la función que buscamos en el programa, a pesar de que sabemos que la tiene o, por lo menos, lo suponemos (por ejemplo, un procesador de textos casi seguro que ha de contar con una opción para cambiar el tipo de letra). En ese momento es cuando debemos recurrir a la ayuda del programa. Es increíble la cantidad de veces que nos olvidamos o deseñamos las ayudas que acompañan al software. Si están ahí es para algo.

3.- Anota todo lo que descubras. Sí, ANOTA. Se puede decir más alto pero no más claro. Apunta en un cuaderno o en un archivo de texto todos los descubrimientos que vayas haciendo, sobre todo si estamos hablando de cambiar configuraciones y cosas así. No hace falta que te explayes en detalles. Anota simplemente el camino que hayas seguido para hacer determinada cosa y, si has cambiado algún valor, apunta el valor que has utilizado.

Cada uno tiene su propia manera de anotar. Personalmente, suelo usar un cuaderno donde anoto todo, cualquier cosa, una detrás de otra. En lugar de dividirlo en secciones, lo tengo dividido en páginas. Por ejemplo, lo relacionado con el blog, le pongo como título "Blog" en la parte superior de la página y comienzo a escribir. Si de pronto necesito hacer anotaciones sobre, por decir algo, programas, en la segunda hoja (que sería la tercera página) le pongo "Programas" en la parte de arriba y escribo. Cuando termine la primera hoja de blogs, paso a la tercera hoja del cuaderno, le pongo el título "Blog" y continúo escribiendo. Y así continúo, creando una nueva sección a medida que voy avanzando por el cuaderno.

En otras ocasiones, recurro a un archivo de texto, especialmente cuando quiero registrar cosas que he leído en otras webs y que, tras probarlas, deseo conservar. Lo suelo hacer principalmente en materia de sistemas operativos (principalmente GNU/Linux) a los que no estoy acostumbrado.

En cuanto a las instrucciones o características de un programa concreto, sencillamente escribo primero el nombre del programa en mayúsculas y a continuación las instrucciones o los valores que quiero conservar, o cualquier tontería que pueda necesitar después.

Una manera muy práctica de anotar la manera de hacer determinada cosa en un programa es apuntando todos los sitios donde debes hacer clic o seleccionar separados por el signo ">" (mayor qué): Formato > Caracter > Fuente.

Anotar produce un curioso efecto que más de uno tiene que haber notado alguna vez: si lo escribimos, no se nos olvida (o tarda más en olvidarse); si no lo escribimos, lo olvidamos con rapidez. Esto puede atribuirse (aunque, por lo que he leído, no está del todo comprobado) a que en nuestro cerebro exista una zona que retiene el recuerdo del sonido y la imagen pero no el pensamiento puro, de manera que el acto de escribir lo que queremos recordar se retiene mejor (lo leí en "Los dragones del edén", de Carl Sagan). Sea por lo que sea, es un efecto que ocurre muy habitualmente, así que no hay que desdeñarlo: anota.

4.- Hazlo todo con un objetivo concreto y útil. Explora, usa la ayuda y anota tus descubrimientos pero hazlo con un objetivo. El problema de explorar es que si no se tiene un objetivo concreto, nos aburrimos con rapidez. Planteate hacer algo, lo que sea, y si es posible que te sea útil de alguna manera. Por ejemplo, si tienes un nuevo programa de gráficos, proponte hacer un montaje fotográfico con esas fotos que tomaste en las vacaciones o con esas imágenes que tanto te gustan y luego úsalo como papel tapiz. Se aprende el triple cuando se tiene un objetivo que cuando se explora sin rumbo fijo.

5.- Recurre a Internet. Cuando te atasques en un procedimiento, busca por la red de redes. Preferiblemente, busca tutoriales y manuales. Y si son descargables, mejor. Así podrás consultarlos cuando no estés conectado e incluso compartirlos. A la hora de hacer la búsqueda, escribe siempre un verbo en infinitivo, algunas características de lo que quieres hacer, el nombre del programa (a veces es necesaria hasta la versión); por ejemplo: crear botón Gimp. Si lo que quieres es algo que hable de muchas características del programa, escribe el nombre del programa y la palabra tutorial o manual; por ejemplo: Gimp manual. ¡Ah! y no te olvides realizar la búsqueda primero en tu idioma, pero si no encuentras lo que buscas, intenta con el inglés: hay mucho material en el idioma de Shakespeare.

Advertencia sobre los sistemas operativos:



Aunque resulta de mucha utilidad la exploración, a la hora de efectuarla en un sistema operativo los resultados pueden ser desastrosos si no sabemos a ciencia cierta qué estamos haciendo, especialmente en GNU/Linux. Por eso, quisiera resaltar los siguientes puntos:

Anota lo que haces y los valores originales que cambias. No será la primera vez que explorando me cargo una configuración. Ahórrate lamentos y apunta los pasos que sigues y los valores originales cuando vayas a cambiar algo de importancia. Una manera de identificar algo muy importante es porque es difícil llegar hasta ello (pero no tomes esto como una regla inalterable).

Documéntate primero: a menos que sea un sistema muy reciente, seguro que encuentras abundante información en la web acerca de lo que quieres hacer. Y, como no, recurre primero a la ayuda del sistema antes de conectarte.

Cubre las necesidades a medida que aparecen: explorar un sistema es algo muy aburrido, y como nos cansamos pronto, eso nos puede ayudar a alejarnos de peligros innecesarios. Un sistema se aprende usándolo, eso suele ocurrir en el día a día, durante el transcurso de diferentes tareas. Un sistema operativo es, al fin y al cabo, tan sólo la base donde se colocan lo que nos permite realizar nuestro trabajo: los programas. Por eso, lo mejor que puedes hacer es ir descubriendo como se hacen determinadas cosas a medida que lo necesitas, en lugar de tratar de averiguarlas sin más. Por ejemplo, si después de unos días descubres que el tamaño de la hora que muestra el reloj te molesta porque no puedes verla bien, averigua como cambiarlo.

Usa un live CD: esto es aplicable para distribuciones GNU/Linux. Los live CD permiten cargar un sistema operativo en una computadora sin necesidad de instalarlo. Generalmente, si luego así lo queremos, podemos dejarlo instalado sin mucha complicación. Esto nos permite probar nuevos sistemas con facilidad y sin correr ningún riesgo.

Fuente:Proyecto Autodidacta

No Te Quedes En El 2001 , Usa Linux

| viernes, 27 de marzo de 2009
Una de las cosas que argumento a mis amigos para dar el paso de cambiarse a Windows es la antiguedad de este sistema, todos sabemos que en el mundo de las tecnologias hay que mantenerse inovadores, en medio año muchas de las cosas que conocemos se vuelven practicamente obsoletas.

Entonces ¿Por qué seguir usando Windows? Todos sabemos que Windows Vista es un mal sistema operativo, no tiene nada de innovador, por el contrario es lento, exige grandes recursos y provoca incompatibilidades serias con programas y hardware, muchos por ello deciden regresarse a Windows XP ya que es el unico que conocen.

Pero Windows XP salio al mercado en el año 2001, es decir han pasado ya casi 8 años desde su salida, por lo que lógicamente estamos hablando de un sistema operativo obsoleto. En cambio GNU/Linux es un sistema que cuenta con cientos de distribuciones, cada una actualizandose cada pocos meses con nuevas versiones y nuevas caracteristicas.

Esto lo he visto reflejado en un video de Facundo Arena que explica el porque pasarse a Linux:

RedUSERS TV: "No te quedes en el 2001, usá Linux" from Sergio Vallejo on Vimeo

Vídeo: ¿Qué es Linux?

|
He encontrado un vídeo que explica a grandes rasgos lo que es Linux para los que no lo conocen aún.



Como dicén en el video, siendo un sistema operativo que promete ser mejor que el que seguramente utilizas actualmente (Windows) y siendo gratuito y de facíl instalación, ¿por qué no probarlo? Solo dale una oportunidad para aprender un poco más, y olvidarte de los virus y la inestabilidad.

Open Suse desde Cero

|
Bueno escribo este articulo para aquellos que aun no conocen o recien se inician en un sistema operativo linux como lo es la distribución OpenSuse

En este blog te enseña como hacer cosas basicas que haces en Windows como cambiar tu papel tapiz (wallpaper)



Suse desde Cero

Los 10 errores de los nuevos administradores de sistemas Linux.

|
Los nuevos administradores de los sistemas GNU/Linux cometen o dejan pasar por alto algunas de estas cosas y ponen en riesgo su sistema. Estos tips te ayudarán a entender mejor tu nuevo sistema y en consecuencia utilizarlo mejor.


1. Instalación de aplicaciones de diversos tipos
Esto podría no parecer tan mala idea en primer lugar. Si usted está utilizando Ubuntu y sabe que el sistema de paquetes apt se basa en paquetes .deb . Pero hay una serie de aplicaciones que puedes encontrar sólo desde su código fuente. No es gran cosa, ¿verdad? ellos se instalan y luego funcionan. ¿Por qué no deve hacer esto? Simple, su sistema de gestión de paquetes no puede mantener un registro de lo que ha instalado desde el código fuente. Entonces, ¿qué ocurre cuando un paquete A (que ha instalado desde el código fuente) depende del paquete B (que se instaló a partir de un binario .deb) y el paquete B se actualiza a partir de la actualización de administrador? El paquete puede que siga funcionando o tal vez no. Pero si tanto el paquete A y B se han instalado de .deb’s, las posibilidades de que ambos sigan funcionando son mayores. Además, la actualización de paquetes es mucho más fácil cuando todos los paquetes son del mismo tipo binario.

2. El descuido de las actualizaciones
Bueno, este no es un punto que se relacione con las competencias de los administradores de sistemas Linux. Sin embargo, muchos administradores obtienen Linux lo ejecutan y creen que no tienen que hacer nada más. Es sólido, seguro, funciona. Bueno, las nuevas actualizaciones pueden incluir parches que solucionen diversos fallos. Mantenerse al día con sus actualizaciones pueden hacer la diferencia entre un peligro y un sistema seguro. Y sólo porque usted puede descansar en la seguridad de Linux no quiere decir que usted debe hacerlo. Por motivos de seguridad, para las nuevas características, para la estabilidad - las mismas razones, todos nos hemos acostumbrado a la actualización de Windows - siempre debe mantenerse al día con las actualizaciones de Linux.

3. La mala elección de contraseña para root
Claro, su contraseña de usuario estándar tiene que ser algo fácil de recordar. Sin embargo, que la contraseña de root - en una empresa que tiene que proteger su servidor de base de datos - tiene que dar un nivel mayor de dificultad. Hacer una contraseña que usted podría tener que almacenar, cifrar en una llave USB, que requiera luego que usted introduzca el dispositivo USB en la máquina y descifre la contraseña.

4. Evitar la línea de comandos
Nadie quiere tener que memorizar un montón de comandos. Y en su mayor parte, el GUI se encarga de una gran mayoría de ellos. Pero hay momentos en la línea de comandos es más fácil, más rápido, más segura y más fiable. Evitar la línea de comandos debe ser considerado como un pecado capital de la administración de Linux. Usted debe, al menos, tener una sólida comprensión de cómo funciona la línea de comandos y un pequeño arsenal de comandos que puede utilizar sin tener que RTFM. Con una pequeña selección de herramientas de línea de comandos en la parte superior de las herramientas de la GUI, que debería estar listo para cualquier cosa.

5. No mantener una versión del kernel que funcione
Vamos hacerle frente, usted no necesita 12 kernels instalados en su máquina. Pero usted necesita actualizar su kernel, y el proceso de actualización no borra los núcleos anteriores. ¿Qué hacer? Usted tendría que mantener al menos el último núcleo funcional en todo momento. Digamos que usted tiene 2.6.22 en funcionamiento y 2.6.20 como copia de seguridad. Si actualiza a 2.6.26 y todo está funcionando bien, puede eliminar 2.6.20. Si utiliza un sistema basado en rpm, puede usar este método para eliminar los núcleos antiguos:

rpm -qa | grep -i kernel followed by rpm-e kernel-{VERSION}.


6. No hacer copias de seguridad de los archivos de configuración críticos
¿Cuántas veces has actualizado X11 sólo para encontrar la nueva versión de su fubar’d en el archivo xorg.conf hasta el punto de que ya no se puede utilizar X? Solía ocurrirme mí cuando era nuevo en Linux. Pero ahora, en cualquier momento que X va a ser actualizado siempre realizo una copia de seguridad de /etc/X11/xorg.conf en caso de que la actualización vaya mal. Claro, la actualización de X hace una copia de seguridad de xorg.conf, pero lo hace en el directorio /etc/X11. Y aunque esto a menudo funciona perfectamente, es mejor que la copia de seguridad quede bajo su propio control. Yo siempre hago la copia de seguridad de xorg.conf en / -directorio raíz-, así que sólo el usuario root puede acceder a él. Mejor que curar. Esto se aplica a otras copias de seguridad críticas, como Samba, Apache, y MySQL y demás.

7. Arrancar un directamente el servidor X
Cuando una máquina es usada como servidor, es posible que desee tener X instalado para que algunas tareas de administración sean más fáciles. Pero esto no significa que usted debe tener que iniciar directamente el servidor X. Este será un desperdicio de memoria y preciosos ciclos de la CPU. En lugar de ello, detener el proceso de arranque en el runlevel 3 por lo que están a la izquierda en la línea de comandos. No sólo la licencia de todos sus recursos a los servidores, sino que también mantener miradas indiscretas de su máquina (a menos que conocer la línea de comandos y contraseñas para acceder). Para iniciar una sesión en X, usted simplemente tiene que acceder y ejecutar el comando startx para llevar hasta su escritorio.

8. No entender los permisos
Los permisos pueden hacer su vida realmente fácil, pero si se hace mal, puede hacer la vida realmente fácil para los piratas informáticos. La forma más sencilla de manejar los permisos es utilizando el método de rwx. Esto es lo que significan: r = lectura w = escribir x = ejecutar

Supongamos que quiere que un usuario sea capaz de leer un archivo, pero no escribirlo. Para ello, sería cuestión de usar chmod u + w, u-rx nombre de archivo. ¿Qué ocurre si frecuentemente un usuario nuevo vio una advertencia de que no tiene permisos para utilizar el fichero y marcó lo marcó con algo parecido a chmod 777 nombre de archivo para evitar el problema?. Esto puede causar más problemas. Entonces recuerde esto: 777 da un archivo de rwx permisos a todos los usuarios (root, grupo, y otros), 666 da el archivo rw privilegios a todos los usuarios, 555 da el archivo rx permisos a todos los usuarios, 444 r da privilegios a todos los usuarios, 333 wx da privilegios a todos los usuarios, 222 W da privilegios a todos los usuarios, 111 x da privilegios a todos los usuarios, y 000 no da privilegios a todos los usuarios.

9. Inicio de sesión como root
Si usted necesita privilegios de root para ejecutar o configurar una aplicación, en su directorio raíz en una cuenta de usuario estándar. ¿Por qué es la es tan malo esto? Bueno, cuando se inicia la sesión como un usuario estándar, ejecutando todas las aplicaciones X aunque se pueda acceder al sistema se tienen ciertas restricciones. En cambio si inicia sesión como root, X tiene todos los permisos de root. Esto puede provocar dos problemas:
Si usted comete un gran error a través de un GUI, ese error puede ser catastrófico para el sistema y…
Con X corriendo como root sistema es más vulnerable.

10. Haciendo caso omiso de los archivos de registro
Hay una razón por la que /var/log existe. Es la única ubicación para todos los archivos de registro. Esto hace que sea sencillo de recordar y es donde primero debemos mirar cuando hay un problema. ¿Posible problema de seguridad? Compruebe /var/log/secure. Uno de los primeros lugares que mirar es /var/log/messages. Este archivo de registro es donde todos los errores genéricos son registrados. En él usted recibirá mensajes acerca de la creación de redes, cambios de los medios de comunicación, etc Cuando la administración de una máquina que siempre puede utilizar una aplicación de terceros, tales como logwatch que puede crear varios informes para usted basado en sus archivos de /var/log.

Estos 10 errores son bastante comunes entre los nuevos administradores de sistemas Linux. Evitar las trampas hará que la migración a Linux sea más rápida y que sea un buen administrador.

Fuente