elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


  Mostrar Temas
Páginas: 1 2 [3] 4 5 6 7 8 9 10
21  Programación / Scripting / [Bash] TODO list en: 14 Junio 2011, 23:12 pm
Hola a todos, acabo de hacer esta pequeña herramienta, es un script en Bash que me sirve para tener una lista organizada de lo que tengo que hacer, y pues como paso un 30% de mi tiempo en la consola, pues me es de gran utilidad y quiero compartirlo.

todo.sh
Código
  1. #!/bin/bash
  2.  
  3. #===============================================================================
  4. #
  5. #          FILE:  todo.sh
  6. #
  7. #         USAGE:  ./todo.sh OPTIONS
  8. #
  9. #   DESCRIPTION:  TODO List, nos permite hacer anotaciones sobre acciones que haremos en un futuro.
  10. #
  11. #       OPTIONS:  ./todo -h|H
  12. #  REQUIREMENTS:  ---
  13. #          BUGS:  ---
  14. #         NOTES:  ---
  15. #        AUTHOR: Leo Gutiérrez R. (), leorocko13@hotmail.com | leogutierrez@elhacker.net
  16. #       COMPANY:
  17. #       CREATED: 13/06/11 16:45:05 MDT
  18. #      REVISION:  ---
  19. #===============================================================================
  20.  
  21. FILE=~/.todo/todo
  22.  
  23. source functions
  24. # Checar que exista la carpeta y archivo de lista.
  25.  
  26. [ ! -d ~/.todo ] && {
  27. ask "No existe la carpeta, desea crearla ?" && {
  28. mkdir ~/.todo
  29. echo -e "Creando archivo \"todo\" en ~/.todo";
  30. touch ~/.todo/todo
  31. } || {
  32. echo -e "Saliendo . . .";
  33. exit 0
  34. }
  35. }
  36.  
  37. [ $# = 0 ] && usage;
  38.  
  39. while getopts “hHr:R:lLn:N:d:D:be:E:g:G:kKs:S:” OPTION
  40. do
  41.     case $OPTION in
  42.         h|H)
  43.             usage
  44.             exit 1
  45.             ;;
  46.         n|N)
  47.             TEST=$OPTARG
  48.  
  49.             # Actualizar el archivo :
  50.             updateList;
  51.  
  52.             #echo -e "Opción n, valor : ${TEST}";
  53.             echo -e "$(tput bold)$(tput setaf 2)TODO : [$[ $(cat $FILE | wc -l) + 1 ]] ${TEST}";
  54.             echo -e "[$[ $(cat $FILE | wc -l) + 1 ]] ${TEST}" >> $FILE
  55.             tput sgr0;
  56.             exit 0;
  57.             ;;
  58.  
  59.         g|G)
  60.  
  61. (( $OPTARG > $(cat $FILE | wc -l) )) && {
  62. echo -e "$(tput bold)$(tput setaf 1)ERROR, tarea inexistente, consulte las tareas con -L ó -l"
  63. tput sgr0;
  64. exit 1;
  65. }
  66.  
  67. read -p "Texto : " texto
  68.  
  69. sed -i "${OPTARG}s/^\(.*\)$/\1 $texto/g" $FILE
  70. updateList;
  71.  
  72. exit 0;
  73.  
  74. ;;
  75.  
  76.         d|D)
  77.  
  78.             # Cercionarnos que elija una TODO hecha.
  79.  
  80.             (( $OPTARG > $(cat $FILE | wc -l) )) && {
  81. echo -e "$(tput bold)$(tput setaf 1)ERROR, tarea inexistente, consulte las tareas con -L ó -l"
  82. tput sgr0;
  83. exit 1;
  84. }
  85.  
  86.             sed -i "${OPTARG}d" $FILE
  87.             updateList;
  88.  
  89.             exit 0;
  90.  
  91.             ;;
  92.  
  93.         k|K)
  94.  
  95.         [ ! -e ~/.todo/todo ] && {
  96. echo -e "$(tput bold)$(tput setaf 1)No existe el archivo \"todo\" en ~/.todo/";
  97.  
  98. ask "Desea crearlo? " && {
  99. touch $FILE
  100. }
  101. tput sgr0;
  102. exit 1;
  103. }
  104.  
  105. cp $FILE ${FILE}.bkp
  106. echo -e "\n$(tput bold)$(tput setaf 1)Archivo de respaldo creado\n";
  107. tput sgr0;
  108. exit 0;
  109.  
  110. ;;
  111.         r|R)
  112.  
  113.             (( $OPTARG > $(cat $FILE | wc -l) )) && {
  114. echo -e "$(tput bold)$(tput setaf 1)ERROR, tarea inexistente, consulte las tareas con -L ó -l"
  115. tput sgr0;
  116. exit 1;
  117. }
  118.  
  119. read -p "Texto : " texto
  120.  
  121. # Detectar status
  122. sed -n "${OPTARG}p" $FILE | grep "^\[.*\] \[.*\] " &> /dev/null && {
  123. sed -i "2s/.*\(\[.*\]\)\s\(\[.*\]\)\s\(.*\)/\1 \2 $texto/g" $FILE
  124. } || {
  125. sed -i "${OPTARG}s/.*\(\[.*\]\)\s\(.*\)/\1 $texto/g" $FILE
  126. }
  127. updateList;
  128.  
  129. exit 0;
  130.  
  131.             ;;
  132.  
  133.         # -lL Mostrar, listar tareas.
  134.         l|L)
  135.  
  136. (( $(cat $FILE | wc -l) == 0 )) && {
  137. echo -e "$(tput bold)$(tput setaf 1)TODO List vacía, agregue nuevas tareas.";
  138. tput sgr0;
  139. exit 0;
  140. }
  141.  
  142. updateList;
  143.  
  144. while read line
  145. do
  146. echo -e "$(tput bold)$(tput setaf 1)${line}";
  147.  
  148. done < $FILE
  149.  
  150. tput sgr0;
  151.  
  152. exit 0;
  153. ;;
  154.  
  155. b|B)
  156.  
  157. ask "$(tput bold)$(tput setaf 1)Esto borrará todas las tareas, desea continuar? " && {
  158. sed -i '1,$d' $FILE
  159. }
  160.  
  161. tput sgr0;
  162. exit 0;
  163. ;;
  164.  
  165. s|S)
  166.  
  167. (( $(cat $FILE | wc -l) == 0 )) && {
  168. echo -e "$(tput bold)$(tput setaf 1)TODO List vacía, agregue nuevas tareas.";
  169. tput sgr0;
  170. exit 0;
  171. }
  172.  
  173. read -p "Estado de tarea : " status
  174.  
  175. sed -n "${OPTARG}p" $FILE | grep "^\[.*\] \[.*\] " &> /dev/null && {
  176.  
  177. sed -i "${OPTARG}s/.*\(\[.*\]\)\s\(\[.*\]\)\s\(.*\)/\1 [$status] \3/g" $FILE
  178.  
  179. } || {
  180.  
  181. sed -i "${OPTARG}s/^\(\[.*\]\)\s\(.*\)$/\1 [$status] \2/g" $FILE
  182.  
  183. }
  184.  
  185. ;;
  186.  
  187.         ?)
  188.             usage
  189.             exit
  190.             ;;
  191.     esac
  192. done
  193.  

functions
Código
  1. function usage()
  2. {
  3. tput bold
  4. tput setaf 6
  5. cat << EOF
  6. Uso: $0 options
  7.  
  8. TODO List v1.0 | leorocko13@hotmail.com
  9.  
  10. OPTIONS:
  11.    
  12.    -h|H        Muestra este mensaje
  13.    -n|N [#TAREA]    Nueva tarea
  14.    -l|L          Listar tareas
  15.    -d|D [#TAREA]    Eliminar tarea
  16.    -r|R [#TAREA]    Reemplazar tarea
  17.    -b|B            Borrar todas las tareas
  18.    -g|G [#TAREA]    Agregar a una tarea
  19.    -k|K            Crear respaldo de tareas
  20.    -s|S [#TAREA]    Agregar estado de la tarea
  21.    
  22. EOF
  23. tput sgr0;
  24. }
  25.  
  26. function ask()
  27. {
  28. echo -n "$@" '[y/n] ';
  29. read ans;
  30. case "$ans" in
  31. y*|Y*)
  32. return 0 ;;
  33. *)
  34. return 1 ;;
  35. esac
  36. }
  37.  
  38. # Detectar status
  39. # sed -n "${OPTARG}p" $FILE | grep "^\[.*\] \[.*\] " &> /dev/null && {
  40. # sed -i "2s/.*\(\[.*\]\)\s\(\[.*\]\)\s\(.*\)/\1 \2 $texto/g" $FILE
  41. # } || {
  42. # sed -i "${OPTARG}s/.*\(\[.*\]\)\s\(.*\)/\1 $texto/g" $FILE
  43. # }
  44.  
  45. function updateList()
  46. {
  47. rm -f /tmp/todo_temp
  48.  
  49. # Checamos si la lista no está vacía.
  50. (( $(cat $FILE | wc -l) == 0 )) && {
  51. return;
  52. }
  53.  
  54. ((contador = 1));
  55. while read line
  56. do
  57. echo -e "$line" | grep "^\[.*\] \[.*\] " &> /dev/null && {
  58. echo -e "[$contador] $(echo -e "$line" | sed "s/^\(\[.*\]\)\s\(\[.*\]\)\s\(.*\)/\2 \3/g")" >> /tmp/todo_temp
  59. } || {
  60. echo -e "[$contador] $(echo -e "$line" | sed "s/^\(\[.*\]\)\s\(.*\)/\2/g")" >> /tmp/todo_temp
  61. }
  62. ((contador++));
  63. done < $FILE
  64.  
  65. cp /tmp/todo_temp $FILE
  66.  
  67. }

Aquí algunas capturas:
22  Programación / Scripting / MOVIDO: Problema javascript una multiplicación me da un número periodico. en: 17 Mayo 2011, 07:26 am
El tema ha sido movido a Desarrollo Web.

http://foro.elhacker.net/index.php?topic=327884.0
23  Programación / Programación General / Libreria reconocimiento de voz. en: 25 Abril 2011, 23:16 pm
Hola a todos.

¿Alguno ha usado alguna vez una libreria que maneje reconocimiento de voz?, ¿cuál?, es para un proyecto de titulación de la universidad, aún falta mucho, pero me gustaría ir desarrollándolo. Ya sea que la librería esté en C/C++, preferentemente.

Saludos.
24  Programación / Scripting / [Bash] Mis scripts en: 18 Abril 2011, 02:50 am
Eston son algunos de los scripts que uso a diario, bueno, no a diarion, pero son de uso personal, los dejo para ver si a alguien le sirven, que los prueben y vean qué modificaciones se les puede hacer.

space
Código
  1. #!/bin/bash
  2. # Leo Gutiérrez R. leorocko13@hotmail.com
  3. # Script que comprime todos los archivos en el directorio actual.
  4. # Util para hacer espacio en dispositivos extraíbles.
  5. # Uso personal.
  6. find . -type f | while read file
  7. do
  8. extension=`echo "${file}" | awk -F . '{print $NF}'`;
  9. echo -e "$extension" | grep -ie "^\(rar\|Z\|7z\|bz2\|zip\|gz\)$" &> /dev/null && continue;
  10. rar a "${file}.rar" "$file" -y -df
  11. done
  12.  

usb

Código
  1. #!/bin/bash
  2. # Leo Gutiérrez R.
  3. # Script para navegar por sobre los dispositivos USB en el sistema.
  4. # Uso personal.
  5. select archivo in `ls -1 /media/ | grep -v "^cd$" | grep -v "^dvd$" | grep -v "^fl$" | grep -v "^ubuntu$" | grep -v "^windows$"`
  6. do
  7. if [ -n "$archivo" ]
  8. then
  9. cd /media/"$archivo"
  10. break;
  11. else
  12. echo -e "Error eligiendo dispositivo";
  13. exit 1;
  14. fi
  15. done

cdprompt

Código:
[leo@archero ~]$ cdprompt 
1) amsn_received/       9) drivers_tia_de_valeria/  17) Musica/        25) Software/
2) bash/      10) escuela/   18) NetBeansProjects/        26) Textos/
3) cpps/      11) guitar/   19) perl/        27) visual/
4) c_proyects/      12) Imagenes/   20) projects/        28) yare/
5) Descargas/      13) java/   21) proyectos/        29) SALIR
6) Desktop/      14) linux/   22) python/
7) Downloads/      15) maiesecuele/   23) respaldo_usb_papa/
8) drivers_cesar/      16) *****/   24) revistas/
>

Código
  1. #!/bin/bash -
  2. #===============================================================================
  3. #
  4. #          FILE:  cdprompt.sh
  5. #
  6. #         USAGE:  ./cdprompt.sh
  7. #
  8. #   DESCRIPTION:  Cambio de directorios interactivamente.
  9. #
  10. #       OPTIONS:  ---
  11. #  REQUIREMENTS:  ---
  12. #          BUGS:  ---
  13. #         NOTES:  ---
  14. #        AUTHOR: |Leo Gutiérrez R.| (), |leorocko13@hotmail|
  15. #       COMPANY:
  16. #       CREATED: 02/26/2011 01:51:28 AM CST
  17. #      REVISION:  ---
  18. #===============================================================================
  19.  
  20. select directorio in */ "SALIR"
  21. do
  22. if [ "$directorio" = "SALIR" ]
  23. then
  24. break;
  25. elif [[ -n "$directorio" ]]
  26. then
  27. cd "$directorio"
  28. break;
  29. else
  30. echo -e "\aError de opción.";
  31. break;
  32. fi
  33. done
  34.  

rmsecure
Script de borrado interactivo, muestra qué archivos eliminar en el directorio local:

Código:
1) C_Plus_Plus_Varios_Libros.rar  5) PKGBUILD
2) Diagrama_EDGAR.mwb   6) src
3) pacman-3.5.1   7) SALIR
4) pacman-3.5.1.tar.gz
>

Código
  1. #!/bin/bash
  2. # Script de borrado interactivo.
  3. # Leo Gutiérrez Ramírez. leorocko13@hotmail.com
  4.  
  5. function rmsecure()
  6. {
  7.  
  8. select archivos in * "SALIR"
  9. do
  10. if [ "${archivos}" = "SALIR" ]
  11. then
  12.  
  13. exit 0;
  14.  
  15. elif [[ -n "${archivos}" ]]
  16. then
  17.  
  18. sudo rm -rvi "${archivos}" || {
  19. echo -e "Error borrando archivo : ${archivos}";
  20. exit 0;
  21. }
  22.  
  23. clear;
  24. rmsecure;
  25.  
  26. else
  27.  
  28. echo -e "Error eligiendo archivo.";
  29.  
  30. fi
  31.  
  32. done
  33. }
  34.  
  35. clear;
  36. rmsecure;
  37.  

unins.sh
Script para ArchLinux, muestra los paquetes para elegir cuál desinstalar, todo a través de una pequeña interfaz.


Código
  1. #!/bin/bash
  2.  
  3. [ ${UID} != 0 ] && {
  4. echo -e "Se requieren privilegios de Root";
  5. exit 1;
  6. }
  7.  
  8. pacman -Qei | sed -n "s/^Name.*\:\s\(.*\)/\1/p" > nombres.txt
  9. pacman -Qei | sed -n "s/^Version.*\:\s\(.*\)/\1/p" > versiones.txt
  10.  
  11. Xdialog --title "Desinstalar paquetes" --menu "Elija su paquete:" 24 51 6 $(paste nombres.txt versiones.txt) 2> /tmp/menu.tmp.$$
  12.  
  13. retval=$?
  14. choice=`cat /tmp/menu.tmp.$$`
  15. rm -f nombres.txt
  16. rm -f versiones.txt
  17. rm -f /tmp/menu.tmp.$$
  18.  
  19. case "$retval" in
  20.  1)
  21.    exit 0;
  22.    ;;
  23.  255)
  24.    exit 0;
  25.    ;;
  26. esac
  27.  
  28. yes | pacman -R "${choice}" && {
  29. Xdialog --title "Desinatalar paquetes" --msgbox "${choice} desinstalado con éxito." 10 100
  30. } || {
  31. Xdialog --title "Desinatalar paquetes" --msgbox "${choice} no se pudo desinstalar." 10 100
  32. exit 1;
  33. }
  34.  
  35. exit 0;
  36.  

sc

Código
  1. #!/bin/bash
  2. # Leo Gutiérrez R.
  3. # Script para comprobar si un proceso está corriendo.
  4.  
  5. [ $# -ne 1 ] && {
  6. cat <<EOF
  7.  
  8. `basename $0` service
  9.  
  10. EOF
  11. exit 1;
  12. }
  13.  
  14. [ -f "/var/run/daemons/$1" ] && {
  15. echo -e "\"$1\" running.";
  16. } || {
  17. echo -e "\"$1\" stopped.";
  18. }
  19. exit 0;
  20.  

modins


Código
  1. #!/bin/bash
  2. # Script para instalar paquetes en Perl.
  3.  
  4. function getch()
  5. {
  6. OLD_STTY=`stty -g`
  7. stty cbreak -echo
  8. look=`dd if=/dev/tty bs=1 count=1 2>/dev/null`
  9. stty $OLD_STTY
  10. }
  11.  
  12. function installModule()
  13. {
  14. sudo perl Makefile.PL
  15. sudo make
  16. sudo make test
  17. sudo make install
  18. }
  19.  
  20. function modins()
  21. {
  22. archivo=
  23. select archivo in *.tar.gz "SALIR"
  24. do
  25. if [ "${archivo}" = "SALIR" ]
  26. then
  27.  
  28. exit 0;
  29.  
  30. elif [[ -n "${archivo}" ]]
  31. then
  32.  
  33. echo -e "Elegiste : ${archivo}";
  34. tar zxvf "${archivo}" &> /dev/null || {
  35. echo -e "Error descomprimiendo [ ${archivo} ]";
  36. exit 1;
  37. }
  38.  
  39. cd "${archivo%\.tar.gz}" 2> /dev/null || {
  40. echo -e "\aError abriendo directorio ${archivo%%.*}";
  41. exit 1;
  42. }
  43.  
  44. installModule;
  45.  
  46. echo -e "\E[31;47mMódulo instalado. Presione una tecla para continuar.";
  47. tput sgr0;
  48. getch;
  49. break;
  50.  
  51. else
  52.  
  53. echo -e "Error eligiendo archivo.";
  54. exit 0;
  55.  
  56. fi
  57.  
  58. done
  59. }
  60.  
  61. modins;
  62. exit 0;
  63.  

Saludos.
25  Programación / Java / Agregar array de checkbox a JDialog en: 14 Abril 2011, 00:52 am
Hola a todos, estoy teniendo un problema, desde un JFrame, abro un JDialog, y trato de agregarle algunos JCheckBox, pero siempre se queda con el último.

Lo que intento es agregar múltiples JcheckBox a un JDialog, pero que todos se puedan seleccionar, no solo uno.

¿Alguien me puede ayudar?

¿cómo puedo seleccionar varios jcheckbox?
26  Comunicaciones / Redes / Duda básica en: 21 Febrero 2011, 23:41 pm
Hola, qué tal, estoy desarrollando un script que se encarga de setear un tipo de conexión. Tengo que hacer un script que dada una IP me devuelva algunas datos.

La sintaxis del programa que estoy haciendo es esta:
Código
  1. script -r estatica 172.26.0.35

-r : estática o dinámica
y la ip

Por ejemplo, yo teniendo la IP 172.26.0.35, cómo debería ser la "network", "broadcast", "gateway", "address", "gateway", "netmask", es decir, ¿cómo cambiarían de acuerdo a la IP dada?


Esto lo necesito porque editaré un archivo, concretamente el archivo "/etc/network/interfaces".

¿Y cómo sería para una red dinámica?

27  Sistemas Operativos / GNU/Linux / Problema Arch, GRUB en: 22 Enero 2011, 00:35 am
Hola a todos, acabo de instalar Arch Linux, pero tengo problemas para instalar el GRUB.

Instalé Arch en el segundo disco, en hd1, pero no puedo bootear. Al elegir Arch Linux en el menú del GRUB me da un error 17.

Ya intenté editando a hd1 0, hd1 1, hd1 2, etc, etc, pero no he podido.

¿Alguien sabe de esto?

EDITO:

Segùn gparted, el dispositivo /dev/sdb1 tiene el boot.
Código
  1. ubuntu@ubuntu:/mnt$ sudo grub-install /dev/sdb
  2. Could not find device for /boot: Not found or not a block device.
  3. ubuntu@ubuntu:/mnt$
  4.  
  5.  

Código
  1. ubuntu@ubuntu:/mnt/dev$ sudo fdisk -l
  2.  
  3. Disco /dev/sda: 40.0 GB, 40020664320 bytes
  4. 255 cabezas, 63 sectores/pista, 4865 cilindros
  5. Unidades = cilindros de 16065 * 512 = 8225280 bytes
  6. Identificador de disco: 0xda130d5b
  7.  
  8. Disposit. Inicio    Comienzo      Fin      Bloques  Id  Sistema
  9. /dev/sda1   *           1        1785    14337981    7  HPFS/NTFS
  10. /dev/sda2            1786        4865    24740100    5  Extendida
  11. /dev/sda5            1786        4732    23671746   83  Linux
  12. /dev/sda6            4733        4865     1068291   82  Linux swap / Solaris
  13.  
  14. Disco /dev/sdb: 80.0 GB, 80026361856 bytes
  15. 255 cabezas, 63 sectores/pista, 9729 cilindros
  16. Unidades = cilindros de 16065 * 512 = 8225280 bytes
  17. Identificador de disco: 0x906776e1
  18.  
  19. Disposit. Inicio    Comienzo      Fin      Bloques  Id  Sistema
  20. /dev/sdb1   *           1          20      160618+  83  Linux
  21. /dev/sdb2              21          59      313267+  82  Linux swap / Solaris
  22. /dev/sdb3              60        1016     7687102+  83  Linux
  23. /dev/sdb4            1017        9729    69987172+  83  Linux
  24. ubuntu@ubuntu:/mnt/dev$
  25.  
28  Programación / Scripting / [BASH] Script instalación de módulos Perl en: 12 Enero 2011, 01:39 am
Hola, acabo de hacer este script para la instalación de módulos en Perl.

El script checa si el módulo está instalado, sino lo está pregunta si se quiere instalar dicho módulo, si sí se quiere instalar, descarga el módulo desde CPAN y lo instala normalmente.


Código
  1. #!/bin/bash
  2. # Leo Gutiérrez R. leorocko13@hotmail.com
  3. [ ${UID} != 0 ] && {
  4. echo -e "Se requieren privilegios de Root";
  5. exit 1;
  6. }
  7.  
  8. MODULE_NAME="Math::BigInt::Random";
  9. URL_MODULE="http://search.cpan.org/CPAN/authors/id/B/BI/BILLH/Math-BigInt-Random-0.04.tar.gz";
  10. PATH_MODULE="Math-BigInt-Random-0.04.tar.gz";
  11.  
  12. perl -M${MODULE_NAME} -e 1 2> /dev/null || {
  13. echo -e "\aEl módulo no existe\n¿Desea instalarlo:?";
  14. opciones="Sí No";
  15. select opt in ${opciones}
  16. do
  17. if [ "${opt}" = "Sí" ]
  18. then
  19.  
  20. wget "${URL_MODULE}";
  21. tar zxvf "${PATH_MODULE}";
  22. cd "${PATH_MODULE%\.tar.gz}" 2> /dev/null || {
  23. echo -e "\aError abriendo directorio ${1%%.*}";
  24. exit 1;
  25. }
  26. perl Makefile.PL
  27. make
  28. make test
  29. make install
  30. exit 0;
  31.  
  32. elif [ "${opt}" = "No" ]
  33. then
  34.  
  35. echo -e "\aLa instalación del módulo es necesaria";
  36. exit 1;
  37.  
  38. fi
  39. done
  40. }
  41.  

Código
  1. leo@leo-desktop:~/Escritorio$ sudo bash shell.sh
  2. El módulo no existe
  3. ¿Desea instalarlo:?
  4. 1)
  5. 2) No
  6. #? 1
  7. --2011-01-11 17:30:26--  http://search.cpan.org/CPAN/authors/id/B/BI/BILLH/Math-BigInt-Random-0.04.tar.gz
  8. Resolviendo search.cpan.org... 207.115.101.144, 194.106.223.155
  9. Conectando a search.cpan.org|207.115.101.144|:80... conectado.
  10. Petición HTTP enviada, esperando respuesta... 302 Found
  11. Ubicación: http://www.msg.com.mx/CPAN/authors/id/B/BI/BILLH/Math-BigInt-Random-0.04.tar.gz [siguiente]
  12. --2011-01-11 17:30:26--  http://www.msg.com.mx/CPAN/authors/id/B/BI/BILLH/Math-BigInt-Random-0.04.tar.gz
  13. Resolviendo www.msg.com.mx... 200.33.54.1
  14. Conectando a www.msg.com.mx|200.33.54.1|:80... conectado.
  15. Petición HTTP enviada, esperando respuesta... 200 OK
  16. Longitud: 11569 (11K) [application/x-tar]
  17. Guardando en: «Math-BigInt-Random-0.04.tar.gz»
  18.  
  19. 100%[========================================================================================================================================>] 11,569      --.-K/s   en 0.1s    
  20.  
  21. 2011-01-11 17:30:26 (108 KB/s) - «Math-BigInt-Random-0.04.tar.gz» guardado [11569/11569]
  22.  
  23. Math-BigInt-Random-0.04/
  24. Math-BigInt-Random-0.04/Changes
  25. Math-BigInt-Random-0.04/lib/
  26. Math-BigInt-Random-0.04/lib/Math/
  27. Math-BigInt-Random-0.04/lib/Math/BigInt/
  28. Math-BigInt-Random-0.04/lib/Math/BigInt/Random.pm
  29. Math-BigInt-Random-0.04/LICENSE
  30. Math-BigInt-Random-0.04/Makefile.PL
  31. Math-BigInt-Random-0.04/MANIFEST
  32. Math-BigInt-Random-0.04/META.yml
  33. Math-BigInt-Random-0.04/README
  34. Math-BigInt-Random-0.04/t/
  35. Math-BigInt-Random-0.04/t/01_test.t
  36. Math-BigInt-Random-0.04/t/02_pod.t
  37. Math-BigInt-Random-0.04/t/03_pod_coverage.t
  38. Math-BigInt-Random-0.04/Todo
  39. Checking if your kit is complete...
  40. Looks good
  41. Writing Makefile for Math::BigInt::Random
  42. cp lib/Math/BigInt/Random.pm blib/lib/Math/BigInt/Random.pm
  43. Manifying blib/man3/Math::BigInt::Random.3
  44. PERL_DL_NONLAZY=1 /usr/local/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
  45. t/01_test.t .......... ok    
  46. t/02_pod.t ........... ok  
  47. t/03_pod_coverage.t .. skipped: Test::Pod::Coverage required for testing POD coverage
  48. All tests successful.
  49. Files=3, Tests=15,  3 wallclock secs ( 0.04 usr  0.02 sys +  0.35 cusr  0.08 csys =  0.49 CPU)
  50. Result: PASS
  51. Manifying blib/man3/Math::BigInt::Random.3
  52. Installing /usr/local/lib/perl5/site_perl/5.12.0/Math/BigInt/Random.pm
  53. Installing /usr/local/share/man/man3/Math::BigInt::Random.3
  54. Appending installation info to /usr/local/lib/perl5/5.12.0/i686-linux/perllocal.pod
  55.  

Incluso podríamos trabajar con un archivo externo en donde se pongan los módulos a instalar.
29  Foros Generales / Foro Libre / Gente que opina que LINUX APESTA en: 7 Enero 2011, 23:57 pm
Hay un grupo en facebook que se llama así, les dejo algo de su sabiduría:

Citar
Ignacio Castro PalmaGente que opina que LINUX APESTA
Ignorantes que no saben nada. Ni siquiera saben lo que es un Kernel. De acuerdo con Julian Rodrigo, Yo uso linux y que? PUEDO DECIR CON FRANQUEZA QUE ES MEJOR QUE WINDOWS.!!!
12 de septiembre de 2010 a las 13:11 · Me gustaYa no me gusta · Comentar

    *
    *
    *
          o
            Sebastian Fernandez vos tampoco debes saber lo que es un kernel, porque los kernel los tienen los sistemas operativos bien hechos, no las lineas de comando! aajja
            19 de septiembre de 2010 a las 21:26 · Me gustaYa no me gusta · 1 personaA Diego Peralta le gusta esto. ·
          o
            Diego Peralta EL KERNEL DE LINUX, ESTA HECHO PARA LAS MAQUINAS DE CAFE!!!
            JAJAJAJA

            19 de septiembre de 2010 a las 21:28 · Me gustaYa no me gusta ·
          o
            Sebastian Fernandez y encima las cuelga!!!! jajjajajjajajjaa
            19 de septiembre de 2010 a las 21:29 · Me gustaYa no me gusta ·
          o
            Paul Barreto un kernel es un nucleo,por ende el nucleo de linux apesta...!!! Mr console porq no te vas a comilar tu ventana de editor de texto? xD
            19 de septiembre de 2010 a las 21:49 · Me gustaYa no me gusta ·
          o
            Sebastian Fernandez la esta cambiando Paul, por eso no puede entrar al face a contestar!..no le anda!!! ajajajajaj
            19 de septiembre de 2010 a las 21:51 · Me gustaYa no me gusta ·
          o
            Diego Peralta CLARO!, TIENE QUE ESCRIBIR 450 LINEAS DE COMANDO ANTES DE CONECTARSE A INTERNET!
            19 de septiembre de 2010 a las 21:52 · Me gustaYa no me gusta ·
          o
            Paul Barreto lol jajajaja
            19 de septiembre de 2010 a las 21:52 · Me gustaYa no me gusta ·
          o
            Sebastian Fernandez jjejejejjejejej
            19 de septiembre de 2010 a las 21:53 · Me gustaYa no me gusta ·
          o
            Paul Barreto
            conclusion: si eres gamer no uses esa *****
            si ves peliculas y eres multimedia no uses esa *****
            si eres de los q overclokean hasta decir ya,no uses esa *****
            si quieres un server seguro y facil de manejar no uses esa *****

            ...si eres una secretaria del gobierno pues usa esa verga!! xD
Ver más
            19 de septiembre de 2010 a las 21:55 · Me gustaYa no me gusta ·
          o
            Sebastian Fernandez jaaajajajjajajjaa!!!
            19 de septiembre de 2010 a las 21:56 · Me gustaYa no me gusta ·
          o
            Gabriel José Hernández Naveda LoL
            19 de septiembre de 2010 a las 21:57 · Me gustaYa no me gusta ·
          o
            Diego Peralta JJAJAJAJAJA :)
            19 de septiembre de 2010 a las 21:57 · Me gustaYa no me gusta ·
          o
            Leo Gutiérrez Ramirez Sí, mucha risa, idiotas, pero por lo menos sabemos compilar, sabemos hacer las cosas por nuestra cuenta, no dependemos de otra gente, somos dueños de nuestro entorno.

            ¿Como puede haber tanta ignorancia?

            Hace 23 horas · Me gustaYa no me gusta
          o
            Diego Peralta LINUX no existe

Les remarquè en negro los comentarios.

Saludos.
30  Programación / Scripting / Facebook Manager [ Perl ] en: 31 Diciembre 2010, 00:45 am
Antes que nada, no pretende distribuir este pequeño programa, solo lo pongo a su disposición porque para mi es muy útil, lo desarrollé hace unos días.

Otra de las razones por las que no lo pongo a distribución es porque se necesitan algunos módulos que deberán instalar ustedes. Si no saben instalar módulos yo les enseñaré.

Otra cosa, no corre en Windows, es solo para GNU/Linux, claro que se puede correr sobre Windows, pero es mucho más engorro.

Ah, otra cosa, necesitan instalar fbcmd.




¿Y por qué no hacer todo esto directamente desde facebook.com?
Lo hice porque a veces no quiero entrar a facebook, simplemente quiero poner un status, o ver el estado de alguien
o lo que sea. Aparte si entro a veces me agarran en el chat.

Para que funcione necesitan algunos módulos, Gtk2, Gtk2::GladeXML, entre otros, instalarlos es muy sencillo, yo les
enseñaré como.

INSTALAR MÓDULOS DESDE CPAN

Citar
CPAN es el acrónimo de Comprehensive Perl Archive Network. Es un enorme archivo de software escrito en Perl, así como de
documentación sobre el mismo. Tiene presencia en la Web a través de su sitio www.cpan.org y sus 236 mirrors distribuidos
por todo el mundo.

Primero, ingresamos en:
http://search.cpan.org/

Ingresamos el nombre del módulo que queremos instalar. En este caso Gtk2, seleccionamos el primero que sale en la lista.
Al lado derecho sale la imagen del autor, debajo dice "Downloads", descargamos el módulo y lo descomprimimos:

Código
  1. leo@leo-desktop:~/Escritorio/test$ ls -1
  2. Gtk2-1.222.tar.gz
  3. leo@leo-desktop:~/Escritorio/test$ tar zxvf Gtk2-1.222.tar.gz
  4. ...
  5. ...
  6. ...

Nos creará una carpeta:

Código
  1. leo@leo-desktop:~/Escritorio/test$ ls -1
  2. Gtk2-1.222
  3. Gtk2-1.222.tar.gz

Entramos en ella e instalamos de la siguiente manera:

Código
  1. cd Gtk2-1.222/
  2. sudo perl Makefile.PL
  3. sudo make
  4. sudo make test
  5. sudo make install

Y eso es básicamente la instalación de módulos, también podemos hacerlo através de la utilidad cpan:
Código
  1. sudo cpan i /Gtk2-1.222/

Así continuamos con los demás modulos que nos pida instalar.

El programa está desarrollado con glade-e
Instalación:

Código
  1. sudo apt-get install glade

Seguro que les pedirá instalar muchos módulos, así que ¡paciencia!.

Les dejo el código y los archivos necesarios para su funcionamiento:

Código
  1. #!/usr/bin/perl -w
  2. # Leo Gutiérrez R.
  3. # leorocko13@hotmail.com
  4. use strict;
  5. use Gtk2 -init;
  6. use Gtk2::GladeXML;
  7. use 5.010;
  8. use encoding ':locale';
  9. use constant TRUE => 1;
  10. use constant FALSE => !TRUE;
  11.  
  12. # Variables globales indispensables.
  13. ########################################################################
  14.  
  15. my($programa, $ventana_principal);
  16. $programa = Gtk2::GladeXML->new('hola.glade');
  17. $ventana_principal = $programa->get_widget('window1');
  18. my $ventana_de_estado = $programa->get_widget('ventana_de_estado');
  19. my $ventana_about = $programa->get_widget('about');
  20.  
  21. # Cargamos los componentes.
  22. $programa->signal_autoconnect_from_package('main');
  23.  
  24. # La señal para que cuando cierre se CIERRE TODO.
  25. $ventana_principal->signal_connect(destroy => sub
  26. {
  27. Gtk2->main_quit();
  28. }
  29. );
  30.  
  31. $ventana_de_estado->signal_connect(destroy => sub
  32. {
  33. $ventana_de_estado->hide();
  34. }
  35. );
  36.  
  37. $ventana_about->signal_connect(destroy => sub
  38. {
  39. $ventana_about->hide();
  40. }
  41. );
  42.  
  43. # Mostrar todo.
  44. $ventana_principal->resize(520, 570);
  45. $ventana_principal->show_all();
  46. #$ventana_principal->set_resizable(FALSE);
  47.  
  48. my $user_selected;
  49. my @friends;
  50.  
  51. ########################################################################
  52.  
  53. # Agregar el combo.
  54. my $combito = $programa->get_widget('combito');
  55. &llenarComboAmigos;
  56. $combito->signal_connect('changed' => \&on_combito_changed);
  57. $combito->set_active(0);
  58.  
  59. # Agregar los TextBox
  60. my $texto = $programa->get_widget('texto');
  61. my $texto_2 = $programa->get_widget('texto_2');
  62.  
  63. # Agregar la barra de status
  64. my $status = $programa->get_widget('status');
  65. my $context_id = $status->get_context_id("");
  66.  
  67. # Agregar la imagen de perfil
  68. my $imagen_perfil = $programa->get_widget('perfil_Image');
  69.  
  70. # Agregar texto salida de información
  71. my $textoSalida = $programa->get_widget('textoSalida');
  72. my $buffer = $textoSalida->get_buffer();
  73.  
  74. $ventana_principal->show_all();
  75. Gtk2->main();
  76.  
  77. sub on_boton_cerrar_clicked
  78. {
  79.   Gtk2->main_quit();
  80. }
  81.  
  82. sub on_salirFileItem_activate
  83. {
  84. Gtk2->main_quit();
  85. }
  86.  
  87. sub llenarComboAmigos
  88. {
  89. for(qx|fbcmd friends|)
  90. {
  91. push(@friends, m/^\d+\s+(.*)/);
  92. }
  93. map($combito->append_text($_), sort @friends);
  94. }
  95.  
  96. sub on_combito_changed
  97. {
  98. my ($cb) = @_;
  99. if($cb->get_active())
  100. {
  101. $user_selected = $cb->get_active_text();
  102. $status->push($context_id, sprintf("Usuario seleccionado : %s", $user_selected));
  103. $buffer->set_text("");
  104. }
  105. }
  106.  
  107. sub on_texto_activate
  108. {
  109. unless ($user_selected)
  110. {
  111. $status->push($context_id, sprintf("Seleccione un usuario para enviar el mensaje."));
  112. }
  113.  
  114. my $mensaje = $texto->get_text();
  115. $mensaje =~ s/"/\\"/g;
  116. $mensaje =~ s/`/\\`/g;
  117. $mensaje =~ s/\(/\\(/g;
  118. qx|fbcmd wallpost "$user_selected" "${mensaje}"|;
  119.  
  120. $status->push($context_id, sprintf("Mensaje publicado en muro de usuario : %s", $user_selected));
  121. }
  122.  
  123. sub on_texto_2_activate
  124. {
  125. my $mensaje = $texto_2->get_text();
  126. $mensaje =~ s/"/\\"/g;
  127. $mensaje =~ s/`/\\`/g;
  128. $mensaje =~ s/\(/\\(/g;
  129. qx|fbcmd status "${mensaje}"|;
  130. $status->push($context_id, sprintf("Status cambiado"));
  131. }
  132.  
  133. sub on_verImagenDePerfil_activate
  134. {
  135. unless ($user_selected)
  136. {
  137. $status->push($context_id, sprintf("Seleccione un usuario de la lista."));
  138. }
  139.  
  140. qx|fbcmd ppics "$user_selected" . "-pf=[tname].jpg" -ppsize=1|;
  141. $imagen_perfil->set_from_file("$user_selected" . ".jpg");
  142. unlink("$user_selected" . ".jpg") or warn("No se pudo borrar el archivo \"${user_selected}.jpg\"");
  143.  
  144. }
  145.  
  146. # Ventana de estado
  147.  
  148. sub on_verEstado_activate
  149. {
  150. unless ($user_selected)
  151. {
  152. $status->push($context_id, sprintf("Seleccione un usuario de la lista."));
  153. }
  154.  
  155. my $vbox = Gtk2::VBox->new(FALSE, 5);
  156.  
  157. my $frame = Gtk2::Frame->new("Amigo - Estado");
  158. $frame->set_border_width(5);
  159.  
  160. my $sw = Gtk2::ScrolledWindow->new (undef, undef);
  161.    $sw->set_shadow_type ('etched-out');
  162. $sw->set_policy ('automatic', 'automatic');
  163. $sw->set_size_request (600, 100);
  164. $sw->set_border_width(5);
  165.  
  166. my $tview = Gtk2::TextView->new();
  167.   my $buffer = $tview->get_buffer();
  168. my $s = &getStatus();
  169. $buffer->set_text($s);
  170.  
  171. $sw->add($tview);
  172. $frame->add($sw);
  173. $vbox->pack_start($frame,TRUE,TRUE,4);
  174. $vbox->show_all();
  175. $ventana_de_estado->add($vbox);
  176.  
  177. $ventana_de_estado->show();
  178.  
  179. }
  180.  
  181. sub getStatus
  182. {
  183. my $s = qx|fbcmd fstatus "$user_selected"|;
  184.  
  185. my($status) = $s =~ m/^$user_selected\s+(.*)/gims;
  186. #$status =~ s/\s{22}(.*)/\n$1/gi;
  187. #$status =~ s/^(\s+)(.*)/$2/gim;
  188.  
  189. return $s;
  190.  
  191. }
  192.  
  193. sub getPresence
  194. {
  195. my($s) = qx(fbcmd finfo online_presence "${user_selected}") =~ m/(active|offline)$/;
  196. return $s;
  197. }
  198.  
  199. sub on_verPresencia_activate
  200. {
  201. $buffer->set_text("Presencia : " . &getPresence());
  202. }
  203.  
  204. sub on_aboutFileItem_activate
  205. {
  206. $ventana_about->run();
  207. $ventana_about->hide();
  208. }
  209.  

Archivos:
http://rapidshare.com/files/440038591/facebook_manager.rar
http://www.megaupload.com/?d=BZQBNEVS

Páginas: 1 2 [3] 4 5 6 7 8 9 10
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines