hudsoncity
Usuario
Consejos para retratar a los recién nacidos Especialmente recomendado si en tu entorno ha nacido recientemente un bebé y ya sea porqué tenes ganas o te lo encargan, te dispones a hacer una sesión fotográfica. 1. Planea la sesión El primer punto es de suma importancia. Planear la sesión te permitirá reunir las mejores condiciones para lograr buenas fotografías. Debes tener en cuenta aspectos como por ejemplo: * Horarios del bebé. Los padres saben perfectamente cuáles son sus mejores horas, cuando están más despiertos, etc. * Si lo haces en casa del bebé (lo más normal) y no dispones o no piensas utilizar tu equipo de iluminación, deberías conocer las condiciones lumínicas del hogar: ventanas por donde entra la luz, mejores horas, etc. * Es muy habitual hacer fotos de bebés desnudos. Pregúntalo antes. No quieras quedar como un pederasta con gusto para la fotografía. Si la respuesta es afirmativa, pide a los padres que una hora antes de la sesión vistan al bebé con ropitas anchas o sin gomas, para que cuando lo fotografíes no tenga marcas en su cuerpo. * Evidentemente, piensa en las fotografías que quieres hacer. No hace falta que esté todo calculado al detalle, pero si conviene tener una idea bastante aproximada a lo que quieres. Lo más probable es que no dispongas de un tiempo demasiado extenso. 2. Preparativos Antes de empezar a disparar fotografías hay que tener ciertas cosas preparadas: * El equipo. Evidentemente. Lentes limpias y revisadas, tarjetas formateadas, discos duros, trípode preparado, etc. Incluimos los equipos de iluminación, que deben estar ya montados. Piensa que en el momento en el que el bebé entra en escena, tu no debes preocuparte más que de disparar. * Tú debes estar preparado/a. Esto significa que tienes que haberte armado de paciencia (piensa que es muy probable que en la casa que estás visitando ningún miembro de la familia haya dormido últimamente muchas horas de un tirón). Y rellena tu estómago. Para la autora del post original y para mi, no hay nada peor que pasar hambre durante una sesión. Un infierno. 3. Capta los detalles Aprovecha para captar las particularidades de los bebés: ¡el tamaño! Manos, piés, etc. Y si son a juego con las manos de los padres, ¡pues mucho mejor! Para los detalles, seguramente te será de utilidad utilizar un diafragma bien abierto para reducir la profundidad de campo. 4. Utiliza un gorrito Este es el consejo divertido… 5. Fotografía el entorno Encuentro este consejo acertadísimo. Piensa que estás retratando una parte de la historia familiar muy importante: la reciente llegada de un nuevo miembro a la familia. Fotografiar la habitación del bebé, por ejemplo, es parte de esa historia, además de un bonito recuerdo de ese momento, ya que ésta cambiará mucho con el paso del tiempo. También puedes fotografiar el ropero, algún mueble, algún elemento propio del bebé... Y no olvides una foto de la familia entera. 6. “Flexible” es tu apodo Mucha atención a si el bebé se cansa. No fuerces hasta el punto del que sea imposible volver. Si es necesario tomarse un descanso, no lo dudes. No saldrá todo (ni mucho menos) como lo esperabas. ¡Improvisa! Fuente http://www.xatakafoto.com/2008/06/18-consejos-para-retratar-a-los-recien-nacidos#more

www.thesmokesellers.com Algoritmos de Google : El Page Rank La patente más famosa de Google es una de las principales ventajas competitivas que permitió a esta compañia aplastar a sus competidores en el campo de las busquedas en internet y hacerse el gigante que son hoy*. El Page Rank, como todos la conocemos, es una idea genial para hallar el valor o "importancia" que tiene una página web determinada. Esta "importancia" se emplea después para mostrar los resultados de mayor calidad cuando realizamos una búsqueda en Google . La calidad de los resultados de Google empleando este método (combinado, por supuesto, con otros algoritmos) es lo que nos hizo a todos abandonar nuestros antiguos buscadores (Altavista, Metacrawler) y pasarnos al buscador de Larry y Sergei. Aquí en The Smoke Sellers estamos un poco quemados con el hecho haber bajado de Page Rank y hemos estado intentando hincarle el diente estos días. En este post vamos a explicar el algoritmo hasta el final intentando emplear la cantidad mínima de matemáticas posibles. Si alguna vez te has interesado por el tema, habras leido que: 1. La "importancia" de una página web sólo depende de las paginas web que la enlazan. Si tienes una página web y esta es enlazada desde páginas importantes (de alto Page Rank, pongamos www.microsiervos.com) tú recibiras una parte de esa importancia. Todas las páginas que enlaces desde tu página web (ese blog de tu colega con solo dos posts, por ejemplo) recibiran, a su vez, una parte de la importancia de TU página. Para ser más exactos: 2. Una página web reparte por igual su importancia entre todas las páginas a las que enlaza. Es decir: Si te enlaza una página importante que enlaza 3 o 4 páginas a parte de la tuya es mucho mejor que si te enlaza una página igual de importante que enlace 30 o 40 (toca más Page Rank a repartir). Tambien habras oido hablar de los Spiders (arañas). Esto no son más que veloces programas automáticos que van recorriendo internet como si fuesen un usuario humano, pulsando todos los enlaces posibles, extendiendose así por la "red" (de ahi el nombre) y creando un mapa de la misma. Asi que tenemos: 3. Los Spiders proporcionan a Google un mapa de la red donde se puede ver qué página apunta a que página Esto no significa que sepamos ya el Page Rank. De hecho, todo esto es muy bonito pero… como leches calculamos el Page Rank?. Por qué página empezamos?. Suponiendo que empezasemos por una, si no tenemos el Page Rank de las que enlazan a esta, como podemos calcular algo?. Y lo que es peor: En internet hay venticincomil millones de páginas apuntandose unas a otras (número subiendo rápidamente), cómo crear un algoritmo que sea capaz de lidiar con semejante brutalidad de enlaces. En el peor caso todas las páginas se apuntan entre si y el numero total de enlaces es de venticincomil millones, al cuadrado!!. Aqui es donde realmente llega la artilleria matemática. Prometemos que si sabes lo que es una matriz, como se suman y como se multiplican (y tienes un poco de fe) ya puedes entender el algoritmo de Larry y Sergei hasta el final. La Matriz de reparto de Page Rank H Vale, no sabemos cual es el page Rank de ninguna página antes de empezar, pero si hay una cosa que sabemos: Cuanto de su desconocido Page Rank reparte una página entre las páginas que enlaza. Por lo dicho en (2), si una página enlaza 5 páginas transmitira un 1/5 de su Page Rank a cada una. Debido a (3) el número de páginas que enlaza cada página lo sabemos. Es más, podemos construir una tabla H de veinticinco mil millones de filas por veinticinco mil millones columnas (no, no cabe en un A4), que contenga todos los enlaces posibles. Para dos páginas cualesquiera (una como enlazadora y la otra como enlazada) tenemos un recuadro de la tabla que nos indica que proporción del Page Rank transfiere la enlazadora a la enlazada. Para orientarnos un poco: La diagonal de esta tabla representaría lo que la página se transmite a si misma (si se enlazase). Cualquier recuadro por debajo de la diagonal y su simetrico por encima de la diagonal indican respectivamente lo que se transmiten dos páginas cuando una actua como enlazadora y la otra como enlazada y viceversa. Si una página no enlaza a otra, se pone un 0 en el recuadro (lógicamente no le puede transmitir nada de Page Rank). Matriz (Vector) Invariante I Lo que viene a continuación no es idea de Larry Page o Sergei Brin, hace un siglo que se conoce, pero si que requiere la poca de fe que te pedimos reservar. Esta tabla (lease Matriz), que hemos creado con la ayuda de la información proporcionada por los Spiders, representa en realidad la dificultad (o facilidad) para el "flujo" de Page Rank de una página a otra. Podemos ver el flujo como agua que pasa con menor o mayor dificultad de una página a otra de acuerdo al valor correspondiente al recuadro de la tabla H. Este agua/transferencia de Page Rank fluiría de una página a otra a traves de sus enlaces sin cesar y eventualmente podría llegar a un equilibrio (si no llegase no habria Page Rank alguno). Pues bien las matemáticas, concretamente el teorema de Ruelle-Perron–Frobenius (ingles) nos garantiza lo siguiente: 4. Bajo determinadas condiciones, que veremos, se acabará alcanzando ese equilibrio. No es que Frobenius (ingles) supiese lo que es una página web en 1900, si no que el problema es matemáticamente idéntico a un conocido problema de dinámica de sistemas (ingles). Luego, hay gente que dice que Larry y Sergei son licenciados en filosofía. 5. El equilibrio queda representado por el vector invariante I. Esto es: Una tabla de una sola columna (una matriz, más concretamente vector) de venticincomil millones de valores, que cumple que al multiplicarla por la matriz de reparto H nos da otra vez ella misma (I). Lo que expresaríamos: Este vector invariante I de venticincomil millones de valores, que casualidad, uno para cada página web, es el Page Rank. Faltará refinarlo, escalandolo de 1 a 10, y discretizarlo para que no de valores intermedios. Intuyo que el valor discretizado (1 a 10 sin decimales), que se muestra en la google toolbar, es solo de cara al publico e internamente emplearan los decimales que salgan también. Sí, muy guay pero y lo de las 25.000.000.000 páginas? Cierto, cierto. La gente que haya sufrido algebra de primero habra reconocido a I como un vector propio de valor propio 1 de la matriz H. Y seguramente recordará con horror que para calcularlo hay que resolver un polinomio que en este caso tendría grado 25.000.000.000. Vamos no lo calculamos asi ni de blas. Afortunadamente, sobre todo para las personas a las que lo anterior les ha sonado a chino, existe un método para calcular I iterativamente (en pasos sucesivos) y muy muy sencillo. Tan sencillo que consiste en que nos inventamos una tabla de 25.000.000.000 valores del Page Rank a voleo (un vector I0 creado aleatoriamente), lo multiplicamos por H y el resultado será otra tabla de 25.000.000.000 valores I1 pero más cercanos al valor correcto del vector invariante I. Repítase esto un monton de veces hasta que el resultado de multiplicar por H ya no produzca nigun cambio y ya está. Ya tenemos el vector invariante. Este algoritmo, que se llama el método de las potencias (ingles), se expresaría matemáticamente asi: Donde k no es más de que el índice que indica cuantas veces hemos multiplicado por la matriz H. El primer vector, que creariamos a boleo sería k = 0, el segundo, procedente de mutiplicar por H sería k =1, etc. Para expresar de forma general que cada término se obtiene mediante una transformacion del anterior se emplean los índices k+1 y k. Hay que tener en cuenta que los métodos iterativos tienen la ventaja de que no necesitamos acumular demasiados valores, lo cual reduce la cantidad de memoria que necesitamos para computar el Page Rank y acelera todo el proceso de cálculo. Siguen siendo una burrada de números pero al menos es factible. Gran problema Que facil, no?. Obviamente falla algo y ese algo es el punto (4). Resulta que no se cumplen las condiciones de convergencia del teorema Ruelle-Perron–Frobenius. Es decir que aplicando el método arriba explicado no hay garantía de que lleguemos al vector invariante. No entraré en detalles, no hace falta. Utilizando la analogía del "flujo" de Page Rank se puede entender perfectamente que es lo que falla y como se puede solucionar. Página Sumidero: Qué ocurre cuando el flujo de Page Rank llega a una página como la 2 que no tiene enlaces a nigún sitio?. Pues simplemente que no sale de ahi. Esa página se vuelve un sumidero de Page Rank y el algoritmo dará resultados incorrectos. Como lo resolvemos?. Si hacemos la página 2 enlace todas las páginas de la web por igual (imagina millones de pequeñas flechas saliendo de 2 hacia todas lás páginas), esto dará salida al flujo de Page Rank pero la influencia en los resultados es minima, puesto que cada página recibe solo 1/25.000.000.000 del Page Rank de 2. Matemáticamente, esto equivale a sumarle a H una matriz A que tenga todo 0s menos en las columnas de las páginas sumidero que tendrán toda la columna llena de 1/25.000.000.000. De esta forma en vez de la matriz H emplearíamos la matriz S=H+A en el método de las potencias. Red-Sumidero: Un caso similar es el de las sub-redes de páginas dentro de la red, como la 5-7-6-8, que no tienen enlaces de vuelta. Estas redes se convierten en redes-sumidero. El problema es que estas páginas sí enlazan otras páginas y no podemos simplemente cargarnos esa información y enlazar todas las páginas de la red desde ellas. Para dar salida al flujo de Page Rank, vamos a recurrir a una solución al más puro estilo "ingeniero". Gran solución Necesitamos garantizar la salida del flujo de Page Rank de cualquier página o sub-red, es decir, que toda página apunte a otra página. No nos vale con crear un enlace a cualquier página a boleo porque (a parte de estar falseando el Page Rank), si resulta en una red cerrada como 5-7-6-8 no hemos solucionado nada. Ahora, imaginemos un caso ideal en donde todas las páginas apuntasen a todas las páginas. Ahi el Page Rank siempre tendría algún enlace por donde escapar, incluso de las sub-redes, y el algoritmo funcionaría. Pero claro, se perdería toda la jerarquia que dan los enlaces, la matriz de reparto tendría todos sus elementos iguales a 1/25.000.000.000 y todas las páginas tendrían el mismo Page Rank. Pues nada, sumo la matriz de reparto real, calculada con la información de los Spiders con la ideal en la que todas las páginas se apuntan entre si y lo divido por dos. La matriz resultante tendrá siempre enlaces saliedo de cada página y tenemos el flujo de Page Rank garantizado. Que al mezclar a partes iguales la matriz real y la ideal me salen los resultados demasiado aleatorios? (por inlfuencia de la ideal). Bueno, pues en vez de mitad y mitad las mezclo con 85% de la matriz real y un 15% de la ideal y pista. Y ya esta señores. Con ustedes la famosa matriz de Google : Donde recordemos que S=H+A es la matriz real con el problema de los sumideros individuales resuelto, 1/n×1, con n = 25.000.000.000 es la matriz ideal y α = 0.85 nos da la citada mezcla al 85%. Algún lector avispado puede decir: Pero… el meter ahi un 15% de aleatoriedad, no falsea de alguna manera el Page Rank?… Bienvenido al mundo de la ingeniería chaval!. Para terminar si empleamos G en vez de H en el método de las potencias y jugamos un poco con los términos obtenemos la formula que aparecía al principio del post. Empleando la fórmula a la derecha del igual obtendremos cada nuevo vector Ik+1 en cada iteración. OTRO El valor óptimo del parámetro α se determina experimentalemente y regula también la velocidad de convergencia del metodo de las potencias, a mayor porcentaje de matriz real, menor velocidad de convergencia. Google dice que con basta con k=50-100 iteraciones para calcular el Page Rank, cosa que tarda varios días. Imagino que trabajando con varios ordenadores en paralelo. Esto se conoce como Google Dance y en TSS no nos hace ni puta gracia. - Matemáticamente, la condición de convergencia del algoritmo empleado por Google es que todos los elementos de la matriz de reparto de Page Rank sean estictamente mayores que 0, cosa que cumple la chapucilla que acabamos de ver. Esto no es una condición de convergencia del metodo de las potencias si no una condición para la existencia del vector invariante según el teorema de Ruelle-Perron–Frobenius. FUENTE http://www.thesmokesellers.com/
En las universidades de ingenieria, tecnologia o informatica no se ven muchas mujeres, eso no quiere decir que a aquellas que lo intenten no podran ser exitosas. Les paso 4 videos de youtube, es un informe sobre las mujeres trabajando en sistemas aca en argentina, minas grosas, numeros uno en el ambiente, en posiciones grosas, muy interesante.. "Que agradable ver a mujeres tan inteligentes hablando de informatica..." PARTE 1 link: http://www.videos-star.com/watch.php?video=afBhL5gKK8w Parte 2 link: http://www.videos-star.com/watch.php?video=NXglHW5EznU Parte 3 link: http://www.videos-star.com/watch.php?video=-K9AB3H04aE Parte 4 link: http://www.videos-star.com/watch.php?video=Otiqsbn487E ya se que es larguito verlo todo... Comenten porfasss

Tutorial de Eclipse Este tutorial trata de mostrar las ventajas de utilizar Eclipse para programar Java. Sirve como una guía detallada para usuarios novatos. No es necesario un conocimiento avanzado o específico de Java para poder seguir este tutorial. En unos pocos minutos, serás capaz de dominar las técnicas principales de Eclipse. El único prerrequisito que debe cumplirse antes de comenzar este tutorial es tener instalada cualquier versión de Eclipse (igual o superior a la 2.0), junto con una máquina virtual de Java. De hecho, este tutorial está optimizado para la versión 2.1.2 de Eclipse, pero es también válido para Eclipse 3.0. Parte 1: Entorno de Proyectos de Eclipse "La ciencia es conocimiento organizado. La sabiduría es la propia vida organizada." Immanuel Kant. En el entorno de desarrollo Eclipse todo archivo se almacena dentro de un proyecto. Esto quiere decir que todo documento, carpeta, archivo de código fuente (.java) y código compilado (.class) tiene que estar contenido dentro de un proyecto. Así entonces, el primer paso antes de usar Eclipse para programar en Java es comprender la estructura de proyectos de Eclipse. Es necesario crear un nuevo proyecto no sólo para desarrollar un nuevo programa de Java, sino para editar también archivos ya existentes (como por ejemplo, un programa ".java" almacenado en un diskette). Para crear un nuevo proyecto, seleccione en la línea de menús principal "File > New > Project...". También es posible seleccionar "New > Project..." haciendo clic derecho en cualquier parte una vista de Eclipse (como por ejemplo, el Package Explorer o el Resource Navigator). Hay varios tipos de proyectos de Eclipse que pueden ser creados: * Para crear o editar programas Java, un "Java Project" debería ser creado. Nótese que dentro de un proyecto de Java también puede almacenarse toda la información relacionada con el proyecto (la cual no tiene por qué reducirse estrictamente a código fuente, sino que también puede contener documentación y otros archivos relacionados). * Los "Simple Project" sólo deberían crearse para almacenar documentos y otros archivos, pero no código Java que se desee compilar. Por ello, siempre que se creen archivos ".java" sería recomendable crear un "Java Project". * Los "Plug-in Development Project" se usan para añadir nuevos módulos y funciones al entorno Eclipse. Estos proyectos sólo son necesarios si se es un desarrollador de Eclipse. * Los proyectos de "EMF" se utilizan para crear modelos de análisis y diseño. Puesto que este tutorial se centra en utilizar Eclipse para programar en Java, escogeremos crear un nuevo "Java Project" seleccionando "Java > Java Project" y haciendo clic en el botón "Next >" del asistente de creación. Tras esto, debe especificarse un nuevo nombre para el proyecto. Los proyectos profesionales se nombran utilizando nombres de dominio dados la vuelta para evitar posibles conflictos de nombrado. Sin embargo, para un proyecto de uso interno cualquier nombre descriptivo será suficiente. En este ejemplo, se ha llamado al nuevo proyecto "Eclipse Tutorial". Si se usa el directorio por defecto, los archivos del proyecto se almacenarán en el directorio "[DirectorioDeInstalación]\workspace\". También es posible especificar un directorio diferente en el que guardar dichos contenidos. Pese a que en este punto es ya posible terminar la creación del nuevo proyecto haciendo clic en el botón "Finish", es recomendable pulsar de nuevo el botón "Next >" para definir explícitamente de esta manera una carpeta fuente para los archivos ".java" desde el principio. Las carpetas fuente ("Source Folders" almacenan los archivos de código fuente de Java (.java), de manera que Eclipse sepa donde encontrarlos y pueda realizar la compilación automática de los mismos cada vez que un archivo sea guardado. Para crear dicha carpeta fuente seleccione la pestaña de "Source" y pulse el botón "Add Folder...". Seleccione el proyecto recientemente creado y pulse el botón "Create New Folder". Un buen nombre para esta carpeta fuente podría ser sencillamente "src". Tras especificar dicho nombre, pulse "Ok". A la pregunta de si desea actualizar la carpeta de salida de archivos compilados, debería responder afirmativamente. De este modo, los archivos ".class" que resulten de la compilación de los ".java" almacenados en la carpeta fuente irán a parar a la carpeta "\bin". Pulse el botón "Finish" para terminar el proceso de creación del nuevo proyecto. Si se nos pregunta si deseamos pasar a la perspectiva de Java, deberíamos responder afirmativamente. El proyecto recién creado debería parecerse a este, tal y como lo muestra la vista "Navigator". En Eclipse 3.0 la creación de proyectos es un tanto diferente a Eclipse 2.x. Aún puede definirse una carpeta cualquiera para almacenar los proyectos. Pero ahora los pasos anteriormente expuestos acerca de la creación de una estructura adecuada de carpetas fuente y destino pueden omitirse, ya que en la nueva versión de Eclipse basta con marcar la opción "Create separate source and output folders" para construir de forma automática la estructura de archivos deseada. Como ya se mencionó anteriormente, para editar un elemento existente debería ser primero importado dentro de un proyecto de Eclipse. Esto puede hacerse desde el menú "File > Import..." o bien pulsando con el botón derecho en cualquier punto de la vista del "Package Explorer" o del "Resource Navigator". Para seleccionar un archivo o directorio hay que seleccionar "File system" en el sub menú de importación. Entonces sólo habrá que recorrer los directorios marcando los archivos que se deseen importar así como el proyecto y la carpeta destino. Es importante tener en cuenta que todo elemento que se importa en Eclipse se duplica. Esto significa que borrar la copia que Eclipse esté manejando no borrará el archivo original, de manera que se seguirá teniendo una copia de reserva. Sin embargo, si se usa la opción de importar un proyecto de Eclipse ya existente, los contenidos de dicho proyecto serán duplicados. Así que hay que ser especialmente cuidadoso al borrar proyectos importados del entorno de trabajo de Eclipse, ya que es posible que otras copias de backup de dicho proyecto no existan. Todo archivo creado mediante la utilización de Eclipse puede ser exportado como un archivo normal (seleccionando Export... > File System), como un archivo ".jar" e incluso como archivos comprimidos en ".zip". El proceso que hay que seguir es similar al proceso recientemente explicado para importar archivos, sólo que seleccionando ahora la opción "Export". También es posible copiar, cortar y pegar archivos y carpetas desde Eclipse hasta los directorios del sistema operativo (por ejemplo, del explorador de Windows) y viceversa (seleccionando un archivo, pulsando CTRL+C, seleccionando la carpeta destino dentro de Eclipse y pulsando CTRL+V). Parte 2: Crear Elementos de Java Una vez que se ha creado un nuevo proyecto, es hora de aprender cómo crear los diversos elementos de Java. Para seguir los pasos que se exponen a continuación es necesario cambiar a la "Perspectiva Java" (si no se ha hecho ya) seleccionando "Window > Perspectives > Java". La perspectiva de Java contiene las vistas y editores más útiles a la hora de crear nuevos programas en Java. Haciendo clic derecho en la carpeta fuente recientemente creada (por ejemplo, "src" dentro de la vista del Package Explorer, aparecerá un menú contextual. Seleccionando "New >" en dicho menú se mostrará una lista con los diversos elementos de Java que pueden ser creados. Algunos de dichos elementos pueden ser creados también realizando clic sobre los iconos del menú de la parte superior de la pantalla. Java Class Las clases de Java son los archivos ".java" que contienen el código fuente y que serán posteriormente compilados en archivos ".class". Estos archivos Java tienen que ser almacenados dentro de la carpeta fuente recientemente creada (por ejemplo, "src". Pulse "New > Class" para abrir la ventana de creación de clases. La carpeta fuente especificada debería ser la carpeta recientemente definida (src). Si no se especifica ningún paquete para contener las clases Java, se guardarán dentro de un paquete por defecto. El último campo obligatorio que debería ser rellenado antes de proceder a la creación de la clase Java es el propio nombre de la clase. Las convenciones de Java sugieren que el nombre de una clase debería comenzar con mayúscula. En este tutorial se ha usado el nombre "ExampleClass". También existen otros modificadores que pueden ser fácilmente añadidos a una clase desde el mismo momento de su creación. Sin embargo, estos elementos también podrían ser añadidos manualmente en otras fases más avanzadas del proceso de desarrollo. Si se pretende que la nueva clase extienda (herede de) otra clase existente, se debería especificar la clase "padre" dentro del campo "Superclass". El botón "Browse..." es de gran utilidad a la hora de encontrar clases que sean posibles candidatas para ser extendidas. Aunque Java sólo soporta herencia única (sólo puede extenderse de una única clase) sí que es posible que una clase implemente más de una interfaz. Una vez más, el botón "Browse..." simplifica la tarea de seleccionar interfaces implementadas. Si se desea que la nueva clase contenga un método "main" (es decir, el punto inicial de ejecución del programa), puede añadirse dicho método automáticamente sólo con marcar la casilla con la opción apropiada. También pueden implementarse de esta manera los constructores de la superclase y todos los métodos abstractos heredados. Esta última opción es muy útil si se desea instanciar la clase puesto que para esto todo método abstracto debería estar implementado. Es interesante destacar que los archivos compilados ".class" sólo son visibles en la ventana "Navigator", abierta por defecto dentro de la perspectiva "Resource". Puesto que la perspectiva de Java no abre esa ventana por defecto, los ficheros .class no serán visibles en la vista del Package Explorer. Sin embargo, basta con escribir y guardar un archivo ".java" para que se cree un archivo ".class" resultante de compilar el archivo fuente anterior. File Los archivos que se crean a través de este menú suelen almacenar notas e información general. Otros archivos tales como archivos de configuración, archivos "build" de ant y similares también pueden crearse de esta manera. Crear un nuevo archivo es tan sencillo como pulsar "New > File", seleccionar el proyecto y carpeta adecuados en que se desea crear el archivo, dar nombre al nuevo archivo y pulsar el botón "Finish". Por defecto, archivos los archivos genéricos se abren en el editor de texto. Folder Las carpetas se utilizan para almacenar y organizar archivos. Como ya se ha mencionado anteriormente, una carpeta normal no es exactamente lo mismo que una carpeta fuente. Una práctica recomendada de programación es crear explícitamente una carpeta fuente donde almacenar los archivos .java con el código fuente (src), una carpeta de salida donde guardar el código compilado (bin) y una carpeta para guardar toda la documentación relacionada (docs). Para crear una nueva carpeta basta con especificar el nombre de la nueva carpeta y la carpeta que la contiene. nterface Las interfaces son casos particulares de las clases de Java, que carecen de implementación y que se espera que otras clases implementen. Usualmente funcionan como una especie de contrato, indicando lo que la clase implementada debería hacer, mientras que los detalles de más bajo nivel corresponderían al implementador. El procedimiento de creación de interfaces es muy similar al procedimiento de creación de nuevas clases ya detallado. Aunque una interfaz no puede implementar ninguna interfaz, sí que puede extender otra interfaz mediante una relación de herencia. Package Los paquetes se declaran para almacenar y organizar los archivos de Java. El nombre de un paquete consta usualmente de varias partes separadas por puntos. Cada una de estas partes será un directorio nuevo dentro del sistema de archivos. Las clases que se creen dentro de un paquete determinado en Eclipse llevarán añadida automáticamente la declaración "package" en su código fuente. Scrapbook Page Estas "hojas de sucio" son una forma sencilla de probar fragmentos de código antes de añadirlos al programa final. Sólo hay que crear una "Scrapbook Page" dentro de la carpeta deseada y escribir el código dentro de ella. No hace falta meter el código dentro de un método main para ejecutarlo. En Eclipse 3.0 las "scrapbook pages" no se muestran directamente en el menú contextual. Para crear una nueva hoja de sucio seleccione "New > Other > Java > Java Run/Debug > Scrapbook Page". Otra diferencia respecto de las versiones 2.x es que en Eclipse 3.0 sí que están habilitadas las funciones de auto completar dentro de las scrapbook pages. Antes de intentar ejecutar el código añadido es necesario importar las clases usadas. Para ello basta con realizar clic derecho sobre cualquier parte de la hoja y seleccionar "Set Imports" del menú contextual. Ahí es donde hay que especificar los tipos y paquetes que es necesario añadir. Para ejecutar el código recién creado es necesario seleccionarlo pinchando con el botón izquierdo del ratón y arrastrando hasta tener todo el código seleccionado. Luego hay que pulsar el botón derecho del ratón sobre este código seleccionado y ejecutar la opción "Execute" del menú contextual. La salida estándar de dicho proceso se mostrará dentro de la vista "Console", y otros mensajes de error se mostrarán dentro de la misma hoja de sucio. Una vez que se ha completado la prueba habría que pulsar el botón "Stop Evaluation" del menú contextual. Puesto que el editor de estas hojas de prueba no proporciona tantas funciones de ayuda a la programación como el editor de código Java, una práctica recomendada es escribir el código original en el editor de Java y luego pegarlo en esta hoja de pruebas. Source Folder Como ya se vio, las carpetas fuente son un tipo especial de carpetas destinadas a almacenar los archivos fuentes de Java (es decir, los de extensión ".java". Estos archivos de código serán automáticamente compilados en archivos ".class". Puesto que todo proyecto de Java debería tener una carpeta fuente, es una práctica recomendada organizar esto desde el primer momento, como se explicó en la primera parte de este tutorial. Parte 3: Funciones Útiles de Programación Hasta ahora se han expuesto conceptos básicos del funcionamiento general de Eclipse. Es hora de presentar las funciones de ayuda a la programación de Eclipse. Es en esta parte donde se dará cuenta de cómo usar Eclipse para programar en Java ahorra gran cantidad de tiempo y esfuerzo. Mientras que las partes anteriores de este tutorial eran necesarias, esta será la más interesante. Compilar y Detectar Errores Es importante tener en cuenta que en Eclipse los errores de compilación se muestran en tiempo real subrayando el fragmento de código adecuado con una línea roja. Y además el entorno automáticamente compila los archivos salvados. Así pues, no será necesario pasar por el tedioso y lento proceso de compilar - observar los errores - corregir los errores. Los errores pueden encontrarse fácilmente porque se muestran además como marcas rojas en el margen derecho del editor de código Java. También los errores y advertencias presentes en archivos ya guardados se muestran dentro de la vista de tareas (Tasks View), como se detallará posteriormente. Haciendo click en cualquiera de los dos tipos de marcadores de error llevará automáticamente hasta la línea en que el error está presente. Las advertencias (warnings) se muestran de la misma manera, pero con marcas amarillas. Icono de Bombilla = Autocorregir Hemos visto como Eclipse detecta y marca todo error y advertencia de compilación. Eclipse habitualmente permite autocorregir los posibles errores haciendo clic en el icono de bombilla presente en el margen izquierdo del editor de código. Así pues, aparecerá una ventana mostrando todas las opciones. Seleccionar una opción mediante los cursores del teclado o dejar el punto del ratón sobre dicha opción abrirá una nueva ventana mostrando detalladamente las modificaciones de código que la autocorrección efectuaría. Basta con pulsar la opción seleccionada (o pulsar ENTER) para hacer que Eclipse lleve a cabo la corrección automatizada. CTRL + Espacio = Autocompletar Una vez que conozca la útil función de autocompletar la usará continuamente. A través de los siguientes ejemplos prácticos aprenderá cuales son las situaciones más comunes en que esta función de ayuda a la programación resultará muy útil. * Nombres de Clases Crear referencias a otras clases dentro de la clase actual es una tarea de programación habitual. Sin embargo, algunas clases de Java tienen nombres muy largos que son difíciles de recordar. Además, es necesario añadir declaraciones de importación para poder resolver dichas referencias a clases a la hora de compilar. Usar "CTRL + Espacio" tras escribir los primeros caracteres del nombre de una clase Java mostrará las posibles alternativas. Puede seleccionar cualquiera de ellas simplemente realizando clic izquierdo del ratón. Nótese que la sentencia de importación correspondiente se añadirá de forma automática. Las clases se marcan con una "C" verde mientras que las interfaces se marcan con una "I" morada. El paquete al que pertenece la clase se muestra también, permitiendo de este modo evitar posibles confusiones. * Atributos y Variables Locales Cuando se define una clase es normal dar nombres inventados a sus atributos y a las variables internas de los métodos. Pero en ocasiones resulta difícil recordar el nombre exacto. Tras escribir los primeros caracteres del atributo o de la variable local, pulsar "CTRL + Espacio" mostrará las posibles alternativas. Este proceso es muy similar al de autocompletar el nombre de las clases recientemente expuesto. Las variables locales se marcan con el icono de una "L" gris, mientras que los atributos se marcan con un icono que puede variar según la visibilidad del atributo. * Métodos y Constructores Una vez que se ha creado un objeto Java pueden invocarse los métodos correspondientes a su clase. Sin embargo, es bastante habitual olvidar el nombre de un método en concreto, o incluso los tipos de sus parámetros y su orden. Este problema puede solucionarse fácilmente pulsando "CTRL + Espacio" tras escribir el nombre del objeto seguido de un punto, lo cual mostrará una ventana con las posibles alternativas. Pulsar sobre la alternativa escogida añadirá la signatura del método al objeto. También es posible autocompletar la signatura de los constructores pulsando "CTRL + Espacio" tras escribir (o autocompletar) el nombre de la clase seguido de un signo de apertura de paréntesis, "(". Escribir las primeras letras del modificador de un método tal como "public" o "private" y pulsar "CTRL + Espacio" le permitirá crear automáticamente una plantilla del método. Pulsar el tabulador permite saltar de un campo de la plantilla a otro, de manera que se pueda completar el tipo de retorno, el nombre del método y sus parámetros. * Bucles Los bucles suelen estar presentes en todos los programas. Aunque crear un nuevo bucle puede no ser una tarea muy compleja, Eclipse proporciona algunas funciones de auto completado que pueden acelerar considerablemente el proceso. Basta con escribir "do", "while" o "for" y pulsar "CTRL + Espacio" para mostrar las posibles opciones. Si el bucle ha sido creado con el propósito de iterar sobre un array de elementos, seleccionar esta opción intentará autocompletar incluso el nombre del array. * Etiquetas de Javadoc Mientras que los comentarios internos del programador se indican con una "//", los comentarios de Javadoc se inician con un "/**". Tras crear un método, añadir "/** + ENTER" sobre la signatura del método autocompletará información de Javadoc tal como "@param [nombreParámetro] ", "@return [descripciónDatosDevueltos]" y "@throws [tipoExcepción] ". Pulsar "CTRL + Espacio" dentro de un bloque "/** ... */" mostrará toda la lista de etiquetas Javadoc posibles. Menú "Source" Mediante un clic derecho en el editor de código se mostrará un menú contextual. Las funciones más importantes de su submenú "Source >" son las siguientes: * Comment and Uncomment Seleccionando esta opción se puede comentar o quitar la marca de comentario del código. Esto es especialmente útil usado con bloques de código, puesto que permite no ejecutar temporalmente partes del código sin llegar a eliminarlas. Las teclas rápidas asociadas son "CTRL + /" para añadir comentarios y "CTRL + \" para eliminar dichas marcas de comentario del bloque de código seleccionado. En Eclipse 3.0 estos comandos han sido sustituidos por "Toggle Comment". Seleccionando este nuevo comando del menú "Source" es posible cambiar el estado del código seleccionado, pasándolo de comentario a código o viceversa. También la nueva opción "Add Block Comment" marcará el código como comentario rodeándolo con los símbolos "/*" y "*/". Mientras que seleccionar un bloque de código comprendido entre esos símbolos de comentario hará que en aparezca la opción "Remove Block Comment", la cual eliminaría los símbolos de comentario. * Format La función de formateado automático de código automáticamente indenta el código de la forma adecuada, además de llevar a cabo otras funciones de representación. Es una forma rápida de conseguir tener un código ordenado y comprensible. Las opciones del formateador de código pueden adaptarse a las preferencias personales usando "Window > Preferences > Java > Code Formatter". Las teclas rápidas asociadas son "CTRL + Mayúsculas + F". Nótese que las funciones de indentación de código permiten identificar rápidamente qué fragmentos de código son afectados por una condición o bucle determinados, por ejemplo. Pero también es útil situar el cursor tras un paréntesis o llave, porque de esta forma se marcará el paréntesis asociado que abre o cierra el bloque con un cuadrado gris. Así pues, se verá de un vistazo qué código se encuentra realmente comprendido entre los dos paréntesis. Eclipse 3.0 permite especificar opciones avanzadas de formateo de código. La página de preferencias que permite configurar el formateo de código se ha trasladado a "Window > Preferences > Java > Code Style > Code Formatter". Pese a que las opciones se pueden configurar de acuerdo a las preferencias personales, ya vienen configuradas por defecto para cumplir las convenciones de Java. * Organise and Add Imports Aunque las sentencias de importación adecuadas se muestran siempre cuando se usan las funciones de autocompletar código para completar el nombre de una clase Java, nuevas sentencias de importación pueden añadirse en cualquier momento usando la función "Add Import". Pulsar "Organise Imports" eliminará automáticamente todas las declaraciones de importación no utilizadas, incrementando la eficiencia del código. El método abreviado del teclado es "CTRL + Mayúsculas + O". * Override and Implement Methods Seleccionando esta opción de sombrear o implementar métodos abrirá una ventana de menú en la cual se podrán marcar los métodos de la superclase cuya signatura se desea que se añada. La opción "Add Constructors from Superclass" permitirá especializar todos los constructores usados. * Generate Getter and Setter El lenguaje Java permite especificar diferentes niveles de visibilidad de atributos. Sin embargo, en programación orientada a objetos, los atributos internos de una clase deberían ser siempre privados. Esto quiere decir que no debería poder realizarse ningún tipo de modificación directa del atributo de una clase desde otra clase externa. A causa de esto, la única manera de acceder a un atributo privado para leer su valor o bien para darle un nuevo valor sería utilizando un método accesor o modificador que sea público. Seleccionando "Generate Getter and Setter" una ventana mostrando los posibles métodos que podrían crearse de acuerdo con los atributos definidos aparecerá. Entonces los métodos necesarios podrían crearse simplemente seleccionándolos y pulsando "Ok". * Surround with try/catch block Para utilizar esta opción es necesario tener seleccionado de antemano un fragmento de código pinchando con el botón izquierdo del ratón (o pulsando Mayúsculas) y arrastrando. Activar esta opción creará un bloque "try" alrededor del código seleccionado. Tras este bloque se añadirán automáticamente los bloques "catch" adecuados, los cuales atraparán toda posible excepción que el código rodeado pueda lanzar. Por defecto se añade una sentencia de traza dentro de esos bloques "catch" de manera que sea posible identificar inmediatamente dónde se lanzó la excepción. Nótese también que, cuando una excepción no es atrapada, aparecerá como texto en rojo (de la salida de error estándar) en la vista "Console". Pulsar la línea de código en que se muestra en qué línea tuvo lugar la excepción llevará directamente a ese punto del programa en el editor de código. Refactor Menu Haciendo clic derecho en el editor de código mostrará el menú contextual. A continuación se muestran las funciones más interesantes del sub menú "Refactor >". *Rename Para invocar la función de renombrado hay que tener previamente seleccionado un elemento. Marcar la opción de "update references" actualizará toda referencia al nuevo elemento renombrado. Usando esta opción de "Refactor > Rename..." es como deberían renombrarse todos los elementos incluyendo los archivos ".java". Puesto que así se actualizan todas las referencias no aparecerán problemas a la hora de compilar. Al renombrar determinados elementos será posible actualizar también referencias en comentario de Javadoc, comentarios normales y cadenas de caracteres entrecomilladas, lo cual también puede resultar bastante útil. La opción de "Preview" permite asegurarse de que no habrá ningún tipo de error durante la operación de renombrado. * Move Antes de seleccionar "Refactor > Move...", el archivo fuente o elemento que se desea mover deberá haber sido seleccionado. Entonces será sólo necesario seleccionar el destino de manera que se lleve a cabo la operación de mover. Esta es la forma correcta de mover archivos ya que evita problemas futuros con referencias y rutas de compilación. * Change Method Signature Para modificar la signatura de un método es posible usar esta opción en lugar de hacerlo manualmente. Sólo hay que colocar el cursor dentro del método cuya signatura se desea cambiar. Esta es una forma rápida de cambiar la visibilidad, el tipo de retonro, los parámetros y su orden. Los nuevos parámetros se añaden pulsando el botón "Add" y se modifican pulsando en botón "Edit". * Pull Up and Push Down Si la clase actual extiende o es extendida por otra clase, puede ser interesante mover algunos elementos a la superclase (pull up) o a la subclase (push down) respectivamente. Seleccionar el elemento y la opción adecuada llevará a cabo esta operación de forma automatizada. Consultar la Documentación La documentación Javadoc del código que se esté actualmente programando puede ser consultada en tiempo real simplemente colocando el cursor o el puntero del ratón sobre el elemento elegido. Para expandir la ventana con esta documentación basta con pulsar la tecla de función F2. La documentación Javadoc externa (como por ejemplo, la documentación oficial de las clases de Java) puede consultarse modificando dentro de las preferencias del JRE instalado ("Window > Preferences > Installed JRE" con "Edit" la ubicación del Javadoc. De esta manera, dejando el cursor sobre el nombre de la clase y pulsando "Mayúsculas + F2" se abrirá la documentación por el punto adecuado. Eclipse 3.0 dispone de una nueva vista de Javadoc ("Window > Show View... > Java > Javadoc". Dicha vista muestra la documentación Javadoc asociada al elemento sobre el que está situado el cursor. Importar Archivos JAR En ocasiones puede ser necesario importar algunos archivos Jar no incluidos por defecto en el JRE estándar para que el proyecto pueda compilar. Basta con pulsar el botón derecho del ratón sobre la carpeta adecuada, elegir "Properties > Java Build Path", seleccionar la pestaña "Libraries", pulsar el botón "Add External Jars" y seleccionar el archivo ".jar" o ".zip". El nuevo Jar añadido será visible en la ventana Package Explorer como un pequeño frasco. Parte 4: Vistas de Eclipse La interfaz de usuario de Eclipse consta de dos tipos de elementos: vistas y editores. Mientras que los editores normalmente permiten realizar una tarea completa, las vistas proporcionan funciones de apoyo. En este punto del tutorial ya debería tener bastante práctica usando el editor de código cuyas funciones principales se detallaron en la parte 3. Ahora, las vistas más interesantes de Eclipse se explicarán con detalle, junto a algunos consejos de cómo navegar a través de los editores. Perspectivas Una perspectiva de Eclipse es una agrupación de vistas y editores de manera que den apoyo a una actividad completa del proceso de desarrollo software. Sin embargo, es posible crear perspectivas propias añadiendo nuevas vistas y cambiando su distribución en la pantalla. Las perspectivas pueden seleccionarse haciendo clic en los iconos de perspectiva del lateral izquierdo o eligiendo "Window > Open Perspective" del menú. Las perspectivas son: Resource: esta perspectiva está estrechamente relacionada con el sistema de archivos puesto que representa la localización física de los recursos almacenados dentro de los proyectos Java: esta perspectiva se centra en tareas de programación, mostrando paquetes, clases, métodos y atributos en sus vistas asociadas. Plug-in development: la perspectiva de desarrollo de plug-in permite a los desarrolladores añadir nuevos módulos de Eclipse. Install/Update: permite gestión de la configuración. Muestra los componentes instalados así como sus versiones y conflictos. Debug: relacionada con la tarea de depuración. Se centra en los procesos ejecutados, puntos de ruptura, variables, salida, etc. Java Browsing: esta perspectiva permite ojear rápidamente código, proyectos, paquetes y jerarquías. En Eclipse 3.0 los iconos de perspectiva se han trasladado a la esquina superior derecha. También hay ahora un botón etiquetado como "Open a Perspective" que permite acceder rápidamente a otras perspectivas. Otro cambio es que la perspectiva "Install/Update" ha sido eliminada, y puede accederse a sus funciones seleccionando "Help > Software Updates" Tareas La vista de tareas ("Tasks View" permite una rápida gestión de tareas pendientes. Seleccionando "Window > Show View > Tasks" se muestra esta vista. Pueden añadirse nuevas tareas haciendo clic en el botón "Add task". Nótese que la prioridad de la tarea y su estado también pueden modificarse sin más que hacer clic en dichos campos. También los errores y las advertencias de los archivos con código guardados se muestran en esta vista. Haciendo clic en la descripción de un error llevará hasta el punto exacto del código en que se encuentra dicho error. Añadir "TODO [descripción]" a un archivo Java añadirá una nueva tarea "por hacer" a la vista de tareas. Una vez más, hacer clic sobre su descripción conducirá hasta el punto exacto en que la etiqueta "TODO" se añadió. Dentro del editor de código Java las etiquetas de "TODO" pueden encontrarse rápidamente ya que se muestran como pequeñas marcas azules en el margen derecho. Hacer clic sobre estas marcas llevará directamente a la línea etiquetada. Nótese que varios procesos automatizados insertan estas etiquetas "TODO" para asegurarse de que el código autogenerado es revisado y comentado. Haciendo clic derecho en cualquier punto de la vista de tareas se mostrará un menú contextual que permitirá realizar de forma rápida cualquier actividad relacionada con la gestión de las tareas definidas. Navigator La ventana del navegador de recursos permite echar un vistazo a la estructura de archivos de los proyectos definidos. Nótese que esta vista es la única que muestra la carpeta de salida ("bin" así como los archivos Java compilados (".class". Package Explorer La vista del explorador de paquetes muestra la estructura lógica de paquetes y clases Java almacenados en los distintos proyectos. las carpetas fuente (que deben almacenar los archivos fuente ".java" se muestran aquí decoradas con el icono de un paquete contenido. Los archivos Java también pueden ser expandidos de modo que muestren sus métodos y atributos internos al pulsar el botón "+". * Working Set Un conjunto de trabajo es un grupo de elementos que se muestran en las distintas vistas de eclipse. Estos conjuntos de trabajo se usan como filtros que permiten separar claramente los diferentes proyectos en que se está trabajando. Esto puede resultar muy útil cuando se está trabajando simultáneamente en varios proyectos no directamente relacionados entre sí. Organizar los distintos proyectos en grupos de trabajo acelerará el proceso de buscar los elementos deseados y reducirá la confusión visual. Para definir un conjunto de trabajo, basta con pulsar en el icono de menú del Package Explorer (el icono de un triángulo invertido) y seleccionar "Select Working Set". Aquí se permitirá nombrar un nuevo conjunto de trabajo, así como seleccionar sus recursos relacionados y editar o quitar otros conjuntos de trabajo existentes. Todos los conjuntos de trabajo disponibles se muestran directamente la próxima vez que se pulse el icono triangular de menú. Es importante tener en cuenta que crear un nuevo proyecto cuando un conjunto de trabajo está siendo usado hará que el nuevo proyecto no se muestre dentro de las vistas de Ecipse. Para poder ver el proyecto recién creado, será necesario editar el conjunto de trabajo actual ("Menú de la vista > Select Working Set > Edit" o directamente "Edit Current Working Set" y seleccionar el nuevo proyecto para que se muestre. Outline View La vista de resumen es una forma rápida de ver qué métodos i atributos se encuentran definidos dentro de una clase de Java. Los iconos asociados proporcionan información adicional de acuerdo con la visibilidad del atributo o método en cuestión. Y sólo con hacer clic en cualquiera de estos iconos conducirá a la línea de código exacta en que dicho atributo o método está definido. La vista de resumen es una herramienta esencial para entender y navegar archivos Java voluminosos. Hierarchy View La vista de jerarquía muestra las relaciones de herencia presentes entre distintos elementos de Java. Haciendo clic derecho en el nombre de una clase Java en el editor de código y seleccionando "Open Type Hierarchy" abrirá esta vista de jerarquía. La tecla rápida asociada es "F4" En Eclipse 3.0 se ha añadido la opción "Open Call Hierarchy" al menú contextual del editor de código. Tras seleccionar un método, al hacer clic en esta opción se abrirá una vista que mostrará dónde es usado dicho método. Las teclas rápidas asociadas son "CTRL + ALT + H". Fast Views Arrastrar una vista hasta el margen izquierdo (hasta que aparezca un icono de carpetas apiladas) convierte esta vista en una "vista rápida". Pulsar el icono de la vista rápida hará que dicha vista se muestre, mientras que volver a pulsarlo (o pulsar en cualquier otro punto de la pantalla) hará que se oculte. Mediante un clic derecho en el icono de la vista rápida y seleccionando "Fast View" restaurará la vista a su posición original. El área por defecto en que se apilan las vistas rápidas ha sido cambiada en Eclipse 3.0. Ahora es un pequeño rectángulo situado en la esquina inferior izquierda de la pantalla. Así pues, las vistas rápidas se crean ahora arrastrando la vista dentro del rectángulo hasta que aparece un icono de una flecha dentro de un cuadrado. No obstante, la zona en que almacenar las vistas rápidas puede cambiarse de sitio colocando el cursor sobre ella hasta que se transforma en un cursor con cuatro flechas, arrastrando y depositando la zona en el lugar deseado. Navegar por las Vistas y los Editores Hasta ahora hemos visto una introducción de cómo utilizar las vistas de Eclipse y cómo dichas vistas ayudan a manejar la información. Es hora de explicar algunas funciones de navegación adicionales que serán útiles para encontrar rápidamente la información deseada y que permitirán presentarla adecuadamente en los diversos editores y vistas. Maximizar una Vista o Editor Basta con hacer doble clic en el título de una ventana para maximizarla. Doble clic en el título de nuevo hará que las dimensiones y posición de la ventana sean restauradas a las que tenía originalmente. En Eclipse 3.0 se ha añadido "CTRL + M" como tecla rápida asociada a maximizar o restaurar la ventana del editor actual. Ir al Último Cambio El icono del menú representado como "una flecha con un asterisco" sirve para colocar el cursor en el último punto del código que fue modificado dentro del editor activo. Es habitual que tras cambiar algo de código (por ejemplo, tras escribir algunas instrucciones nuevas) movamos el cursor a otra línea para revisar otra parte del programa. Si deseáramos volver al punto en que añadimos el último cambio (que suele ser el lugar por el que "íbamos programando" tendríamos el problema solucionado con sólo pulsar este icono de "ir al último lugar editado". Las teclas rápidas asociadas son "CTRL + Q". Parte 5: Ejecutar y Depurar Cuando el programa de Java esté completado será hora de ejecutarlo y probarlo. Quizás aparezcan algunos "bugs" a la hora de ejecutarlo. Entonces será hora de depurar el programa. Afortunadamente, Eclipse proporciona ayuda a las tareas de ejecutar y depurar código. Ejecutar Para ejecutar un programa dentro de Eclipse hay que seleccionar "Run > Run..." del menú principal. Dentro de "Configurations" se almacenan diferentes configuraciones de ejecución. Hay cuatro tipos de configuraciones de ejecución: Java Applet (para applets web), Java Application (para programas normales de Java), JUnit (casos de prueba) y Run-Time Workbench (otras instancias de Eclipse que permiten probar nuevos módulos de Eclipse). Así pues, para ejecutar un programa de Java normal debería seleccionarse "Java Application" y pulsar el botón "New" para crear una nueva configuración. Dentro de la pestaña "Main" hay que dar nombre a la nueva configuración seleccionar el proyecto que contiene la clase con el método main y seleccionar dicha clase. El método "main" es el punto de ejecución de un programa Java, y se representa como un pequeño icono de un hombre corriendo al lado del icono de la clase. Si se desea pasar argumentos al método main (en la forma de "String[] args", no hay más que hacer clic en la solapa de "Arguments" y escribir esos argumentos separados por espacio dentro de la zona en blanco de "Program Arguments". Finalmente, hacer clic en el botón "Run" lanzará la ejecución del programa seleccionado. Una forma más rápida de arrancar la ejecución del programa recientemente ejecutado es pulsar en el icono de un hombre corriendo que aparece en el menú principal. Pulsar la flecha próxima a este icono mostrará otras configuraciones de ejecución recientemente utilizadas. Depurar Aunque Java no es tan difícil de depurar como otros lenguajes de programación, también es perfectamente posible que surjan complejos problemas de ejecución. Eclipse da apoyo completo a la tare de depuración a través de su perspectiva "Debug" ("Window > Open Perspective > Debug" o seleccionando el icono del "bicho" en el margen izquierdo). Dentro de esta perspectiva de depuración, haciendo clic en el margen izquierdo del editor de código aparecerá un menú contextual. Seleccionando "Add/Remove Breakpoint" añadirá o quitará un punto de ruptura, mientras que "Toggle Breakpoint" cambiará el estado de activación del punto de ruptura. Los puntos de ruptura marcan líneas en que la ejecución del programa se detendrá de manera que sea posible comprobar el valor de las variables en ese instante, identificando así posibles errores. Haciendo clic derecho en un punto de ruptura y seleccionando "Breakpoint Properties..." permitirá especificar opciones avanzadas del punto de ruptura. "Hit Count" especifica que la ejecución del programa se detendrá cuando se pase por el punto de ruptura el número especificado de veces. Las condiciones de activiación detendrán la ejecución cuando la condición sea cierta o bien cuando el valor de la condición cambie. Especificar una variable como una condición de activación y seleccionar "suspend when value of condition changes" es una forma de "detener la ejecución en el punto de ruptura cuando dicha variable sea modificada". Las excepciones son uno de los síntomas más evidentes de errores de ejecución. Los "Java Exception Breakpoints" detienen la ejecución cuando salta una excepción del tipo seleccionado. Estos puntos de ruptura se activan haciendo clic en el icono "J!" de la vista de "Breakpoints" o desde el menú principal "Run". La ejecución puede detenerse cuando la excepción sea capturada, no capturada o ambas. Añadir siempre los puntos de ruptura de excepciones Java de "ArrayIndexOutOfBoundsException" (lanzada cuando el índice de una matriz se sale de sus dimensiones) y "NullPointerException" (lanzada cuando se intenta acceder a una referencia que apunta a null) es una práctica de depuración recomendada. Si se desea que el programa se detenga en los puntos de ruptura definidos deberá ser ejecutado en modo depuración ("Run > Debug...". Tras detenerse en un punto de ruptura la ejecución del programa puede continuar de diversas maneras. Haciendo clic derecho en el editor de código dentro de la perspectiva de depuración aparecerá un menú contextual con estas opciones. "Run to line" reanuda la ejecución del programa hasta que se alcanza la línea en que está el cursor. "Step into selection" continuará la ejecución dentro del método seleccionado siempre y cuando el código fuente del método esté disponible. La ejecución también puede reanudarse mediante un clic derecho en la ventana de "Debug" y seleccionando las opciones adecuadas, o directamente pulsando los iconos de dicha ventana. "Step over" parará en la línea siguiente a la invocación de un método. "Resume" reanudará la ejecución normal del programa y sólo se interrumpirá en los puntos de ruptura si sus condiciones de activación se satisfacen. La vista "Variables" proporciona información verdaderamente útil ya que muestra los valores que tienen actualmente las variables cuando la ejecución se detienen en un punto de ruptura. La vista de "Debug" también es útil para observar diferentes procesos que están siendo ejecutados simultáneamente, como por ejemplo, hebras. Cuando el proceso de depuración ha terminado, los procesos mostrados en la ventana de depuración se muestran como "Finished" (pueden acabarse manualmente con "Clic derecho > Terminate". La información de ejecuciones previas puede elminarse realizando clic derecho sobre ella y seleccionando "Terminate and Remove" o "Terminate All" más "Remove All Terminated". Gestión de Cambios No es extraño cambiar código del programa y darse cuenta después de que la nueva versión funciona incluso aún peor que la primera versión. Ese es el motivo de que los programadores tengamos que guardar diferentes versiones del programa cada vez que introducimos un nuevo cambio. Sin embargo, esta práctica inevitable es normalmente tediosa y consume mucho tiempo. Afortunadamente, Eclipse proporciona un potente sistema de gestión de cambios y de control de versiones. Haciendo clic derecho en un archivo Java dentro del Package Explorer y selecionando "Replace With > Local History" permitirá reemplazar la versión actual por una versión previamente guardada. La hora y fecha de modificación se muestran junto con dos ventanas que destacan las diferencias existentes entre ambas versiones. Seleccionando "Window > Preferences > Workbench > Local History" permitirá seleccionar cuantas versiones, megas y días almacenar. Así pues, se puede obtener un buen equilibrio personalizado entre seguridad y eficiencia. ----------------------------------------------------------------- Enlaces Para descargar la última versión del entorno de desarrollo Eclipse y para consultar otros tutoriales y documentos, visita el sitio web de eclipse: http://www.eclipse.org Para descargar la máquina virtual Java J2SE JRE visita: http://www.java.sun.com Fuente: http://www.os4os.org/

humor geek... Un proyecto de software tipico: Etapas de un proyecto. 1. Ilusión. 2. Desilusión. 3. Pánico. 4. Búsqueda del culpable. 5. Castigo a los inocentes. 6. Alabanzas a los no participantes. (Traducido del libro: La ley de Murphy). Comprendiendo gráficamente la tecnología informática No digas "programita". Pasa el Gerente de Desarrollo y dice "Acabo de salir de una demo y le vendí al cliente [alguna funcionalidad que no tenemos], pero es sencillo. Hay que hacer un programita que..." y a mí se me pone la piel de gallina. "La otra vez estaba navegando por internet y vi el sitio de un flaco que estaba muy bueno, húngaro creo, había hecho un modulito que..." y me imagino que el pobre húngaro se atragantaba con la cena. En la oficina ya es costumbre: "...ya sé cómo resolverlo. Lo que podríamos hacer es un sistemita que..." y unas dos o tres voces lo interrumpen al unísono: "No digas sistemita". El disertante se ríe un poco, se corrige "bueh, un sistema que...". Y es que usualmente después de "-ita" viene algo por el estilo: * "... que dibuje sobre un plano del edificio, que podríamos importar de autocad, la información que tenemos sobre los componentes de la red en la base de datos." * "... que te marque en el mapa el mejor recorrido para ir a cobrar las facturas, como hacen ahora los gps." * "... que te muestre con semáforos, o mejor con un panel como el del auto, el estado financiero de la empresa." * "... que vos tengas acá al lado del reloj, y lo tocás y se despliega con las tareas que tenés asignadas y vas eligiendo qué es lo que estás haciendo. Tiene que actualizarse automáticamente, porque no lo vamos a ir instalando en los 2000 puestos de trabajo." * "... que te muestre esto mismo, pero en tres dimensiones y uno lo va rotando para ver mejor los datos (este viene acompañado por un '¡pero si los datos ya los tenés!')." No quiero parecer quejoso, pero a los contadores no les dicen "¿Me firmaste el balancecito?", y nunca escuché a un abogado decir "Es cuestión de presentar una demandita." Algunas profesiones gozan de la ternura del público en general, entre ellas las relacionadas con sistemas. También la música (supongo que muchos músicos profesionales habrán escuchado "¿por qué no te componés un temita para el cumpleaños de...?", las artes plásticas, el diseño ("¿Qué es ese montón de dibujitos?" -el diagrama del sistema de logística sobre el que trabajamos hace meses-), la arquitectura ("¡Ay! Qué lindo, ¿no me lo regalás?" -el boceto de las Petronas-), sólo por dar algunos ejemplos fáciles. De todas maneras, que "la gente" diga "programita", "temita", "dibujito" es generalmente simpático. Lo grave es cuando lo decimos nosotros. Por alguna razón creemos que algo es fácil. Lo fácil es demostrar que nada es fácil (con una pequeña "demostracioncita": Supongamos un proyecto de sistema bastante acotado (los que se reconozcan en las frases anteriores que vayan prestando atención a la terminología alternativa), con pocos usuarios y cuya funcionalidad sea similar a la de otros sistemas que ya hemos desarrollado. Tenemos que: * Relevar, así sea imprimir un mail con la propuesta. * Preparar la documentación de diseño, así sea una hoja con un párrafo diciendo cómo lo vamos a hacer. * Después codificarlo. * Probarlo y depurarlo. * Preparar la instalación. * Probar la instalación. * Generar la documentación o ayuda para el usuario. * Versionar absolutamente todo lo anterior. Y como todo sistema, generará feedback, que debemos por lo menos rechazar cortésmente (es todo un trabajo), o prometerlo para futuras actualizaciones (que no tenemos en mente) condicionadas por factores improbables (pero que no se note, es todo un arte). Una pavada, realmente. De acuerdo a mi humilde mi experiencia (experiencita) cuando uno escucha "-ita" en boca de alguien de sistemas (usualmente algún analista funcional o líder de proyecto, que me disculpen pero creo sinceramente que es así) es que sueña con saltearse no uno sino varios de los pasos mencionados anteriormente. Con lo cual, cuando al sistema acotado se le suma otro sistema acotado y otro y otro, todos ellos sin la documentación o las pruebas necesarias, con un versionado al estilo "copiar en tal carpeta", tenemos un gran sistema de m... (y encima seguro que al cliente le encanta, con lo cual ahora es nuestro producto estrella). O cuando la simple funcionalidad se quiere incluir en otro sistema (tarea por la cual presupuestamos... media hora, a lo más) y al hacerlo se rompe todo, tenemos un día de m... No tiremos basura al patio del vecino (solamente). ¿Cuántas veces sub-presupuestamos horas, minimizando la complejidad de nuestra propia tarea, para la cual hemos estudiado tanto? ¿O cuántas veces dejamos "eso que es fácil" para el final, sin pensarlo demasiado, y nos pusimos a buscar imágenes para los botones? ¿O simplemente lo dejamos para mañana, o pasado? Bueh, el tema da para reírse y llorar bastante más. A ver quién se juega con algún comentario sarcástico. Hasta lueguito. P.D.: casi olvido dedicarlo a mis sufridos "compañeritos" de trabajo: ¿hace cuánto que no se nos escapa un "-ita"? Una mas... FUENTE desarrollodesoftware.blogspot.com
Nada de Windows en Marte El sistema operativo Unix está en el corazón del Phoenix Mars Lander de la NASA. En concreto, VxWorks, un sistema operativo de tiempo real que se deriva de los Unix comerciales y que también comparte ciertas similitudes con Linux. La misión que ha conseguido encontrar hielo en la superficie del planeta rojo depende en buena parte del funcionamiento de VxWorks, que ya ha sido implantado con éxito en otras misiones de la NASA. Parece que Windows no les da demasiada confianza a los ingenieros de la NASA, que desde hace tiempo hacen uso de sistemas operativos de tiempo real muy especializados y que son críticos para el éxito de estas misiones espaciales. VxWorks es un desarrollo de la empresa Wind River Systems que está embebido en uno de los chips de la Phoenix Mars Lander, la pequeña nave espacial que aterrizó con éxito recientemente en la superficie de Marte y que se encagar del estudio geológico del planeta. Dicha nave tiene obviamente una buena cantidad de elementos tecnológicos muy importantes, pero en el centro de todos ellos se sitúa el sistema operativo VxWorks, una variante de Unix que comparte ciertas similitudes con Linux. Se trata de un sistema operativo de tiempo real, un segmento importantísimo en aplicaciones de misión crítica y alta disponibilidad y que tiene un claro ejemplo en las misiones espaciales. De hecho VxWorks ha sido utilizado en los robots de exploración de Marte Spirit y Opportunity, en el satélite artificial Mars Reconnaissance Orbiter, e incluso en el robot ASIMO de Honda o en el router Linksys WRT54G, lo que da una buena idea de su gran versatilidad. El sistema operativo VxWorks es capaz de reiniciarse en caso de un problema grave, y precisamente una de las dificultades de la misión es el tiempo de respuesta del robot: la gran distancia entre La Tierra y Marte hace que las órdenes de la NASA tarden 20 minutos en llegar, lo que hace necesario que la propia Phoenix Mars Lander sea capaz de operar en ciertos momentos de forma autónoma para reactivarse. Fuente http://www.muycomputer.com/FrontOffice/ZonaPractica/Especiales/especialDet/_wE9ERk2XxDCJt0KHryD9qsaznSKiad3ffqgLTXR9igF8_o6d1xF8Dm6zqerzzQZe

Registrate y eliminá la publicidad! FreeNX: Acceso remoto al escritorio Linux NX es una tecnología para manejar conexiones remotas a X Window de forma suficientemente rápida incluso sobre un módem de 56K. Para ello utiliza compresión de datos y mecanismos de caché, que le proporcionan un rendimiento netamente superior al de otras soluciones de este tipo como VNC. También emplea SSH para cifrar la conexión entre servidor y cliente. Además de permitir a los usuarios loguearse en una máquina remota accediendo al escritorio, permite también suspender y recuperar sesiones. NX es un producto de la empresa NoMachine [1], que dispone de licencia GPL sobre la propia tecnología NX, existiendo múltiples implementaciones, tanto comerciales como gratuitas, y tanto libres como propietarias, de servidores y clientes. Es necesario destacar que la mayoría de la información disponible en la Red sobre NX, tanto en español como en inglés, está en general totalmente desfasada, lo que obliga a una importante labor de rastreo a fin de localizar un repositorio adecuado de los paquetes necesarios en Debian. Por idéntica razón, es de prever que este mismo tutorial pierda vigencia sin tardar, pero ahora mismo permite instalar el servidor FreeNX en una máquina Debian (Lenny) de una forma absolutamente simple. Después, instalaremos el software cliente de NoMachine en una máquina remota con Windows XP SP2 a fin de acceder al escritorio de Debian... Diferenciaremos por tanto la instalación en el lado servidor y en el lado cliente. SERVIDOR 1. Instalación Instalaremos el servidor FreeNX en una máquina corriendo Debian (Lenny), aunque creo poder afirmar que funcionaría exactamente igual en Debian Etch. De hecho los paquetes que utilizaremos están diseñados para Etch, representando este tutorial la primera y única confirmación que yo haya podido encontrar de que también funcionan perfectamente en Lenny. El punto fundamental radica en añadir la siguiente línea a /etc/apt/sources.list: deb http://krnl.nl/freenx/ [2] ./ Operación que seguiremos del imprescindible: # apt-get update Los repositorios de FreeNX se muestran especialmente volátiles y desactualizados, por lo que es posible que éste tampoco dure demasiado. La instalación y puesta en marcha de SSH representa el principal requisito previo. Por tanto, si no está instalado, es el momento de escribir: # apt-get install ssh Y, por supuesto también: # apt-get install freenx A mitad de esta instalación nos saltará la siguiente pantalla: A los efectos de este tutorial seleccionaremos "NoMachine key", por ser la opción recomendada para facilitar la configuración, aunque para entornos de producción donde la seguridad es importante resulta mucho más recomendable utilizar "Custom Keys" (que nos obliga a copiar las claves a la máquina cliente), o al menos cambiar el puerto de escucha por defecto de SSH e incluso impedir el acceso remoto a root, es decir, las medidas habituales de protección frente a los ataques habituales contra este servicio. 2. Configuración Una vez completada la instalación, procedemos a configurar nuestro flamante servidor NX. Comenzamos por editar /etc/nxserver/node.conf para añadir al final la siguiente línea (ojo: en una sola línea): APPLICATION_LIBRARY_PRELOAD=/usr/lib/libX11-nx.so.6.2:/usr/lib/libXext-nx.so.6.4: /usr/lib/libXcomp.so.2:/usr/lib/libXcompext.so.2:/usr/lib/libXrender-nx.so.1.2 Tecleamos ahora: # nxsetup Resultando: ------> You did select no action. FreeNX guesses that you want to _install_ the server. Type "y" to abort the installation at this point in time. "N" is the default and continues installation. Use "/usr/sbin/nxsetup --help" to get more detailed help hints. Do you want to abort now? [y/N] N ------> It is recommended that you use the NoMachine key for easier setup. If you answer "y", FreeNX creates a custom KeyPair and expects you to setup your clients manually. "N" is default and uses the NoMachine key for installation. Do you want to use your own custom KeyPair? [y/N] N Setting up /etc/nxserver ...done Setting up /var/lib/nxserver/db ...done Setting up /var/log/nxserver.log ...done Setting up known_hosts and authorized_keys2 ...done Setting up permissions ...done ----> Testing your nxserver configuration ... Warning: Could not find nxdesktop in /usr/lib/nx. RDP sessions won't work. Warning: Could not find nxviewer in /usr/lib/nx. VNC sessions won't work. Warning: Invalid value "DEFAULT_X_SESSION=/etc/X11/xdm/Xsession" Users might not be able to request a default X session. Warning: Invalid value "COMMAND_START_KDE=startkde" Users will not be able to request a KDE session. Warning: Invalid value "COMMAND_START_CDE=cdwm" Users will not be able to request a CDE session. Warning: Invalid value "COMMAND_SMBMOUNT=smbmount". You'll not be able to use SAMBA. Warning: Invalid value "COMMAND_SMBUMOUNT=smbumount". You'll not be able to use SAMBA. Warnings occured during config check. To enable these features please correct the configuration file. <---- done ----> Testing your nxserver connection ... HELLO NXSERVER - Version 1.5.0-60 OS (GPL) NX> 105 quit Quit NX> 999 Bye <--- done Ok, nxserver is ready. PAM authentication enabled: All users will be able to login with their normal passwords. PAM authentication will be done through SSH. Please ensure that SSHD on localhost accepts password authentication. You can change this behaviour in the /etc/nxserver/node.conf file. Have Fun! Podemos comprobar que el servidor está en efecto funcionando: # nxserver --status NX> 100 NXSERVER - Version 1.5.0-60 OS (GPL) NX> 110 NX Server is running NX> 999 Bye CLIENTE 1. Instalación Descargamos NX Client for Windows y procedemos a su instalación: http://www.nomachine.com/download.php [3] 2. Configuración FUNCIONAMIENTO Arrancamos NX Client y se nos solicita el nombre de usuario y password que configuramos antes, al crear nuestra sesión "debian": Ya estamos dentro de Debian, desde nuestra máquina remota Windows XP, pudiendo trabajar exactamente igual que si estuviéramos sentados ante la máquina: Enlaces [1] http://www.nomachine.com [2] http://krnl.nl/freenx/ [3] http://www.nomachine.com/download.php --------------------------------------------------------------- Espero les sea util. <a href='http://207.182.129.178/www/delivery/ck.php?n=a2afc290&cb=INSERT_RANDOM_NUMBER_HERE' target='_blank'><img src='http://207.182.129.178/www/delivery/avw.php?zoneid=58&cb=INSERT_RANDOM_NUMBER_HERE&n=a2afc290' border='0' alt='' /></a>
Administración avanzada de GNU/Linux Josep Jorba Esteve Remo Suppi Boldrito PDF | Español |472 paginas | 3 MB DOWNLOAD No es rapidshare!!! no es megaupload!!! INDICE 1. Introducción al sistema operativo GNU/Linux ......... 13 1.1. Software Libre y Open Source ................................ 14 1.2. UNIX. Un poco de historia ..................................... 21 1.3. Sistemas GNU/Linux ............................................. 30 1.4. El perfil del administrador de sistemas ................... 35 1.5. Tareas del administrador ....................................... 40 1.6. Distribuciones de GNU/Linux ................................. 46 -----1.6.1. Debian ....................................................... 52 -----1.6.2. Red Hat ...................................................... 56 1.7. Qué veremos ........................................................ 61 1.8. Actividades para el lector ...................................... 64 1.9. Otras fuentes de referencia e información .............. 64 2. Migración y coexistencia con sistemas no Linux ....... 67 2.1. Sistemas informáticos: ambientes ........................... 68 2.2. Servicios en GNU/Linux ......................................... 72 2.3. Tipologías de uso .................................................. 74 2.4. Migrar o coexistir .................................................. 77 -----2.4.1. Identificar requerimientos de servicios .......... 80 -----2.4.2. Proceso de migración .................................. 81 2.5. Taller de migración: análisis de casos de estudio .... 87 2.6. Actividades para el lector ...................................... 98 2.7. Otras fuentes de referencia e información .............. 99 3. Herramientas básicas para el administrador ........... 101 3.1. Herramientas gráficas y líneas de comandos .......... 102 3.2. Documentos de estándares .................................... 105 3.3. Documentación del sistema en línea ...................... 107 3.4. Shells y scripts ....................................................... 109 -----3.4.1. Shells interactivos ........................................ 111 -----3.4.2. Shells disponibles ........................................ 114 -----3.4.3. Variables de sistema .................................... 117 -----3.4.4. Programación scripts en Bash ...................... 118 3.5. Herramientas de gestión de paquetes ..................... 123 -----3.5.1. Paquete TGZ ............................................... 125 -----3.5.2. Red Hat: paquetes RPM ................................ 128 -----3.5.3. Debian: paquetes DEB ................................. 130 3.6. Herramientas genéricas de administración ............. 133 3.7. Otras herramientas ............................................... 134 3.8. Actividades para el lector ....................................... 135 3.9. Otras fuentes de referencia e información .............. 136 4. El kernel ..................................................................... 137 4.1. El kernel del sistema GNU/Linux ............................ 138 4.2. Personalizar o actualizar el kernel .......................... 146 4.3. Proceso de configuración y compilación ................. 150 4.4. Parchear el kernel .................................................. 156 4.5. Los módulos del kernel .......................................... 158 4.6. Futuro del kernel y alternativas .............................. 160 4.7. Taller: Configuración del kernel a las necesidades del usuario .............................. 163 -----4.7.1. Actualizar kernel en Debian .......................... 164 -----4.7.2. Actualizar kernel en Red Hat ......................... 166 -----4.7.3. Personalizar e instalar un kernel genérico ...... 168 4.8. Actividades para el lector ...................................... 171 4.9. Otras fuentes de referencia e información ............. 172 5. Administración local .................................................. 173 5.1. Distribuciones: particularidades .............................. 174 5.2. Niveles de arranque y servicios .............................. 176 5.3. Observar el estado del sistema .............................. 179 -----5.3.1. Arranque del sistema ................................... 179 -----5.3.2. Kernel: Directorio/proc ................................. 180 -----5.3.3. Procesos ...................................................... 182 -----5.3.4. Logs del sistema .......................................... 183 -----5.3.5. Memoria ..................................................... 184 -----5.3.6. Discos y filesystems ...................................... 185 5.4. Sistema de ficheros ................................................ 188 -----5.4.1. Puntos de montaje ....................................... 188 -----5.4.2. Permisos ..................................................... 192 5.5. Usuarios y grupos ................................................. 192 5.6. Servidores de impresión ......................................... 198 -----5.6.1. BSD LPD ...................................................... 203 -----5.6.2. LPRng .......................................................... 204 -----5.6.3.CUPS .......................................................... 206 5.7. Discos y gestión filesystems .................................... 209 5.8. Software: actualización .......................................... 211 5.9. Trabajos no interactivos ......................................... 212 5.10.Taller: prácticas combinadas de los diferentes apartados .................................... 213 5.11.Actividades para el lector ..................................... 223 5.12.Otras fuentes de referencia e información ............. 223 6. Administración de red ............................................... 225 6.1. Introducción a TCP/IP (TCP/IP suite) ....................... 225 -----6.1.1. Servicios sobre TCP/IP ................................. 226 -----6.1.2. ¿Qué es TCP/IP? ......................................... 228 -----6.1.3. Dispositivos físicos (hardware) de red ........... 230 6.2. Conceptos en TCP/IP ............................................ 232 6.3. ¿Cómo se asigna una dirección Internet? ............... 235 6.4. ¿Cómo se debe configurar la red? ......................... 239 -----6.4.1. Configuración de la interfaz (NIC, network interface controller) ......................... 239 -----6.4.2. Configuración del Name Resolver ................ 241 -----6.4.3. Configuración del routing ............................ 243 -----6.4.4. Configuración del inetd ............................... 244 -----6.4.5. Configuración adicional: protocols y networks ................................................... 246 -----6.4.6. Aspectos de seguridad ................................. 247 -----6.4.7. Opciones del IP ........................................... 249 6.5. Configuración del DHCP ....................................... 249 6.6. IP aliasing ............................................................. 251 6.7. IP Masquerade ...................................................... 252 6.8. NAT con el kernel 2.2 o superiores ........................ 253 6.9. ¿Cómo configurar una conexión DialUP y PPP? ...... 254 6.10.VPN (virtual private network) ................................. 255 6.11.Configuraciones avanzadas y herramientas .......... 257 6.12.Actividades para el lector ..................................... 265 7. Administración de servidores ................................... 267 7.1. Domain Name System (DNS) .................................. 268 -----7.1.1. Servidor de nombres caché .......................... 269 -----7.1.2. Forwarders .................................................. 272 -----7.1.3. Configuración de un dominio propio ............ 272 7.2. NIS (YP) ................................................................ 275 -----7.2.1. ¿Cómo iniciar un cliente local de NIS en Debian? ................................................. 276 -----7.2.2. ¿Qué recursos se deben especificar para utilizar en NIS? .................................... 278 -----7.2.3. ¿Cómo se debe ejecutar un master NIS server? ................................................. 279 -----7.2.4. ¿Cómo se debe configurar un server? ........... 280 7.3. Servicios de conexión remota: telnet y ssh ............... 281 -----7.3.1. Telnet y telnetd ............................................ 281 -----7.3.2. Ssh, Secure shell .......................................... 282 7.4. Servicios de transferencia de ficheros: FTP .............. 284 -----7.4.1. Cliente ftp ................................................... 285 -----7.4.2. Servidores FTP ............................................. 286 7.5. Servicios de intercambio de información a nivel de usuario ............................................................. 288 -----7.5.1. El Mail Transport Agent (MTA) ...................... 288 -----7.5.2. Internet Message Access Protocol POP (IMAP).... 289 -----7.5.3. News .......................................................... 291 -----7.5.4. World Wide Web (httpd) ............................... 292 7.6. Servicio de Proxy: Squid ......................................... 294 -----7.6.1. Squid como acelerador de http ..................... 295 -----7.6.2. Squid como proxy-caching ........................... 296 7.7. OpenLdap (Ldap) .................................................. 296 -----7.7.1. Creación y mantenimiento de la base de datos ...................................................... 300 7.8. Servicios de archivos (NFS) .................................... 301 7.9. Actividades para el lector ....................................... 303 8. Administración de datos ............................................ 305 8.1. PostgreSQL ........................................................... 306 -----8.1.1. ¿Cómo se debe crear una DB? ..................... 306 -----8.1.2. ¿Cómo se puede acceder a una DB? ............ 307 -----8.1.3. El lenguaje SQL ........................................... 308 -----8.1.4. Instalación PostgreSQL ................................. 311 -----8.1.5. Mantenimiento ............................................ 316 -----8.1.6. Pgaccess ..................................................... 317 8.2. Mysql .................................................................... 318 -----8.2.1. Instalación ................................................... 319 -----8.2.2. Postinstalación y verificación ......................... 320 -----8.2.3. El programa monitor (cliente) mysql .............. 321 -----8.2.4. Administración ............................................ 323 -----8.2.5. Interfaces gráficas ........................................ 324 8.3. Source Code Control System (CVS y RCS) ................ 325 -----8.3.1. Revision Control System (RCS) ...................... 326 -----8.3.2. Concurrent Versions System (CVS) ................ 328 -----8.3.3. Interfaces gráficas ........................................ 333 8.4. Actividades para el lector ....................................... 334 9. Administración de seguridad .................................... 337 9.1. Tipos y métodos de los ataques ............................. 338 -----9.1.1. Técnicas utilizadas en los ataques ................ 342 -----9.1.2. Contramedidas ........................................... 349 9.2. Seguridad del sistema ........................................... 354 9.3. Seguridad local ..................................................... 355 -----9.3.1. Bootloaders ................................................. 355 -----9.3.2. Passwords y shadows ................................... 357 -----9.3.3. Suid y sticky bits .......................................... 358 -----9.3.4. Habilitación de hosts ................................... 359 -----9.3.5. Módulos PAM .............................................. 360 -----9.3.6. Alteraciones del sistema ............................... 362 9.4. Seguridad en red .................................................. 363 -----9.4.1. Cliente de servicios ...................................... 363 -----9.4.2. Servidor: inetd y xinetd ................................ 363 9.5. Detección de intrusiones ........................................ 366 9.6. Protección mediante filtrado (wrappers y firewalls) .... 367 -----9.6.1. Firewalls ..................................................... 368 -----9.6.2. Netfilter: IPtables ......................................... 370 -----9.6.3. Paquetes de firewalls en las distribuciones .... 374 -----9.6.4. Consideraciones finales ............................... 375 9.7. Herramientas de seguridad ................................... 376 9.8. Analisis logs .......................................................... 379 9.9. Taller: análisis de la seguridad mediante herramientas ........................................................ 381 9.10.Actividades para el lector ..................................... 387 9.11.Otras fuentes de referencia e información ............. 388 10. Configuración, sintonización y optimización ......... 391 10.1. Aspectos básicos .............................................. 391 -----10.1.1. Monitorización sobre UNIX System V ..... 393 -----10.1.2. Optimizando el sistema ........................ 398 -----10.1.3. Optimizaciones de carácter general ...... 405 -----10.1.4. Configuraciones complementarias ........ 406 -----10.1.5. Monitorización ..................................... 411 10.2. Actividades para el lector ................................. 414 11. Clustering ............................................................... 415 11.1. Introducción al HPC ......................................... 415 -----11.1.1. Beowulf ............................................... 417 -----11.1.2. ¿Cómo hay que programar para aprovechar la concurrencia? ........ 420 11.2. OpenMosix ...................................................... 432 11.3. Metacomputers, grid Computing ........................ 435 -----11.3.1. Diferentes arquitecturas de cómputo ...... 435 -----11.3.2. Globus ................................................ 438 -----11.3.3. Software, instalación y administración de Globus ............................................ 441 -----11.4. Actividades para el lector .................................. 443 Bibliografía ..................................................................... 445 GNU Free Documentation License ................................. 459 DOWNLOAD Fin!! si lo bajas porfavor comenta que te parecio....
WinFF. Conversor de formatos de video en Ubuntu WinFF es una aplicación para Ubuntu de libre distribución que permite convertir un vídeo en diversos formatos. En realidad proporciona una interfaz gráfica a FFMPEG, una herramienta muy potente que permite la conversión de vídeo y que funciona en modo texto a través de la consola. Para instalar WinFF tenemos que instalar antes ffmpeg. Para ello abrimos la consola (Aplicaciones/Accesorios/Terminal) y escribimos: * sudo apt-get install ffmpeg A continuación descargamos el paquete de WinFF haciendo clic sobre el siguiente enlace: descarga de WinFF Una vez descargado, hacemos clic sobre el archivo que hemos bajado para instalarlo con el gestor de paquetes. Una vez instalado WinFF, lo encontraremos en el menú Aplicaciones/Sonido y vídeo/WinFF. El funcionamiento de WinFF es realmente sencillo, ya que dispone de una interfaz muy intuitiva. Haciendo clic sobre el botón “Add” añadiremos el vídeo que deseemos convertir. Una vez añadido, seleccionaremos el formato al que queremos convertirlo en “Convert To” y el directorio de salida en “Output Folder”. Después haremos clic en “Convert” para comenzar el proceso de conversión. WinFF permite la conversión a los siguientes formatos de vídeo: GP, AC3, FLV, H264, MPEG-2, MP4, DVD, SVCD, VCD, MOV y WMV. Fuente:http://www.alejandrox.com/