Clitec.org

Blog de Software Libre

Usa google... es más rápido y eficaz!


Algo de AWK

Estos dos días he leído algo acerca de sed y awk, que de alguna forma son similares, pero considero que awk es más amigable con  nosotros los usuarios mortales XD. Les quiero compartir algunas cosas que he aprendido de este “Lenguaje”

Para darle un uso similar al de cat sería algo maomenos así (trabajaremos con el archivo de contraseñas, está en /etc/passwd):

lyonn@debian:~$ awk ‘{ print NR, $0}’ /etc/passwd

Eso nos imprimirá todo el archivo password, como dije, tal y como hace cat, more, etc…

Como empiezan a darse cuenta, se parece mucho al lenguaje de programación C, [print y printf =)], el caso de $0 son los campos, y los representa la variable NF, que es igual al número de campos.

Antes de continuar con el archivo de passwords, veamos rápidamente como funciona un poco esto de los campos que no son más que cadenas de caracteres que no sean blancos, separados por blancos o tabuladores.

Para mostra usemos el comando who:

lyonn@debian:~$ who
lyonn    :0           2009-01-02 14:31

Esa es la salida estándar del comando who, si queremos únicamente el nombre del usuario, y la hora de conexión:

lyonn@debian:~$ who | awk ‘{ print $1, $4 }’
lyonn 14:31

Creo que todo queda claro con este ejemplo, así que podemos continuar con el archivo passwd.

Como comenté, awk tiene mucha semejanza con C, y ahora veamos con printf, que es una salida con formato, para ver muchas de las opciones basta con darle un man printf en la consola.

lyonn@debian:~$ awk ‘{ printf”%4d %s \n”, NR, $0 }’ /etc/passwd

Con esto observamos igualmente todo el contenido, con la diferencia  que pinta también los números de línea (campo)

lyonn@debian:~$ awk ‘{ printf”\t%s\n”, $0 }’ /etc/passwd

Con el comando anterior mostramos igualmente, pero con un tabulador al inicio del cada “registro”.

En awk también podemos usar patrones, al igual que con sed, pero eso será otro post.

Qué es AWK?

AWK Reference

Comandos Básicos II

Como ya se ha venido manejando, siempre se expone algo del manejo de la consola en los sistemas tipo Unix, yo les voy a poner algo acerca de sort, que es un comando para ordenación de resultados, considerado en “El entorno de programación Unix” un filtro importante, y eso es cierto. Aquí lo expondremos siempre como parte de un pipe

lyonn@lyonn-laptop:~$ ls | sort -f

Clasifica en orden alfabético, sin importar si son mayúsculas o minúsculas

lyonn@lyonn-laptop:~$ ls -s | sort -n

Con eso clasificamos los archivos más pequeños primero

lyonn@lyonn-laptop:~$ ls -s | sort -nr

Clasifica los archivos más grande primero

Eso es apenas lo que podemos hacer con sort, siempre hay cosas más complejas, pero es necesario tener la base para llegar hasta esos puntos…

un saludo

Scripting in Java

Este código es un poco útil para todos aquellos que se inician con la programación con bindings de java hacia algun lenguaje de scripting, como javascript o ruby.

Bien, les dejo el código, que lo único que nos dice es que “lenguajes de script” están en el classpath:

import java.util.List;
import javax.script.*;

class ScriptTest {

public static void main(String args[]) throws ScriptException

{
ScriptEngineManager sem = new ScriptEngineManager();
List<ScriptEngineFactory> factories = sem.getEngineFactories();
for(ScriptEngineFactory factory : factories)
{
System.out.println(”Nombre Engine: “+factory.getEngineName());
System.out.println(”Versión: “+factory.getEngineVersion());
System.out.println(”Nombre lenguaje: “+factory.getLanguageName());
System.out.println(”Versión del lenguaje: “+factory.getLanguageVersion());
}
}
}

La salida, debería verse maomenos como la siguiente:

Nombre Engine: Mozilla Rhino
Versión: 1.6 release 2
Nombre lenguaje: ECMAScript
Versión del lenguaje: 1.6

La teoría dice que todos los lenguajes de scripting dentro de java deben trabajar de una forma similar, esto especificado por JSR-223, ya que define una interfaz que cada lenguaje de scripting pueda utilizar.

El código stá por demás explicarlo, ya que está sumamente claro, si tienen una duda acerca de alguna clase, lean la API de Sun y quedará todo muy claro, es por eso que no agrego la explicación aquí.

SI quieren agregar más motores de scripting basta con ir a la página https://scripting.dev.java.net/servlets/ProjectDocumentList ; por ejemplo, en jruby extraén el jar de jruby/build y lo ponen en el CLASSPATH

Creo que es bastante interesante este aspecto de incluir scripting dentro de las aplicaciones Java, cierto????

Para la próxima les traigo un poco de como empezar a trabajar con esto y las ventajas que tenemos al hacerlo…

saludos y feliz año viejo

Googles o no Googles????

Hoy por casualidad me tope con lo que algunos llaman trucos de google, cosa que es una mentira, sólo son páginas distintas que usan el motor de éste y ponen su propaganda, entre ellos hay algunos curiosos, y otros también, pero no tiene que ver con google, por ejemplo: http://www.msdewey.com/ que es de Microsoft.

Los semejantes agoogle son:

ecoogler y ecoogler mexico

negrogle

googoth

Para hackers: google 1337

Para bsderos: google bsd

Para linuxeros!!!: google linux

google easter egg

Esos son entre otros, si no les veo a algunos una ayuda o algo útil a otros si, como el apartado para linux o bsd, ya que buscará lo referente al sistema operativo, sin necesidad de especificarlo explicitamente

saludos y es unamonada de este mundo XD

Comandos escenciales…

Esta es una lista de los comandos más utilizados..

Saber el tamaño de una carpeta/directorio:

  • Comando:du
  • significado: Disk Usage

ejemplo de uso:

#  du carpeta/directorio

Este comando solo, nos dice cuanto ocupa el directorio.

Opciones del comando:

  • -s nos muestra únicamente el total.
  • -a muestra lo que ocupan los archivos, ademas de los directorios.
  • -h hace el listado, indicando la unidad (human readable).

Uso:

# du -sh /home/clitec

Saber el espacio usado y el espacio disponible en una partición o directorio:

  • Comando: df
  • Significado:Disk free

Opciones:

  • -h lo hace legible (human redeable).
  • -i información de los i-nodos
  • -k  mostrar los tamaños en bloques de kilo-bytes.
  • -m mostrar los tamaños en bloques de mega-bytes.

Uso:

# df -hm /home/clitec

JIDE COMMON LAYER

JIDESoft, creadora de la de las librerías más utiles de componentes para swing, ha hecho OpeSource su suite JIDE COMMON LAYER. Este cambio no es nuevo, ya tienen algunos meses así, para ser exáctos desde abril del 2007.

JIDE COMMON LAYER tiene casi 100 k de líneas de código, en 30 componentes. Hay algunos demos que pueden interesarles, además de una documentación.

Los features son los siguientes:

Features

UI Components

JideTabbedPane - an extended version of JTabbedPane supporting different tab shapes, color themes, shrinkable tabs, close button on tab, editable tab etc.
JideSplitPane - an extended version of JSplitPane supporting multiple splits (JSplitPane can only have two splits)
JideButton - an ideal replacement for a toolbar button
JideSplitButton - a composite component which is a combination of a button and a popup menu
Searchable JList, JTree, JComboBox and JTable - type in any text to quickly find matching rows, tree nodes, or table cells
SearchableBar - as seen in Mozilla Firefox
ResizablePanel, ResizableWindow and undecorated ResizableDialog
FolderChooser - allows you to choose a folder
RangeSlider - a slider which allows you to select two values to form a range
JideScrollPane - column and row footer support for JScrollPane
SimpleScrollPane - a scroll pane having four scroll buttons on the four sides.
Overlayable - to put a component on top of another component at a specified location in order to provide a hint about how to use a component, to provide a progress indicator or to provide a status indicator beside a component without affecting the existing layout.
AutoResizingTextArea - a text area that can automatically resize its height to fit in the content.
StyledLabel - A JLabel that support different fonts, colors, and decorative lines.
CheckBoxList and CheckBoxTree - use check boxes inside JLists and JTrees.
Calculator Component
DateSpinner and PointSpinner
Popup - support any popup window
AutoCompletion and IntelliHints
StandardDialog - built on top of JDialog to support common used dialog standards as well as adding missing standard features of any dialogs.
ButtonPanel - arrange buttons in different layouts with different gaps based on OS conventions
Pre-built panels such as BannerPanel
AbstractPage - lazy loading panel with page events (open, closing, closed, etc.), an ideal panel for building dialogs

Utility Classes

IconFactory - simplify and unify the usage of icons across the whole application
SystemInfo - a utility class which can be used to retrieve information about the current system, including OS name and version, JDK version requirement, etc.
A fast gradient paint method in JideSwingUtilities. By leveraging DirectDraw, the fast gradient paint is 2 to 40 times faster than normal GradientPaint.

En su página oficial pueden observar mucha información, como la toma de pantalla de algunos controles que seguramente implementan la funcionalidad que ustedes pudiesen llegar a usar

Si les interesa pueden darse una vuelta a su página oficial

saludos y esperamos que a alguien le sirva esta información

Egipto sin Internet

Hola a todos, leyendo el periodico este fin de semana me encuentro con que Egipto perdió sus conexiones a Iner, esto por la ruptura de cables submarinos, para ser exáctos, son tres.

Esta ruptura no sólo afecta a Egipito, sino a otros paises de oriente medio. Como es obvio, no sólo el servicio se ha afectado (se calcula un 80%), sino también incluye a las comunicaciones por teléfono.

Estos problemas no son nuevos, pero por ahora los técnicos está trabajando y están deviando por el super mar rojo.

saludos y valoren su conexión jajaja

grep, egrep y fgrep >> filtros

Hola a todos, hoy se ha dado la oportunida de escribir algo, y lo haré de los “programas” que nos facilitan mucho la vida, cuando tenemos una consola y una infinidad de datos posibles y no tan posibles y sólo uno es el que buscamos. O el caso contario, buscamos para no encotrar algo, así que algunos ya tienen un nombre para esta acción: filtros

La familia grep

La forma más básica de grep es:

$grep patron archivo

Con lo anterior imprimiremos cada línea que coincida con el patrón asociado. Con grep como herramienta nos ahorraremos muchos dolores de cabeza, ya que permite encontrar ocurrencias dentro de documentos, también sirve para discriminar la salida de los programas.

Por ejemplo:

lyonn@debian:~$ grep bin $PATH

Nos muestra todas las ocurrencias de “bin”, aúnque aún podemos especificar lo contrario, es decir, todo aquello que no coincida, por ejemplo:

lyonn@debian:~$ ls | grep -v terminos

Existen opciones o parámetros que puede recibir grep, como v (todo aquel que no sea), n (número de línea), etc.

El punto de esto no es enseñar a usar grep, egrep o fgrep, ya que sería necesario mucho más que un post para hacerlo. El objetivo primario es explicar las diferencias.

Como todo el mundo sabe, grep puede utilizar expresiones regulares, como por ejemplo:

* Lo que sea

^ Todo aquello que inicie con

Un ejemplo es:

lyonn@debian:~$ ls -l | grep ‘^d’
” fgrep busca muchas cadenlas literales simultaneamente, mientras que egrep interpreta regex verdaderas, lo mismo que grep, pero con un operador “o” y un paréntesis para agrupar expresiones que se que aplican más adelante.

Tango fgrep como egrep aceptal el parámetro -f para especificar un archivo del cual leer la información. EN el archivo, las nuevas-líneas separan los patrones que deben buscarse en paralelo. Por ejemplo, si hay palabras que se escribieron incorrectamente, puede verificarse su ocurrencia manteniendolas en un archivo;

lyonn@debian:~$ fgrep -f documento

Las expresiones regulares interptretadas por egrep son las mismas que grep, con un par de adiciones. Los paréntesis pueden utilizarse para agrupar. Hay dos operadores de cerradura con egrep, como son + y ?. El patron x+ reconoce una o más x y x? reconoce cero o una x, pero jamás varias.

egrep es excelente en juegos de palabras que consiste en buscar en el diccionario de palabras con propiedades especiales.

Podemos servirnos de grep, pero egrep es más rápido para la busqueda de palabras, sobre todo cuando contiene patrones con cerraduras, en especial en archivos enormes.

Ahora viene la pregunta, Por qué existen tres comandos similares?? fgrep no interpreta ningun metacarácter, pero podemos buscar miles de palabras en paralelo (una vez inicializado, el tiempo de ejecución no depende de el número de palabras), de ahí que se use principalmente para busquedas bibliográficas. El tamaño típico de los patrones de fgrep rebasa la capacidad de los algoritmos de egrep y grep. Las diferencias entre egrep y grep son más difíciles de justificar; grep se inventó mucho antes, se sirve de espresiones servidas de ed y tiene expresiones regulares marcadas y un conjunto de opciones más amplio. egrep interpreta expresiones más generales (salvo el marcado) y corre mucho más rápido (con una velocidad independiente del patrón), pero la versión estándar tarda más en empezar cuando la expresión es complicada.”

Esta es una pequeña tabla de regex de grep y egrep (Por orden decreciente de procedencia)

c cualquier caracter no especial “c” concuerda a sí mismo
\c cancela cualquier significado especial del carácter “c”
^ inicio de línea
$ final de línea
. cualquier carácter individual
[...] cualquiera de los carácteres en …; los rangos, como a-z, 0-9, etc
[^...] cualquier carácter individual que no se encuentre en …; los rangos son válidos
\n lo que concordó con el n-ésimo \(…\)(grep solamente)
r* cero o más ocurrencias de r
r+ una o más ocurrencias de r (egrep solamente)
r? cero o más ocurrencias de r (egre solamente)
r1r2 r1 seguida de r2
r1|r2 r1 o r2 (egrep solamente)
\r(r\) expresión regular marcada r ( solamente grep) puede ser una expresión regular anidada (egrep solamente); puede anidarse
(r) ninguna expresión regular marcada corresponde con una nueva línea

Bueno, pues espero que eso les haya servido de algo, l.a información la obtuve del manual de programación de Unix, un saludo y gracias por su lectura

Depuración


Hola que tal…

Perdonen las ausencias tan prolongadas del equipo de clitec, pero es que el trabajo está hasta el cuello, sin embargo, nos hemos dado un poco de tiempo para escribir algo, que a nuestro parecer es indispensable para todo aquel que guste programar.

Muchas personas que programan en C, al menos me nombro a mi, no habían usado un depurador para C, porque usamos un IDE bastante completo (como NetBeans) o simplemente por revisar el código e irlo modificando donde creemos que está el problema.

Para los que usamos un editor de texto común y una consola, la tarea de depurar aparentemente difícil, cosa que es totalmente falsa.

Buscando un poco me encontré con un depurador basto en documentación y potente a la hora trabajar con el. Imagino que muchos ya se dieron cuenta de quien hablo, así es, no es nada más y nada menos que gdb. Cuenta con breakpoints, por ejemplo, que son interrupciones marcadas donde se detendrá la ejecución del programa, son establecidos por el programador. También cuenta con con “paso-a-paso”, que es donde muestra el flujo completo de ejecución. Como dije, existen muchos features, pero quedan al interes de ustedes, por lo extensos que son.

Cabe destacar que las opciones son múltiples, así que sólo comentaré lo más básico.

Cuando compilen deben pasarle el parámetro de -g, esto para brindarle la información que necesitamos para depurar, además de -O0, para NO optimizar el código, ya que se puede persentar los famosos inlines, que son atendidos como código, y no como una llamada a función.

La cosa maomenos furula así, en la cosola:

gdb tu_compilado

Después aparecerá un prompt de gdb, al cual se le da:

run [parámetros comunes del programa]

Los parámetros son en caso de que el ejecutable los use.

Para los breakpoint usamos:

backtrace

Para ejecutar cada instrucción usamos:

next

o

step

Este último para entrar a las subrutinas y no sólo a las llamadas.

Para pintar el valor de las variable spodemos usar:

print variable

Existe otra aplicación sencilla para poder ver las sys call o llamdas de sistema.

Para ver las opciones pueden usar un man strace, o escribir solamente strace en
la consola para que muestre las opciones, en general funciona así:

$ strace tu_ejecutable

Saludos y espero que les sirva la información que hoy presentamos

Nuevo hosting

HOla

Un saludo grande a todos, pues bien….

Clitec.org cuenta con hosting propio :D yeah!!!!

Con algo de esfuerzo y trabajo pudimos obtenerlo, solo espero que esto sirva como un motivo para echarle todas las ganas y que más gente se acerque a queres participar y colaborar.

Un saludo.


Clitec.Org


Galaxia Linux
PageRank Checking Icon