Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - leogtz

#1
Scripting / Amigo Batchero
12 Diciembre 2012, 04:16 AM
Hola a todos, espero y estén bien todos.

He estado ausente durante mucho tiempo (aún me sigo preguntando por qué sigo de moderador :p ...), me he dado una pasada por el foro a ver qué tal va.

¿por qué siguen programando en Batch?

Durante mi estudio en algunas tecnologías he visto que son tecnologías que requieren de mucho tiempo y estudio ... y siempre pienso
"*****, debí haber empezado con esto hace años ..." y me viene a la mente todo aquel tiempo que "desperdicié" programando en Batch.

Por una parte sí creo que fue un desperdicio y por otra no, programar en Batch no te traerá ningún, absolutamente ningún beneficio en el ámbito laboral, salvo el conocimiento de algunos comandos, pero hasta ahí, sería sumamente raro que te pidieran alguna vez un script que hiciera X cosa, entonces ¿por qué seguir programando en Batch? en estos momentos deberían estar aprediendo otra cosa que les pudiera ser muchisimo más útil en un futuro. Si están utilizando Batch para aprender programación podrían hacerlo directamente en c, o en perl, o en python, o en ruby, o en Java, cualquier otra Cosa!!!

¡Aprendan un lenguaje que les deje algo!

Yo programé mucho tiempo en Batch, sin llegar a ningún lado, los conocimientos que adquirí en Batch no me han servido en lo absoluto.

Lo que daría yo en retroceder el tiempo y haber empezado a programar en Java.

Entonces, ahí está mi consejo, abandonen Batch y aprendan otra cosa, cualquier otra cosa.

Saludos.
#2
Hola a todos.

Estoy usando Eclipse para construir una interfaz más cómodamente.

Tengo un JFrame y un JDialog, necesito acceder a la información o a los componentes del JDialog, pero no puedo a menos obviamente que utilice modificadores de acceso con static y public  :xD

¿Cuál es la manera en que esto se maneja en Eclipse? En Netbeans todo este manejo estaba por default, podías acceder a los componentes de otras ventanas desde el mismo JFrame.

Saludos.
#3
Hola a todos, en estas vacaciones me he dedicado a escribir un intérprete para un lenguaje de programación, el cuál llamé "Yare".

Está escrito en C, con ayuda de lex y yacc.

El lenguaje que estoy haciendo aún es muy limitado, pero ya tiene algunas cosas algo "rescatables", como por ejemplo:

- Ciclos: for, while, do-while, unless.
- Condicional if y algunas expresiones se pueden procesar así:

expresion == expression && sentencia;

Un ejemplo:
Código (cpp) [Seleccionar]
1 == 1 && "Ok\n";
-Sentencia tipo "read(var)"
-Inicialización con valor aleatorio, ejemplo:
Código (cpp) [Seleccionar]
x = ?;

- Lo he hecho bastante "rico" en comentarios, es decir, se admiten comentarios de la forma
Código (cpp) [Seleccionar]
/* hjkhjkasd
asdasd
*/

Código (cpp) [Seleccionar]
rem Comentario de una sóla línea
Código (cpp) [Seleccionar]
# Comentario de una sóla línea
Código (cpp) [Seleccionar]
-- Comentario de una sóla línea
Código (cpp) [Seleccionar]
// Comentario de una sóla línea
Código (cpp) [Seleccionar]
:: Comentario de una sóla línea

- Caracteres especiales en la sentencia "puts(string)", los mismos que en C:
\n, \t, \s(este es de Perl), \b, \r, \f.
Añadí uno propio así:
\q el cuál inserta una doble comilla '"'.

- Además añadí unos caracteres de escape de nueva línea numéricos, es decir.

Código (cpp) [Seleccionar]
puts("Hola\1mundo") <- Haría que se insertara un \n
puts("Hola\2mundo") <- Haría que se insertara dos \n
puts("Hola\3mundo") <- Haría que se insertara tres \n
y así hasta el 9.

No hay tipos de datos por ahora, el tipo de dato que manejo es "double".

Hay 26 variables por default, las variables son de la "a" a la "z" y no es sensible a mayúsculas y minúsculas. Estas variables siempre están ahí disponibles.

-Se pueden definir variables propias de este modo:
Código (cpp) [Seleccionar]
:suma: = 2^3; ó así:
Código (cpp) [Seleccionar]
declare(:suma:, 2^3);
Código (cpp) [Seleccionar]
declare(:suma:);

Los identificadores pueden ser bastante flexibles, ejemplo:
Código (cpp) [Seleccionar]
: _Hola mundo # 123342432 : = 123;
printn(: _Hola mundo # 123342432 :);


Se pueden definir bloques de código:
Código (cpp) [Seleccionar]
{
  sentencias...
}


-Constantes numéricas:
número pi, número e, logaritmo en base 2 de el número e, y varias más, se pueden utilizar así:
Código (cpp) [Seleccionar]
printn(cos(const.pi^2));

-Operadores:
+, -, *, /, ^, %, <<, >>, |, &, &&, ||, ! y ~ para negación, XOR.

-Funciones matemáticas:
Código (cpp) [Seleccionar]
factorial(expr), abs(expr), ln(expr), cos(expr), sin(expr), tan(expr), atan(expr), asin(expr), acos(expr), floor(expr), sinh(expr), sumatoria(expr, expr), etc.

-Operadores de posdecremento y posincremento, de esta manera:
Código (cpp) [Seleccionar]
a = 1;
a+@;
a-@;

ó incr(variable), decr(variable)


-Operador variable, lo que llamé operador variable no es más que un operador global que puede ser modificado, algo así:
Código (cpp) [Seleccionar]
_@_= *;
_@_ = /;
_@_ = -;
etc...


Y que luego pueda ser usado de esta manera:

Código (cpp) [Seleccionar]
_@_ = *;
printn(1 + 2 _@_ 3);

¿Para qué podría servir esto? no lo sé :)

-Inicialización por medio de smileys....  ;D, algo así:
Código (cpp) [Seleccionar]
x = :);   # Lo inicializa a 1
x = :|;  # Lo inicializa a 0
x = :(;  # Lo inicializa a -1.


-Sentencia break para los ciclos, aún no hallo como implementar la sentencia continue.

-Ciclo foreach de esta manera:
Código (cpp) [Seleccionar]
foreach(1 ... factorial(5), k) {
printn(k);
}


-Sentencia system(CADENA).

-Asignaciones flexibles:
Código (cpp) [Seleccionar]
let x to 1+2;
set x to 1+2;
move 1+2 to x;
x = 1+2;
mov x, 1+2;
x <- 1+2;
let x = 1+2;
set x = 1+2;
x := 1+2;

Todas ellas son equivalentes.

-Sentencias tipo assembly:
Código (cpp) [Seleccionar]
mov x, factorial(6);
sub x, -123;
add x, 1+2;


-Sentencia "swap" para intercambiar valores:

Código (cpp) [Seleccionar]
x = 1;
y = 2;
x <-> y;


-Sentencia exit:
Código (cpp) [Seleccionar]
exit(-1);

-Sentencia read(variable) para leer desde el teclado, ejemplo:
Código (cpp) [Seleccionar]
read(x);
for i = 0, i < x, +1 {
printn(i);
}


-Asignaciones abreviadas:
Código (cpp) [Seleccionar]
x += 1;
x -= 1;
x *= 1;
x ^= 3;
x /= 2;
x <<= 1;
x >>= 1;
x |= 1;
x &= 1;
x %= 2;


-Función par(expr) para saber si el número resultado de la expresión es par.

-Definición de procedimientos por el usuario, en la forma:
Código (cpp) [Seleccionar]
proc $suma$ {
a += b;
# Demás sentencias ...
}

a = 1;
b = 2;

# Imprime 3
# El valor retornado por el procedimiento o función es
# el resultado de la última sentencia o expresión.
printn(call $suma$);


-Soporta recursión, obviamente no tan flexible, un ejemplo de cálculo del factorial con algoritmo recursivo:
Código (cpp) [Seleccionar]
# Intento de recursion
proc $factorial$ {
if(a != 1) {
r *= a;
a-@;
call $factorial$;
}
}

# Calculando el factorial de 5:
a = 5;
r = 1;

call $factorial$;
printn(r);

.


Da por resultado 120.

La ejecución de algunos programas no es tan lenta, por ejemplo, calculemos el número pi en perl y luego calculemoslo en Yare.
Código (perl) [Seleccionar]
#!/usr/bin/env perl
my $suma = 0.0;
my $i = 0.0;
for($i = 1; $i <= 1000000; $i++) {
$suma += (-1)**($i + 1)/(2 * $i - 1);
}
$suma *= 4.0;
print($suma . "\n");

3.14159165358978

real 0m0.646s
user 0m0.572s
sys 0m0.004s


Ahora en Yare:
:suma: = 0;
for i = 1, i <= 1000000, +1 {
:suma: += (-1)^(i + 1)/(2 * i - 1);
}
:suma: *= 4.0;
puts("pi = ");
printn(:suma:);
.

pi = 3.141592

real 0m0.641s
user 0m0.564s
sys 0m0.000s


Los tiempos de ejecución son muy similares. Obviamente no pretendo decir que la calidad de mi código es superior o si quiera igual que el de Perl, sería una estupidez, pero bueno... .
Estas son algunas cosas que he implementado en Yare, es muy muy limitado, pero bueno, quizás alguien quiera hacerlo crecer junto conmigo.

Lo primero en qué hay que pensar cuando se quiere hacer un lenguaje es "¿para qué va a servir?", "¿qué objetivo tiene?", yo no tengo objetivo, sólo aprender, ver cómo funcionan las cosas, y he aprendido muchisimo, no todo ha sido "miel sobre ojuelas", he batallado mucho con esto, han sido horas y horas de programar y a veces de dedicarle un día entero a algo y ver al final que las cosas no funcionan, y ni modo, a seguir adelante con otra cosa.

Por ahora estoy añadiendo soporte para arrays, pero les soy sincero, ya me aburrí de esto, porque son muchas horas dedicadas a esto y tengo otras cosas que hacer :).


Entonces ahí está la petición, si alguien quiere unirse a desarrollar esto, yo encantado.

Saludos.
#4
Hardware / Pila de alta duración....
2 Julio 2012, 20:23 PM
Hola a todos.

Recién compré una pila o bateria para mi laptop, según lo que me dijeron, duraba hasta 6 horas la pila, ayer que la usé por primera vez después del primer ciclo de carga (14 horas) me duró casi 4 horas. El manual dice para alcanzar su máximo rendimiento se deben realizar de 3 a 4 ciclos de carga/descarga siendo el de carga de 14 horas..... pero les soy honesto, me da miedo, jaja.

Qué piensan?, que por ser la primera carga/descarga sólo me duró 4 horas o que con más ciclos durará más según el manual? ....


PD: La probé sobre linux, no he visto el rendimiento sobre Windows.
#5
Hola a todos.

Hace mucho había visto que había una aplicación que corría en la terminal que era básicamente un visor o creador de presentacioness, algo así como power point, pero solo para terminal, quizás alguien sabe de alguno... estaría muy agradecido, llevo buscándolo varios días.

Saludos.
#7
Hola a todos.

Hola a todos, bueno, les cuento, como parte de un trabajo en la universidad, tuve que crear un "compilador", o por lo menos avanzarlo, sin utilizar flex, lex, bison, yacc y todo eso, desde 0 totalmente. Pues bueno, quería compartirles el código.

El compilador no tiene mucho, pero algo es algo  :P

Tiene su analizador léxico, analizador sintáctico, unas pequeñas comprobaciones de tipos de datos y demás..., el compilador crea correctamente su propio árbol sintáctico para el código fuente dado, que ya es un avance, y para ver si funcionaba la lectura del árbol sintáctico, hice un poco de generación de código intermedio para las expresiones aritméticas básicas, genera código P y pseudocódigo ensamblador (un código artesanal que hace movimientos con registros con nombres de tipo R[0-9]), pero solo para expresiones aritméticas sencillas.

Quiero compartirlos con ustedes y si quieren unirse a mi, adelante, son bienvenidos, ya que creanme que para mi no ha sido nada fácil, me ha resultado bastante complejo esto, y eso que aún no llego plenamente a la generación de código. En fin.

El "compilador" está hecho en Java, con la ayuda de NetBeans. ¿por qué en Java? porque tenía que hacer esto lo más pronto posible, en menos de 3 meses :s y en periodo escolar, por lo que no tenía mucho tiempo de dedicarle tiempo exclusivamente a esto :s, Java provee un fácil manejo con Strings, además de estructuras de datos que no iba a tener que armas desde 0, como las listas y las tablas de dispersión, además que es con lo que más se llevan mis compañeros.

Bueno, les comento un poco cómo se estructura el lenguaje, algunos ejemplos:

inicio miPrimerProgramaEnGLHBR
entero x = 3;
leer(x)
fin;


El código debe empezar por inicio ID sentencias fin;, siempre.

inicio Hello_Shit
entero x = 123;
inc(x, 2 * 3)
fin;


inicio X
entero x = 1;
write(x);
repetir
x = x + 5;
x = x - 4
hasta x == 10
fin;


inicio X
entero z = 1234 + 234 + 56 + 78;
infinito hacer
z = z + 12
porsiempre
fin;


El compilador procesa las operaciones aritméticas (obviamente las operaciones aritméticas se hacen checando precedencia de operadores) y hace el cálculo, por ejemplo esto:

inicio X
entero x = (3 * 69 - (5 * 85 - 14))
fin;


Y el código que se genera:

Código P:

;Código P para las sentencias enteras sencilla para el programa final.glhbr
ldc 3
ldc 69
mpi
ldc 5
ldc 85
mpi
ldc 14
sbi
sbi


Y el pseudocódigo ensamblador:

; Código ensamblador para el programa "final.glhbr"
MOV R0,#3 ; Cargamos 3
MOV R1,#69 ; Cargamos 69
MUL R0,R1     ;  Multiplicamos
MOV R1,#5 ; Cargamos 5
MOV R2,#85 ; Cargamos 85
MUL R1,R2     ;  Multiplicamos
MOV R2,#14 ; Cargamos 14
SUB R1,R2        ; Restamos
SUB R0,R1        ; Restamos
MOV x,R0    ; fin de la sentencia de asignación
; Rutina para mostrar el resultado de x
;        R = -204.0


Todo esto recorriendo el nodo de árbol sintáctico correspondiente a una operación aritmética en postorden y luego la evaluación por medio de una pila.

Quizá alguien que sepa assembly pueda ayudar a traducir el pseudocódigo ensamblador a assembly real.

Son algunos de los usos, por supuesto, como ya les he dicho, no se ejecuta nada, porque no hay generación de código.... y para eso pido su ayuda, si alguno quiere unirse y aportar ideas, bienvenido! así aprendemos todos.

Bueno, les dejo el link el link y una captura:



El proyecto está en github por si quieren ver ahí los cambios que he hecho:
https://github.com/leogtzr/glhbr

Saludos.
#8
ASM / Pasar a código ensamblador [Ayuda]
6 Diciembre 2011, 04:46 AM
Bueno, les cuento. Estoy haciendo un compilador para un lenguaje de programación que inventé (En realidad es una ****, pero bueno, algo es algo, es como parte de un trabajo final de una materia que estoy llevando en la universidad, tengo que entregarlo dentro de una semana), ya hice mi analizador léxico, el analizador sintáctico, el semántico y demás, ahora estoy en la parte de generación de código. Hice un algoritmo que genera código ensamblador basándose en mi árbol sintáctico. El problema es que genera un código ensamblador que no es "ensamblador" :p, lo simula, ya que NO sé ensamblador. Entonces, necesito ayuda para pasar de algo como esto:

inicio X
entero a = 1 + 2 * 3 - 5
fin;


A esto:

mov R0,#1 ; Movimiento
mov R1,#2 ; Movimiento
mov R2,#3 ; Movimiento
mul R1,R2     ;  Multiplicamos
add R0,R1     ; Sumamos
mov R1,#5 ; Movimiento
sub R0,R1        ; Restamos
mov a,R0    ; fin de la sentencia

SENTENCIA PARA MOSTRAR a


Que es lo que genero con el algoritmo que hice (sé que no es muy eficiente), ¿cómo quedaría en assembly real y qué más necesito para poder generar el ejecutable?

Disculpen mi ignorancia en este rubro pero es que estoy totalmente perdido en esto, necesito un poco de ayuda.

Saludos.
#9
Scripting / Proyecto para los Batcheros
22 Noviembre 2011, 07:09 AM
Hola, chicos, ¿qué tal?

Bueno, les explico....

Hace como un mes, una maestra me pidió que le ayudara ya que había perdido sus documentos (aparentemente) en su memoria USB, un virus o lo que sea le había transformado sus documentos en accesos directos. Así que me pidió que lo arreglara, así que usé el cmd.exe teclee algunos comandos y listo, pero bueno, me dijo: "y por qué no lo automatizas?, haces un programita en Batch que detecte las unidades, le de al usuario a elegir en cuál arreglar y listo...", según ella les serviría muchisimo, ya que a cada rato le joden la memoria las computadoras del laboratorio.

Así que hagamos algo, desarrollemos eso, así les serviría a muchos de aprendizaje y sería algo de utilidad, además se trata de que quede realmente bien. Con mensajes al usuario, que se le muestre la debida información de lo que se está haciendo..., podríamos utilizar wbat para que se vea bonito:




Podemos utilizar listas, mostrar texto en colores, botones, campos de texto, radio buttons, entre otras cosas en Batch con Wbat.

Esto se hace para que ganen unión entre ustedes, que se haga algo, que no seamos tan individualistas..., quizá a nosotros no nos sirva en absoluto esto, pero creanme que otras personas les hallarán utilidad.

A los que les guste programar en Batch, diganme si quisieran realizar esto (Yo solo resolvería dudas...).

Saludos.
#10
Hola, quisiera preguntarles....

Conocen un software organizador de tareas multiplataforma? que me corra en Windows 7 y Arch Linux?


Saludos.
#11
Foro Libre / Ganó Marquez :@
13 Noviembre 2011, 07:50 AM
Esa maldita pelea era de Marquez :@, malditos imbéciles corruptos! :@  >:(

Si Pacquiao fuera hombre no hubiera aceptado la victoria
#12
Java / Recorrer HashTable
6 Octubre 2011, 04:52 AM
Hola a todos, necesito un poco de ayuda, ya que no me llevo bien con Java :s, he intentato un rato y nomás no puedo.

Lo que necesito es recorrer un HashTable que tiene la siguiente forma:

Hashtable<Integer, ArrayList> x = new Hashtable<Integer, ArrayList>();

Es decir, en cada clave del Hash, tengo un ArrayList de valores. Alguno sabe la forma de iterar sobre los valores dependiendo de la clave o recorrer toda la HashTable?
#13
Hola a todos, estoy viendo sí tomo esta certificación, el precio está bastante costeable, debido a que es por parte de la universidad, entonces quisiera que me den una opinión más que nada sobre qué tan dura es, es decir, ¿es díficil?

Pregunto porque el horario que tengo en la universidad está muy jodido. De 7 am a 4 pm, y llego a mi casa a las 5, así que tengo aproximadamente 6 a 7 horas para comer, hacer tareas y demás pendientes, entonces quiero ver si voy a poder con la certificación.

¿Qué dicen?
#14
Hola, qué tal, hice este script para administrar mis paquetes, contiene algunas opciones, como Eliminar, Actualizar, menú interactivo, Ver dependencias...

Modo de uso:

paquetes.sh -i [paquete]
paquetes.sh -d paquete
Para el menú interactivo ejecutar:
paquetes.sh -i
Ayuda:
paquetes.sh -h|H

Aquí una captura:



Está totalmente hecho en Bash, salvo por la utilización de dmenu.

Para descargar...
https://sourceforge.net/projects/pacmenu/files/pacmenu-1.1.zip/download

Cualquier sugerencia es bienvenida, saludos.
#15
Scripting / Duda con Makefile [Solucionado]
7 Agosto 2011, 10:24 AM
Estoy creando un Makefile, bueno, ya está todo hecho, funciona y todo, pero tengo un problema, necesito copiar un script a /usr/local/bin, por lo que necesita permisos para ejecutarse, ya saben:

su -
make install

Pero necesito que se copie al usuario actual, cuando hago:
sudo make install
se hace el proceso pero para root, no para el usuario actual...

Saludos, y gracias de antemano.

EDITO:

He pensado en un script configure que edite una linea del Makefile que apunte al usuario actual, pero bueno, no creo que sea la solución correcta, pero bueno, quizá funcione...

Saludos.
#16
Unix/Unix-Like / Duda sobre GRUB
29 Julio 2011, 21:20 PM
Hola a todos, una pregunta sencilla.

Tengo conviviendo Windows 7, Ubuntu y FreeBSD(8.2) en una misma PC, mismo disco duro y todo. Pues bueno, Windows 7 no quiere iniciar, da error("No se pudo iniciar Windows. Es posible que un cambio de hardware o software reciente sea la causa." todo después de reinstalar FreeBSD), por lo que tengo que repararlo, cuando lo haga, qué consecuencias tendría para Ubuntu y FreeBSD? ¿Sólo perdería el grub?
#17
Unix/Unix-Like / FreeBSD - Dispositivos
15 Julio 2011, 00:31 AM
Bueno,  abro un nuevo tema para ver si podemos resolver el funcionamiento de los dispositivos.

Te dejo la salida de pastebin:

http://pastebin.com/hWQzLEsQ

Las salidas de gconf:

(0) leo || ~/Desktop]$ gconftool-2 -g /desktop/gnome/volume_manager/automount_drives
true
[(0) leo || ~/Desktop]$ gconftool-2 -g /desktop/gnome/volume_manager/automount_media
No value set for `/desktop/gnome/volume_manager/automount_media'
[(0) leo || ~/Desktop]$ gconftool-2 -g /desktop/gnome/volume_manager/autobrowse
true
[(0) leo || ~/Desktop]$ gconftool-2 -g /desktop/gnome/volume_manager/autoplay_cda
false
[(0) leo || ~/Desktop]$ gconftool-2 -g /desktop/gnome/volume_manager/autoplay_dvd
false
[(0) leo || ~/Desktop]$ gconftool-2 -g /desktop/gnome/volume_manager/autoplay_vcd
false
[(0) leo || ~/Desktop]$ gconftool-2 -g /desktop/gnome/volume_manager/autoprinter
false
[(0) leo || ~/Desktop]$


cat /usr/local/etc/PolicyKit/PolicyKit.conf /etc/fstab /etc/sysctl.conf:
Código (bash) [Seleccionar]
<?xml version="1.0" encoding="UTF-8"?> <!-- -*- XML -*- -->

<!DOCTYPE pkconfig PUBLIC "-//freedesktop//DTD PolicyKit Configuration 1.0//EN"
"http://hal.freedesktop.org/releases/PolicyKit/1.0/config.dtd">

<!-- See the manual page PolicyKit.conf(5) for file format -->

<config version="0.1">
   <match user="root">
<return result="yes"/>
   </match>

# Mount
<match action="org.freedesktop.hal.storage.mount-removable">
<match user="leo">
<return result="yes"/>
</match>
</match>

   <define_admin_auth group="wheel"/>
</config>
# Device Mountpoint FStype Options Dump Pass#
/dev/ad4s4b none swap sw 0 0
/dev/ad4s4a / ufs rw 1 1
/dev/acd0 /cdrom cd9660 ro,noauto 0 0
/dev/acd0 /media/dvd cd9600 ro,noauto 0 0
/dev/ad4s2       /media/windows  ntfs    rw,noauto 0 0

# $FreeBSD: src/etc/sysctl.conf,v 1.8.34.1.6.1 2010/12/21 17:09:25 kensmith Exp $
#
#  This file is read when going to multi-user and its contents piped thru
#  ``sysctl'' to adjust kernel values.  ``man 5 sysctl.conf'' for details.
#

# Uncomment this to prevent users from seeing information about processes that
# are being run under another UID.
#security.bsd.see_other_uids=0
vfs.usermount=1


Aunque he agregado a fstab la línea:
/dev/ad4s2       /media/windows  ntfs    rw,noauto 0 0


No me lo monta, tengo que montarlo manualmente así:

Citar[(0) leo || /media]$ sudo mount -t ntfs /dev/ad4s2 windows/
[(0) leo || /media]$ ls -1 windows/
$AttrDef
$BadClus
$Bitmap
$Boot
$Extend
$LogFile
$MFTMirr
$Recycle.Bin
$Secure
$UpCase
$Volume
Archivos de programa
Documents and Settings
PerfLogs
Program Files
ProgramData
Recovery
System Volume Information
Users
Windows
autoexec.bat
config.sys
hiberfil.sys
pagefile.sys
[(0) leo || /media]$

También para montar la USB tengo que hacerlo así:

Citar[(0) leo || /media]$ sudo mount -t ntfs -o rw /dev/da1s1 flash/    
[(0) leo || /media]$ cd flash/
[(0) leo || /media/flash]$ ls -c  
scripts  Escuela     c_projects  programming  Im?genes  SetupDVDDecrypter_3.5.4.0.exe  $Boot    $LogFile  $Secure  $Volume   $Bitmap
perl     bdpass.kdb  bash        cpps         Cosas     $BadClus                       $Extend  $MFTMirr  $UpCase  $AttrDef
[(0) leo || /media/flash]$ sudo rm -rvf SetupDVDDecrypter_3.5.4.0.exe
rm: SetupDVDDecrypter_3.5.4.0.exe: Operation not supported
[(1) leo || /media/flash]$


Aunque monte como lectura y escritura no me deja hacer nada.

Te dejo /var/log/messages después de esto:
[(0) leo || /media]$ sudo umount windows/
[(0) leo || /media]$ sudo umount flash

http://pastebin.com/hLsfxdKT



Te dejo la salida de gpart list:
CitarGeom name: ad4
state: OK
fwheads: 16
fwsectors: 63
last: 312581807
first: 63
entries: 4
scheme: MBR
Providers:
1. Name: ad4s1
  Mediasize: 104857600 (100M)
  Sectorsize: 512
  Mode: r0w0e0
  rawtype: 7
  length: 104857600
  offset: 1048576
  type: ntfs
  index: 1
  end: 206847
  start: 2048
2. Name: ad4s2
  Mediasize: 52323942400 (49G)
  Sectorsize: 512
  Mode: r1w1e1
  rawtype: 7
  length: 52323942400
  offset: 105906176
  type: ntfs
  index: 2
  end: 102402047
  start: 206848
3. Name: ad4s3
  Mediasize: 40999322624 (38G)
  Sectorsize: 512
  Mode: r0w0e0
  rawtype: 5
  length: 40999322624
  offset: 52430896128
  type: !5
  index: 3
  end: 182480895
  start: 102404094
4. Name: ad4s4
  Mediasize: 22019940352 (21G)
  Sectorsize: 512
  Mode: r2w2e3
  attrib: active
  rawtype: 165
  length: 22019940352
  offset: 93430218752
  type: freebsd
  index: 4
  end: 225488591
  start: 182480896
Consumers:
1. Name: ad4
  Mediasize: 160041885696 (149G)
  Sectorsize: 512
  Mode: r3w3e7

Geom name: ad4s4
state: OK
fwheads: 16
fwsectors: 63
last: 43007695
first: 0
entries: 8
scheme: BSD
Providers:
1. Name: ad4s4a
  Mediasize: 20447232000 (19G)
  Sectorsize: 512
  Mode: r1w1e1
  rawtype: 7
  length: 20447232000
  offset: 0
  type: freebsd-ufs
  index: 1
  end: 39935999
  start: 0
2. Name: ad4s4b
  Mediasize: 1048576000 (1.0G)
  Sectorsize: 512
  Mode: r1w1e0
  rawtype: 1
  length: 1048576000
  offset: 20447232000
  type: freebsd-swap
  index: 2
  end: 41983999
  start: 39936000
Consumers:
1. Name: ad4s4
  Mediasize: 22019940352 (21G)
  Sectorsize: 512
  Mode: r2w2e3

Geom name: da1
state: OK
fwheads: 255
fwsectors: 63
last: 3919859
first: 63
entries: 4
scheme: MBR
Providers:
1. Name: da1s1
  Mediasize: 2002845696 (1.9G)
  Sectorsize: 512
  Mode: r1w1e2
  attrib: active
  rawtype: 7
  length: 2002845696
  offset: 4128768
  type: ntfs
  index: 1
  end: 3919871
  start: 8064
Consumers:
1. Name: da1
  Mediasize: 2006974464 (1.9G)
  Sectorsize: 512
  Mode: r1w1e3


He agregado lo siguiente  a loader.conf  a ver si cargaba la tarjeta de memoria SD, pero no, no hay resultados, tal vez tenga recompilar el kernel.
         mmc_load="YES"
          mmcsd_load="YES"
          sdhci_load="YES"


EDITO:

Acabo de agregar fusefs a rc.conf:
Citar
fusefs_enable="YES"

Tengo instalados los siguientes paquetes:
Citar[(0) leo || /media]$ pkg_info | grep -i "fuse"
fusefs-kmod-0.3.9.p1.20080208_7 Kernel module for fuse
fusefs-libs-2.7.4   FUSE allows filesystem implementation in userspace
fusefs-ntfs-2011.4.12_1 Mount NTFS partitions (read/write) and disk images
[(0) leo || /media]$

Respecto a libreoffice, es tema aparte, apenas está descargando cosas...

Esperemos y se puedan resolver los problemas, gracias de antemano.
#18
Hola a todos, tengo un problema, me he quedado in espacio :s

Se lo asumo a que durante la instalación marqué muchos paquete para instalar...

CitarFilesystem        Size    Used   Avail Capacity  Mounted on
/dev/ad4s4a        18G     15G    1.9G    89%    /
devfs             1.0K    1.0K      0B   100%    /dev
/dev/ntfs/AZUL    1.9G    1.1G    827M    57%    /media/AZUL

¿pkg_info me devuelve 810 paquetes, esto es normal?

En /usr/ports/distfiles solo tengo
Citar[(0) leo ||  /usr/ports/distfiles]$ du -shx
860M   .
[(0) leo ||  /usr/ports/distfiles]$

En mi home solo tengo:
Citar[(130) leo ||  ~]$ du -shx
977M   .
[(0) leo ||  ~]$

¿Qué puedo hacer?, por lo pronto voy a ir desinstalando paquetes que no me sirvan...
#19
Unix/Unix-Like / FreeBSD - Instalación
12 Julio 2011, 07:17 AM
Bueno, ya estoy instalando, aquí pondré las dudas que vayan surgiendo.

Saludos, gracias de antemano.

EDITO:

Bueno, en el menú he elegido "Standard - Begin a standard installation (recommended)", luego de dar Enter me sale:

"No disk found! Please verify that you disk controller is being properly probed at boot time. See the Hardware Guide on the Documentation menu for clues on diagnosing this type of problem." :s

EDITO:

Da opción de instalación "Express o Custom", pero ambas las marca para expertos.
#20
Bueno, empiezo por poner mi .bashrc

Código (bash) [Seleccionar]
export HISTCONTROL=erasedups
HISTIGNORE="fg*:bg*:history*:exit*"
shopt -s cdspell
shopt -s histappend
shopt -s cmdhist                                # save multi-line commands in history as single line
shopt -s mailwarn

# Cargar variables personales

if [ -f ~/.bash_variables ];
then
. ~/.bash_variables
fi

# Cargar alias
if [ -f ~/.bash_aliases ];
then
. ~/.bash_aliases
fi

# Cargar funciones
if [ -f ~/.bash_functions ];
then
. ~/.bash_functions
fi

# Check for an interactive session
[ -z "$PS1" ] && return

export HISTSIZE=30000
export HISTCONTROL=ignoredups    # no duplicate lines in the history.

PS1='┌─[$? \u@\h \w]\$\n└─> '
PS2="New line [`date +"%H:%M:%S"`] : "

setxkbmap -layout latam
complete -cf sudo
complete -cf man

export escritorio=/home/leo/Desktop
export PATH=$PATH:/usr/local/bin
export EDITOR="vim"

myname="Leonardo Gutiérrez Ramírez";


.bash_aliases
Código (bash) [Seleccionar]
# Mis alias personales.
alias ls='ls --color=auto'
alias cls='clear'
alias cd..='cd ..'
alias cd.='pwd'
alias ocultos='ls -a1 | grep -i "^[.]"'
alias cdesk='cd $HOME/Escritorio'
alias folds='ls -d1 */'
alias myip='curl icanhazip.com'
alias cd-='cd -'
alias dwn='cd ~/Descargas'
alias files='ls -1F | grep -v ".*/$"'
alias pdf='evince'
alias _total='du -hsx'
alias rm='rm -i'
alias l1='ls -1'
alias xterm='xterm -font -*-fixed-medium-r-*-*-15-*-*-*-*-*-iso8859-* -geometry 120x88'
alias img='eog .'
alias ungz='tar zxvf'
alias s='ls -1 | grep -i'
alias lf='leafpad'
alias up='source ~/.bashrc;'
#alias pas='sudo pacman-color -S'
#alias pacman='pacman'
alias grep='grep --color=auto'
alias ls='ls --color=auto'
alias cdwin='cd /media/windows/'
alias rmsecure='bash /usr/local/bin/rmsecure.sh'
alias unins='bash /usr/local/bin/unins.sh'
alias modins='bash /usr/local/bin/modins.sh'
alias _c='bash /usr/local/bin/_c.sh'
alias sc='bash /usr/local/bin/sc.sh'
alias dn='. /usr/local/bin/dn.sh $1'
#alias comando='bash /usr/local/bin/comando.sh; source ~/.bashrc'
alias abs='evince /media/descargas/bash/abs-guide.pdf&'
alias ttouch='bash /usr/local/bin/ttouch'
#alias cdprompt='. /usr/local/bin/cdprompt.sh'
alias usb='. /usr/local/bin/usb'
alias wiki='perl /usr/local/bin/wiki'
#alias t='thunar .'
alias pc='pcmanfm .'
alias mq='/etc/rc.d/mysqld start'
alias v='vim'
alias nocomment='egrep -v "^\s*(#|$)"'
alias findcontent='grep -HURi'
alias cdp='cd "$(ls -d */ | dmenu -l $(ls -d */ | wc -l) -nb "#100" -nf "#b9c0af" -sb "#000" -sf "#afff2f" -i)"'
alias ~='cd ~'
#alias remove='pacman -R'
alias vi='vim'
alias :q='exit'
alias txtmsn='find ./.purple/logs/msn/leorocko13\@hotmail.com/ -type f -exec cat {} \; | grep -i "$1"'
alias emp='cd ~/escuela/administracion/empresa_miercoles/'
alias galias='cat ~/.bash_aliases'
alias mathematica='mathematica -noSplashscreen'
alias cdn='cd ~/NetBeansProjects/'
alias logmysql='mysql -u root -plein23 agencia'
alias tablas='mysql -u root -plein23 agencia -e "show tables \G" | grep -v "^\*" | sed "s/.*:\s\(.*\)/\1/"'
alias soft='cd /media/descargas/Software/'
alias mkx='sudo chmod +x $1'
alias t='todo'
# Apagado y reiniciado:
alias reboot='sudo reboot'
alias poweroff='sudo poweroff'

# Ping a google, útil para checar conexión
alias pingg='ping -c 4 google.com'
# alias windows linux
alias move='mv'
alias copy='cp'
# Facebook
alias muro='fbcmd mywall'
alias estado='fbcmd status $1'
alias restado='fbcmd restatus $1'
alias notices='fbcmd notices'
alias mutuo='fbcmd mutual $1'
alias amiwhix='cat ~/.amigos'
alias fbon='fbcmd finfo online_presence =all | grep -v "offline" | grep -v "^NAME.*ONLINE_PRESENCE$"'
# instalar programa
alias sagi='sudo apt-get install'
alias th='thunar'


.bash_functions

Código (bash) [Seleccionar]
function ebash
{
elegido=`ls -1 ~/.bash* | dmenu -l $(ls -1 ~/.bash* | wc -l)`
[ -z "$elegido" ] && return
vim "$elegido"
}
function sch
{
[ ! -d "$HOME/escuela" ] && {
echo -e "No existe la carpeta escuela"
return;
}
lines=`find ~/escuela -maxdepth 1 -type d | grep -v "^\.$" | wc -l`
cd `find ~/escuela -maxdepth 1 -type d | grep -v "^\.$" | sort | dmenu -l $lines`
}

# Function para ver los registros de determinada tabla.
function verr()
{
:
#BD=$(cat ~/.bash_variables | grep -i "^BD" | cut -f2 -d '=')
#n_tablas=$(mysql -u root -plein23 $BD -e "show tables \G" | grep -v "^\*" |  wc -l);
#mysql -u root -plein23 $BD -e "select * from `mysql -u root -plein23 $BD -e 'show tables' | dmenu -l ${n_tablas}`" | more
}

# Funcion que cambia la BD definida en el archivo ~/.bashrc
function changebd()
{
:
#n_tablas=$(mysql -u root -plein23 agencia -e "show databases \G" | grep -vi "^\*" | sed "s/.*:\s\(.*\)$/\1/g" | wc -l)
#BD=$(mysql -u root -plein23 agencia -e "show databases \G" | grep -vi "^\*" | sed "s/.*:\s\(.*\)$/\1/g" | dmenu -l ${n_tablas})
#sed -i "s/^BD=\(.*\)/BD=$BD/" ~/.bash_variables
#source ~/.bash_variables

}
function hacerx()
{
read -p "Name : " name
touch "$name";
sudo chmod +xwr "$name";
}
function cddev()
{
elegido=`cat << EOF | dmenu -l 3
cpps
perl
bash
EOF
`
cd /media/descargas/$elegido
}
function extract() {
   local c e i

   (($#)) || return

   for i; do
       c=''
       e=1

       if [[ ! -r $i ]]; then
           echo "$0: file is unreadable: \`$i'" >&2
           continue
       fi

       case $i in
       #*.t@(gz|lz|xz|b@(2|z?(2))|a@(z|r?(.@(Z|bz?(2)|gz|lzma|xz)))))
              #c='bsdtar xvf';;
       *.7z)  c='7z x';;
       *.Z)   c='uncompress';;
       *.bz2) c='bunzip2';;
       *.exe) c='cabextract';;
*.tar.gz) c='tar xzf';;
*.tgz) c='tar zxvf';;
       *.gz)  c='gunzip';;
       *.rar) c='unrar x';;
       *.xz)  c='unxz';;
       *.zip) c='unzip';;
       *)     echo "$0: unrecognized file extension: \`$i'" >&2
              continue;;
       esac

       command $c "$i"
       e=$?
   done

   return $e
}

function on()
{
ping -c 1 www.google.com &> /dev/null || {
echo -e "\E[31;47mOFFLINE";
sudo dhcpcd
tput sgr0;
} && {
echo -e "\E[31;47mONLINE";
notify-send "ONLINE"
tput sgr0;
}

}

function my()
{
sudo chown -R ${USER} "$1"
}

function cdl()
{
cd "$1"
ls -1
}


function enc()
{
if [ $# -ne 1 ]
then
echo -e "`basename $0` file";
exit 1;
fi
gpg -c "$1" && rm -rvf "$1"
}

function dec()
{
if [ $# -ne 1 ]
then
echo -e "`basename $0` file";
exit 1;
fi
gpg "$1" && rm -rvf "$1"

}

function exes()
{
echo -e "\e[1;31mNúmero de ejecutables : $(find . -maxdepth 1 -type f -iname "*.exe" -print | wc -l)"
find . -maxdepth 1 -type f -iname "*.exe" -print
tput sgr0
}

function f()
{
cat<<EOF>/tmp/factorial.bc
define factorial(n)
{
i = 1;
p = 1;
while(i <= n)
{
p *= i++
}
return (p);
}
n = read();
print n, "! = ", factorial(n), "\n";
quit;
EOF
echo -e "$1" | bc -ql /tmp/factorial.bc
rm -f /tmp/factorial.bc
}

function dictionary(){
curl -s -A 'Mozilla/4.0'  'http://www.google.com/search?q=define%3A+'$1  | html2text -ascii -nobs -style compact -width 500 | grep "*" | head -n 5
}

function mktar() { tar cvf  "${1%%/}.tar"     "${1%%/}/"; }
function mktgz() { tar cvzf "${1%%/}.tar.gz"  "${1%%/}/"; }
function mktbz() { tar cvjf "${1%%/}.tar.bz2" "${1%%/}/"; }

function hgg()
{
if [ $# -lt 1 ] || [ $# -gt 1 ]; then
echo "search bash history"
  echo "usage: mg [search pattern]"
else
  history | grep -i $1 | grep -v hg
fi
}

function ask()
{
   echo -n "$@" '[y/n] ' ; read ans
   case "$ans" in
       y*|Y*) return 0 ;;
       *) return 1 ;;
   esac
}

function box() { t="$1xxxx";c=${2:-#}; echo ${t//?/$c}; echo "$c $1 $c"; echo ${t//?/$c}; }

function translate() { wget -qO- "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=$1&langpair=%7C${2:-en}" | sed 's/.*{"translatedText":"\([^"]*\)".*/\1\n/'; }

function fp()
{
find . -type f -iname "$1" -print
}

function c()
{
echo -e "$*" | bc -l
}

# Creates an archive from given directory
function mktar() { tar cvf  "${1%%/}.tar"     "${1%%/}/"; }
function mktgz() { tar cvzf "${1%%/}.tar.gz"  "${1%%/}/"; }
function mktbz() { tar cvjf "${1%%/}.tar.bz2" "${1%%/}/"; }

# recursively fix dir/file permissions on a given directory
function fix()
{
 if [ -d $1 ]; then
       find $1 -type d -exec chmod 755 {} \;
     find $1 -type f -exec chmod 644 {} \;
       else
           echo "$1 is not a directory."
             fi
}

function safeedit() {
 cp -vi $1 ${1}.backup && vim $1
}

function kk()
{
read -p "Nombre de archivo > " name
cp -vi ~/Escritorio/pl.pl /media/descargas/perl/$name
}

# Ver foto de perfil de un amigo en facebook localmente, con eog
function verfoto()
{
fbcmd allinfo "$1" | grep "pic_big" | grep "jpg$" | awk '{print $2}' | xargs wget -O "${1}.jpg"
eog "${1}.jpg"
rm -rvf "${1}.jpg"
}
function isprime () {
   perl -wle 'print "Prime" if (1 x shift) !~ /^1?$|^(11+?)\1+$/'
}
function cd2iso {
   dd if=/dev/cdrom of=$1 bs=2048 conv=sync,notrunc
}
function fbfriends()
{
fbcmd friends | sed "s/\([0-9]*\)\s\(.*\)/\2/g" | grep -v "^ID.*" 2>&1 | tee ~/.amigos
}

# Función para imprimir un archivo en pantalla
function csg()
{
cat `ls -1 | grep -i "$1" | dmenu -l $(ls -1 | grep -i "$1" | wc -l)` | more
}


Saludos.
#21
Scripting / [Bash] TODO list
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 (bash) [Seleccionar]
#!/bin/bash

#===============================================================================
#
#          FILE:  todo.sh
#
#         USAGE:  ./todo.sh OPTIONS
#
#   DESCRIPTION:  TODO List, nos permite hacer anotaciones sobre acciones que haremos en un futuro.
#
#       OPTIONS:  ./todo -h|H
#  REQUIREMENTS:  ---
#          BUGS:  ---
#         NOTES:  ---
#        AUTHOR: Leo Gutiérrez R. (), leorocko13@hotmail.com | leogutierrez@elhacker.net
#       COMPANY:
#       CREATED: 13/06/11 16:45:05 MDT
#      REVISION:  ---
#===============================================================================

FILE=~/.todo/todo

source functions
# Checar que exista la carpeta y archivo de lista.

[ ! -d ~/.todo ] && {
ask "No existe la carpeta, desea crearla ?" && {
mkdir ~/.todo
echo -e "Creando archivo \"todo\" en ~/.todo";
touch ~/.todo/todo
} || {
echo -e "Saliendo . . .";
exit 0
}
}

[ $# = 0 ] && usage;

while getopts "hHr:R:lLn:N:d:D:be:E:g:G:kKs:S:" OPTION
do
    case $OPTION in
        h|H)
            usage
            exit 1
            ;;
        n|N)
            TEST=$OPTARG
           
            # Actualizar el archivo :
            updateList;
           
            #echo -e "Opción n, valor : ${TEST}";
            echo -e "$(tput bold)$(tput setaf 2)TODO : [$[ $(cat $FILE | wc -l) + 1 ]] ${TEST}";
            echo -e "[$[ $(cat $FILE | wc -l) + 1 ]] ${TEST}" >> $FILE
            tput sgr0;
            exit 0;
            ;;
           
        g|G)

(( $OPTARG > $(cat $FILE | wc -l) )) && {
echo -e "$(tput bold)$(tput setaf 1)ERROR, tarea inexistente, consulte las tareas con -L ó -l"
tput sgr0;
exit 1;
}

read -p "Texto : " texto

sed -i "${OPTARG}s/^\(.*\)$/\1 $texto/g" $FILE
updateList;

exit 0;

;;

        d|D)
           
            # Cercionarnos que elija una TODO hecha.
           
            (( $OPTARG > $(cat $FILE | wc -l) )) && {
echo -e "$(tput bold)$(tput setaf 1)ERROR, tarea inexistente, consulte las tareas con -L ó -l"
tput sgr0;
exit 1;
}
           
            sed -i "${OPTARG}d" $FILE
            updateList;
           
            exit 0;
           
            ;;
           
        k|K)
       
        [ ! -e ~/.todo/todo ] && {
echo -e "$(tput bold)$(tput setaf 1)No existe el archivo \"todo\" en ~/.todo/";

ask "Desea crearlo? " && {
touch $FILE
}
tput sgr0;
exit 1;
}

cp $FILE ${FILE}.bkp
echo -e "\n$(tput bold)$(tput setaf 1)Archivo de respaldo creado\n";
tput sgr0;
exit 0;
       
;;
        r|R)
           
            (( $OPTARG > $(cat $FILE | wc -l) )) && {
echo -e "$(tput bold)$(tput setaf 1)ERROR, tarea inexistente, consulte las tareas con -L ó -l"
tput sgr0;
exit 1;
}

read -p "Texto : " texto

# Detectar status
sed -n "${OPTARG}p" $FILE | grep "^\[.*\] \[.*\] " &> /dev/null && {
sed -i "2s/.*\(\[.*\]\)\s\(\[.*\]\)\s\(.*\)/\1 \2 $texto/g" $FILE
} || {
sed -i "${OPTARG}s/.*\(\[.*\]\)\s\(.*\)/\1 $texto/g" $FILE
}
updateList;

exit 0;
           
            ;;
           
        # -lL Mostrar, listar tareas.
        l|L)

(( $(cat $FILE | wc -l) == 0 )) && {
echo -e "$(tput bold)$(tput setaf 1)TODO List vacía, agregue nuevas tareas.";
tput sgr0;
exit 0;
}

updateList;

while read line
do
echo -e "$(tput bold)$(tput setaf 1)${line}";

done < $FILE

tput sgr0;

exit 0;
;;

b|B)

ask "$(tput bold)$(tput setaf 1)Esto borrará todas las tareas, desea continuar? " && {
sed -i '1,$d' $FILE
}

tput sgr0;
exit 0;
;;

s|S)

(( $(cat $FILE | wc -l) == 0 )) && {
echo -e "$(tput bold)$(tput setaf 1)TODO List vacía, agregue nuevas tareas.";
tput sgr0;
exit 0;
}

read -p "Estado de tarea : " status

sed -n "${OPTARG}p" $FILE | grep "^\[.*\] \[.*\] " &> /dev/null && {

sed -i "${OPTARG}s/.*\(\[.*\]\)\s\(\[.*\]\)\s\(.*\)/\1 [$status] \3/g" $FILE

} || {

sed -i "${OPTARG}s/^\(\[.*\]\)\s\(.*\)$/\1 [$status] \2/g" $FILE

}

;;

        ?)
            usage
            exit
            ;;
    esac
done


functions
Código (bash) [Seleccionar]
function usage()
{
tput bold
tput setaf 6
cat << EOF
Uso: $0 options

TODO List v1.0 | leorocko13@hotmail.com

OPTIONS:
 
  -h|H        Muestra este mensaje
  -n|N [#TAREA]    Nueva tarea
  -l|L          Listar tareas
  -d|D [#TAREA]    Eliminar tarea
  -r|R [#TAREA]    Reemplazar tarea
  -b|B            Borrar todas las tareas
  -g|G [#TAREA]    Agregar a una tarea
  -k|K            Crear respaldo de tareas
  -s|S [#TAREA]    Agregar estado de la tarea
 
EOF
tput sgr0;
}

function ask()
{
echo -n "$@" '[y/n] ';
read ans;
case "$ans" in
y*|Y*)
return 0 ;;
*)
return 1 ;;
esac
}

# Detectar status
# sed -n "${OPTARG}p" $FILE | grep "^\[.*\] \[.*\] " &> /dev/null && {
# sed -i "2s/.*\(\[.*\]\)\s\(\[.*\]\)\s\(.*\)/\1 \2 $texto/g" $FILE
# } || {
# sed -i "${OPTARG}s/.*\(\[.*\]\)\s\(.*\)/\1 $texto/g" $FILE
# }

function updateList()
{
rm -f /tmp/todo_temp

# Checamos si la lista no está vacía.
(( $(cat $FILE | wc -l) == 0 )) && {
return;
}

((contador = 1));
while read line
do
echo -e "$line" | grep "^\[.*\] \[.*\] " &> /dev/null && {
echo -e "[$contador] $(echo -e "$line" | sed "s/^\(\[.*\]\)\s\(\[.*\]\)\s\(.*\)/\2 \3/g")" >> /tmp/todo_temp
} || {
echo -e "[$contador] $(echo -e "$line" | sed "s/^\(\[.*\]\)\s\(.*\)/\2/g")" >> /tmp/todo_temp
}
((contador++));
done < $FILE

cp /tmp/todo_temp $FILE

}


Aquí algunas capturas:
#23
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
Scripting / [Bash] Mis scripts
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 (bash) [Seleccionar]

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


usb

Código (bash) [Seleccionar]
#!/bin/bash
# Leo Gutiérrez R.
# Script para navegar por sobre los dispositivos USB en el sistema.
# Uso personal.
select archivo in `ls -1 /media/ | grep -v "^cd$" | grep -v "^dvd$" | grep -v "^fl$" | grep -v "^ubuntu$" | grep -v "^windows$"`
do
if [ -n "$archivo" ]
then
cd /media/"$archivo"
break;
else
echo -e "Error eligiendo dispositivo";
exit 1;
fi
done


cdprompt

[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 (bash) [Seleccionar]
#!/bin/bash -
#===============================================================================
#
#          FILE:  cdprompt.sh
#
#         USAGE:  ./cdprompt.sh
#
#   DESCRIPTION:  Cambio de directorios interactivamente.
#
#       OPTIONS:  ---
#  REQUIREMENTS:  ---
#          BUGS:  ---
#         NOTES:  ---
#        AUTHOR: |Leo Gutiérrez R.| (), |leorocko13@hotmail|
#       COMPANY:
#       CREATED: 02/26/2011 01:51:28 AM CST
#      REVISION:  ---
#===============================================================================

select directorio in */ "SALIR"
do
if [ "$directorio" = "SALIR" ]
then
break;
elif [[ -n "$directorio" ]]
then
cd "$directorio"
break;
else
echo -e "\aError de opción.";
break;
fi
done


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

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 (bash) [Seleccionar]
#!/bin/bash
# Script de borrado interactivo.
# Leo Gutiérrez Ramírez. leorocko13@hotmail.com

function rmsecure()
{

select archivos in * "SALIR"
do
if [ "${archivos}" = "SALIR" ]
then

exit 0;

elif [[ -n "${archivos}" ]]
then

sudo rm -rvi "${archivos}" || {
echo -e "Error borrando archivo : ${archivos}";
exit 0;
}

clear;
rmsecure;

else

echo -e "Error eligiendo archivo.";

fi

done
}

clear;
rmsecure;


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


Código (bash) [Seleccionar]
#!/bin/bash

[ ${UID} != 0 ] && {
echo -e "Se requieren privilegios de Root";
exit 1;
}

pacman -Qei | sed -n "s/^Name.*\:\s\(.*\)/\1/p" > nombres.txt
pacman -Qei | sed -n "s/^Version.*\:\s\(.*\)/\1/p" > versiones.txt

Xdialog --title "Desinstalar paquetes" --menu "Elija su paquete:" 24 51 6 $(paste nombres.txt versiones.txt) 2> /tmp/menu.tmp.$$

retval=$?
choice=`cat /tmp/menu.tmp.$$`
rm -f nombres.txt
rm -f versiones.txt
rm -f /tmp/menu.tmp.$$

case "$retval" in
  1)
    exit 0;
    ;;
  255)
    exit 0;
    ;;
esac

yes | pacman -R "${choice}" && {
Xdialog --title "Desinatalar paquetes" --msgbox "${choice} desinstalado con éxito." 10 100
} || {
Xdialog --title "Desinatalar paquetes" --msgbox "${choice} no se pudo desinstalar." 10 100
exit 1;
}

exit 0;


sc

Código (bash) [Seleccionar]
#!/bin/bash
# Leo Gutiérrez R.
# Script para comprobar si un proceso está corriendo.

[ $# -ne 1 ] && {
cat <<EOF

`basename $0` service

EOF
exit 1;
}

[ -f "/var/run/daemons/$1" ] && {
echo -e "\"$1\" running.";
} || {
echo -e "\"$1\" stopped.";
}
exit 0;


modins


Código (bash) [Seleccionar]
#!/bin/bash
# Script para instalar paquetes en Perl.

function getch()
{
OLD_STTY=`stty -g`
stty cbreak -echo
look=`dd if=/dev/tty bs=1 count=1 2>/dev/null`
stty $OLD_STTY
}

function installModule()
{
sudo perl Makefile.PL
sudo make
sudo make test
sudo make install
}

function modins()
{
archivo=
select archivo in *.tar.gz "SALIR"
do
if [ "${archivo}" = "SALIR" ]
then

exit 0;

elif [[ -n "${archivo}" ]]
then

echo -e "Elegiste : ${archivo}";
tar zxvf "${archivo}" &> /dev/null || {
echo -e "Error descomprimiendo [ ${archivo} ]";
exit 1;
}

cd "${archivo%\.tar.gz}" 2> /dev/null || {
echo -e "\aError abriendo directorio ${archivo%%.*}";
exit 1;
}

installModule;

echo -e "\E[31;47mMódulo instalado. Presione una tecla para continuar.";
tput sgr0;
getch;
break;

else

echo -e "Error eligiendo archivo.";
exit 0;

fi

done
}

modins;
exit 0;


Saludos.
#25
Java / Agregar array de checkbox a JDialog
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
Redes / Duda básica
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 (bash) [Seleccionar]
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
GNU/Linux / Problema Arch, GRUB
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 (bash) [Seleccionar]
ubuntu@ubuntu:/mnt$ sudo grub-install /dev/sdb
Could not find device for /boot: Not found or not a block device.
ubuntu@ubuntu:/mnt$



Código (bash) [Seleccionar]
ubuntu@ubuntu:/mnt/dev$ sudo fdisk -l

Disco /dev/sda: 40.0 GB, 40020664320 bytes
255 cabezas, 63 sectores/pista, 4865 cilindros
Unidades = cilindros de 16065 * 512 = 8225280 bytes
Identificador de disco: 0xda130d5b

Disposit. Inicio    Comienzo      Fin      Bloques  Id  Sistema
/dev/sda1   *           1        1785    14337981    7  HPFS/NTFS
/dev/sda2            1786        4865    24740100    5  Extendida
/dev/sda5            1786        4732    23671746   83  Linux
/dev/sda6            4733        4865     1068291   82  Linux swap / Solaris

Disco /dev/sdb: 80.0 GB, 80026361856 bytes
255 cabezas, 63 sectores/pista, 9729 cilindros
Unidades = cilindros de 16065 * 512 = 8225280 bytes
Identificador de disco: 0x906776e1

Disposit. Inicio    Comienzo      Fin      Bloques  Id  Sistema
/dev/sdb1   *           1          20      160618+  83  Linux
/dev/sdb2              21          59      313267+  82  Linux swap / Solaris
/dev/sdb3              60        1016     7687102+  83  Linux
/dev/sdb4            1017        9729    69987172+  83  Linux
ubuntu@ubuntu:/mnt/dev$
#28
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 (bash) [Seleccionar]
#!/bin/bash
# Leo Gutiérrez R. leorocko13@hotmail.com
[ ${UID} != 0 ] && {
echo -e "Se requieren privilegios de Root";
exit 1;
}

MODULE_NAME="Math::BigInt::Random";
URL_MODULE="http://search.cpan.org/CPAN/authors/id/B/BI/BILLH/Math-BigInt-Random-0.04.tar.gz";
PATH_MODULE="Math-BigInt-Random-0.04.tar.gz";

perl -M${MODULE_NAME} -e 1 2> /dev/null || {
echo -e "\aEl módulo no existe\n¿Desea instalarlo:?";
opciones="Sí No";
select opt in ${opciones}
do
if [ "${opt}" = "Sí" ]
then

wget "${URL_MODULE}";
tar zxvf "${PATH_MODULE}";
cd "${PATH_MODULE%\.tar.gz}" 2> /dev/null || {
echo -e "\aError abriendo directorio ${1%%.*}";
exit 1;
}
perl Makefile.PL
make
make test
make install
exit 0;

elif [ "${opt}" = "No" ]
then

echo -e "\aLa instalación del módulo es necesaria";
exit 1;

fi
done
}


Código (bash) [Seleccionar]
leo@leo-desktop:~/Escritorio$ sudo bash shell.sh
El módulo no existe
¿Desea instalarlo:?
1) Sí
2) No
#? 1
--2011-01-11 17:30:26--  http://search.cpan.org/CPAN/authors/id/B/BI/BILLH/Math-BigInt-Random-0.04.tar.gz
Resolviendo search.cpan.org... 207.115.101.144, 194.106.223.155
Conectando a search.cpan.org|207.115.101.144|:80... conectado.
Petición HTTP enviada, esperando respuesta... 302 Found
Ubicación: http://www.msg.com.mx/CPAN/authors/id/B/BI/BILLH/Math-BigInt-Random-0.04.tar.gz [siguiente]
--2011-01-11 17:30:26--  http://www.msg.com.mx/CPAN/authors/id/B/BI/BILLH/Math-BigInt-Random-0.04.tar.gz
Resolviendo www.msg.com.mx... 200.33.54.1
Conectando a www.msg.com.mx|200.33.54.1|:80... conectado.
Petición HTTP enviada, esperando respuesta... 200 OK
Longitud: 11569 (11K) [application/x-tar]
Guardando en: «Math-BigInt-Random-0.04.tar.gz»

100%[========================================================================================================================================>] 11,569      --.-K/s   en 0.1s   

2011-01-11 17:30:26 (108 KB/s) - «Math-BigInt-Random-0.04.tar.gz» guardado [11569/11569]

Math-BigInt-Random-0.04/
Math-BigInt-Random-0.04/Changes
Math-BigInt-Random-0.04/lib/
Math-BigInt-Random-0.04/lib/Math/
Math-BigInt-Random-0.04/lib/Math/BigInt/
Math-BigInt-Random-0.04/lib/Math/BigInt/Random.pm
Math-BigInt-Random-0.04/LICENSE
Math-BigInt-Random-0.04/Makefile.PL
Math-BigInt-Random-0.04/MANIFEST
Math-BigInt-Random-0.04/META.yml
Math-BigInt-Random-0.04/README
Math-BigInt-Random-0.04/t/
Math-BigInt-Random-0.04/t/01_test.t
Math-BigInt-Random-0.04/t/02_pod.t
Math-BigInt-Random-0.04/t/03_pod_coverage.t
Math-BigInt-Random-0.04/Todo
Checking if your kit is complete...
Looks good
Writing Makefile for Math::BigInt::Random
cp lib/Math/BigInt/Random.pm blib/lib/Math/BigInt/Random.pm
Manifying blib/man3/Math::BigInt::Random.3
PERL_DL_NONLAZY=1 /usr/local/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/01_test.t .......... ok     
t/02_pod.t ........... ok   
t/03_pod_coverage.t .. skipped: Test::Pod::Coverage required for testing POD coverage
All tests successful.
Files=3, Tests=15,  3 wallclock secs ( 0.04 usr  0.02 sys +  0.35 cusr  0.08 csys =  0.49 CPU)
Result: PASS
Manifying blib/man3/Math::BigInt::Random.3
Installing /usr/local/lib/perl5/site_perl/5.12.0/Math/BigInt/Random.pm
Installing /usr/local/share/man/man3/Math::BigInt::Random.3
Appending installation info to /usr/local/lib/perl5/5.12.0/i686-linux/perllocal.pod


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

CitarIgnacio 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
Scripting / Facebook Manager [ Perl ]
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

CitarCPAN 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 (bash) [Seleccionar]
leo@leo-desktop:~/Escritorio/test$ ls -1
Gtk2-1.222.tar.gz
leo@leo-desktop:~/Escritorio/test$ tar zxvf Gtk2-1.222.tar.gz
...
...
...


Nos creará una carpeta:

Código (bash) [Seleccionar]
leo@leo-desktop:~/Escritorio/test$ ls -1
Gtk2-1.222
Gtk2-1.222.tar.gz


Entramos en ella e instalamos de la siguiente manera:

Código (bash) [Seleccionar]
cd Gtk2-1.222/
sudo perl Makefile.PL
sudo make
sudo make test
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 (bash) [Seleccionar]
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 (bash) [Seleccionar]
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 (perl) [Seleccionar]
#!/usr/bin/perl -w
# Leo Gutiérrez R.
# leorocko13@hotmail.com
use strict;
use Gtk2 -init;
use Gtk2::GladeXML;
use 5.010;
use encoding ':locale';
use constant TRUE => 1;
use constant FALSE => !TRUE;

# Variables globales indispensables.
########################################################################

my($programa, $ventana_principal);
$programa = Gtk2::GladeXML->new('hola.glade');
$ventana_principal = $programa->get_widget('window1');
my $ventana_de_estado = $programa->get_widget('ventana_de_estado');
my $ventana_about = $programa->get_widget('about');

# Cargamos los componentes.
$programa->signal_autoconnect_from_package('main');

# La señal para que cuando cierre se CIERRE TODO.
$ventana_principal->signal_connect(destroy => sub
{
Gtk2->main_quit();
}
);

$ventana_de_estado->signal_connect(destroy => sub
{
$ventana_de_estado->hide();
}
);

$ventana_about->signal_connect(destroy => sub
{
$ventana_about->hide();
}
);

# Mostrar todo.
$ventana_principal->resize(520, 570);
$ventana_principal->show_all();
#$ventana_principal->set_resizable(FALSE);

my $user_selected;
my @friends;

########################################################################

# Agregar el combo.
my $combito = $programa->get_widget('combito');
&llenarComboAmigos;
$combito->signal_connect('changed' => \&on_combito_changed);
$combito->set_active(0);

# Agregar los TextBox
my $texto = $programa->get_widget('texto');
my $texto_2 = $programa->get_widget('texto_2');

# Agregar la barra de status
my $status = $programa->get_widget('status');
my $context_id = $status->get_context_id("");

# Agregar la imagen de perfil
my $imagen_perfil = $programa->get_widget('perfil_Image');

# Agregar texto salida de información
my $textoSalida = $programa->get_widget('textoSalida');
my $buffer = $textoSalida->get_buffer();

$ventana_principal->show_all();
Gtk2->main();

sub on_boton_cerrar_clicked
{
  Gtk2->main_quit();
}

sub on_salirFileItem_activate
{
Gtk2->main_quit();
}

sub llenarComboAmigos
{
for(qx|fbcmd friends|)
{
push(@friends, m/^\d+\s+(.*)/);
}
map($combito->append_text($_), sort @friends);
}

sub on_combito_changed
{
my ($cb) = @_;
if($cb->get_active())
{
$user_selected = $cb->get_active_text();
$status->push($context_id, sprintf("Usuario seleccionado : %s", $user_selected));
$buffer->set_text("");
}
}

sub on_texto_activate
{
unless ($user_selected)
{
$status->push($context_id, sprintf("Seleccione un usuario para enviar el mensaje."));
return;
}

my $mensaje = $texto->get_text();
$mensaje =~ s/"/\\"/g;
$mensaje =~ s/`/\\`/g;
$mensaje =~ s/\(/\\(/g;
qx|fbcmd wallpost "$user_selected" "${mensaje}"|;

$status->push($context_id, sprintf("Mensaje publicado en muro de usuario : %s", $user_selected));
}

sub on_texto_2_activate
{
my $mensaje = $texto_2->get_text();
$mensaje =~ s/"/\\"/g;
$mensaje =~ s/`/\\`/g;
$mensaje =~ s/\(/\\(/g;
qx|fbcmd status "${mensaje}"|;
$status->push($context_id, sprintf("Status cambiado"));
}

sub on_verImagenDePerfil_activate
{
unless ($user_selected)
{
$status->push($context_id, sprintf("Seleccione un usuario de la lista."));
return;
}

qx|fbcmd ppics "$user_selected" . "-pf=[tname].jpg" -ppsize=1|;
$imagen_perfil->set_from_file("$user_selected" . ".jpg");
unlink("$user_selected" . ".jpg") or warn("No se pudo borrar el archivo \"${user_selected}.jpg\"");

}

# Ventana de estado

sub on_verEstado_activate
{
unless ($user_selected)
{
$status->push($context_id, sprintf("Seleccione un usuario de la lista."));
return;
}

my $vbox = Gtk2::VBox->new(FALSE, 5);

my $frame = Gtk2::Frame->new("Amigo - Estado");
$frame->set_border_width(5);

my $sw = Gtk2::ScrolledWindow->new (undef, undef);
   $sw->set_shadow_type ('etched-out');
$sw->set_policy ('automatic', 'automatic');
$sw->set_size_request (600, 100);
$sw->set_border_width(5);

my $tview = Gtk2::TextView->new();
  my $buffer = $tview->get_buffer();
my $s = &getStatus();
$buffer->set_text($s);

$sw->add($tview);
$frame->add($sw);
$vbox->pack_start($frame,TRUE,TRUE,4);
$vbox->show_all();
$ventana_de_estado->add($vbox);

$ventana_de_estado->show();

}

sub getStatus
{
my $s = qx|fbcmd fstatus "$user_selected"|;

my($status) = $s =~ m/^$user_selected\s+(.*)/gims;
#$status =~ s/\s{22}(.*)/\n$1/gi;
#$status =~ s/^(\s+)(.*)/$2/gim;

return $s;

}

sub getPresence
{
my($s) = qx(fbcmd finfo online_presence "${user_selected}") =~ m/(active|offline)$/;
return $s;
}

sub on_verPresencia_activate
{
$buffer->set_text("Presencia : " . &getPresence());
}

sub on_aboutFileItem_activate
{
$ventana_about->run();
$ventana_about->hide();
}


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

#32
Java / Música de fondo
12 Diciembre 2010, 00:56 AM
Hola.

¿Podrían darme alguna guía sobre como poner música a una aplicación?, es un formulario normal, no en un applet.

Saludos.
#33
Java / Esperar hasta que formulario termine
27 Noviembre 2010, 05:41 AM
Hola, tengo un problema, en un botón de mi formulario principal, yo mando a hablar a otro formulario, algo así:

Código (java) [Seleccionar]
private void btnNuevoActionPerformed(java.awt.event.ActionEvent evt) {                                         
        //new Datos().setVisible(true);
        Datos dat = new Datos();
        dat.setVisible(true);
       
    }   


Funciona bien, abre el formulario y puedo trabajar sobre el, pero el problema está en que yo tengo que esperar que termine el formulario que abrí para de ahí recoger los datos. Pero el código que tengo abre el formulario y continua su ejecución.

¿Alguien sabe como puedo arreglarlo?
#34
Java / CTRL Z CTRL D - end of file
10 Noviembre 2010, 18:07 PM
Hola a todos, tengo un ligero problema.

Necesito descubrir qué combinación es la que genera un END OF FILE en mi sistema.

Yo sé que en *unix es CTRL + D porque trabajo mucho con flujos en mi consola, pero bueno, hay alguna manera de saber ¿qué combinación es la que genera el eof, si CTRL + D ó CTRL + Z?

He visto algunos ejemplos que controlan el EOF, yo necesito saber cuál es.

Gracias de antemano, chicos.
#35
Scripting / RAR brute force [bash]
1 Noviembre 2010, 09:34 AM
Hola, viendo algunos proyectos en sourceforge en shell script, hallé este:

Funciona bien, pero no me gustó el código, así que lo rehice siguiendo la idea del autor.

Código (bash) [Seleccionar]
#!/bin/bash
#===============================================================================
#
#          FILE:  bruto.sh
#
#         USAGE:  ./bruto.sh
#
#   DESCRIPTION:  Found passwords in RAR files using a word list
#  Idea original de http://sourceforge.net/projects/rarbrute/
#       OPTIONS:  ---
#  REQUIREMENTS:  rar, sed, wc,
#          BUGS:  ---
#         NOTES:  ---
#        AUTHOR:  Leo Gutierrez Ramirez (), leorocko13@hotmail.com
#       VERSION:  1.0
#       CREATED:  31/10/10 22:15:40 MST
#      REVISION:  ---
#===============================================================================
function usage()
{
cat <<EOF

`basename $0` file.rar [-d word-list | -n number-limit | -h]

-h : Help

Author : Leo Gutiérrez R (leorocko13@hotmail.com),  idea from aciddata:
http://sourceforge.net/projects/rarbrute/files/

EOF
exit 1
}

function isRAR()
{
[[ -f "$1" ]] && {
if [ "`file -b "$1" | awk '{print $1}'`" = "RAR" ]
then
return 1;
else
return 0;
fi
} || {
echo -e "Can't find or read file - $1 -";
return 0;
}
}


args=`getopt d:n:h $* 2> /dev/null`
if test $? != 0
then
usage;
fi

set -- $args

for i
do
case "$i" in
# -n ##############################################################
-n)
shift;

RARFILE="$3";
NLIMIT="$1";

# Checar que -n sean números :
n=`echo ${NLIMIT} | tr -d "[0-9]"`
if [[ ! -z $n ]]
then
echo -e "`basename $0` -> ${NLIMIT} Number needed ";
exit 1;
fi

isRAR ${RARFILE}
if [ $? -ne 1 ]
then
echo -e "\n\t`basename ${RARFILE}` This is no RAR file\n";
exit 1;
fi

((i = 0));

while((i <= $NLIMIT))
do
test=`rar x -p"${i}" "${RARFILE}" 1>/dev/null 2>/dev/null`
test2=$?
if [ "$test2" = 0 ]
then
echo -e "\n file "${RARFILE}" is successfully broken the used key is: \"${i}\"\n\a"
exit 0;
fi
((i++));

done

echo -e "\n\tKey not found\n";

shift;

# Romper el ciclo :
break;

shift;
;;
# -d #############################################################
-d)
shift;

WORDLIST="$1";
RARFILE="$3";
LINES=`wc -l "${WORDLIST}" | awk '{print $1}'`

((n = 1));
while [ "$LINES" -gt "$n" ]
do

line=`head -"$n" "${WORDLIST}" | tail -1`
testing=`rar x -p"$line" "${RARFILE}" 1>/dev/null 2>/dev/null`
testing2=`echo $?`
if [ "$testing2" = 0 ]
then
echo -e "\n\tfile "${RARFILE}" is successfully broken";
echo -e "\tthe used keyword is: $line\n\a";
exit 0;
fi
((n++));
done

# Romper el ciclo :
break;

shift;
;;

-h)
usage;
;;
*)
echo -e "[Unknow Option\a]";
usage;
;;
esac
done


Para que funcione bien, el formato del diccionario debe ser totalmente UNIX, por lo que hay que remover los CR/LF.

Usen dos2unix:

Código (bash) [Seleccionar]
leo@leo-desktop:~/proyectos/brutorar$ dos2unix -a -d -vv -b -o dic.dic
dos2unix: Converting dic.dic
leo@leo-desktop:~/proyectos/brutorar$


Ahora sí:

Código (bash) [Seleccionar]
leo@leo-desktop:~/proyectos/brutorar$ bash my_bruto.sh a.rar -d dic.dic

        file a.rar is successfully broken
        the used keyword is: leito

leo@leo-desktop:~/proyectos/brutorar$
#36
Scripting / Bucles tipo C/C++ en Bash
30 Octubre 2010, 07:42 AM
Hola, hace rato que quería escribir esto.

Yo honestamente prefiero los ciclos tipo C que los que brinda la shell, así que relato un poco como utilizarse, varía un poco, pero practicamente es la misma.

FOR:


Código (bash) [Seleccionar]
for((i = 0; i < 10; i++))
do
echo -e "Contador : ${i}";
done



Código (bash) [Seleccionar]
#!/bin/bash
for((i = 0; i < 10; ))
do
echo -e "Contador : ${i}";
((i++));
done


WHILE:

Código (bash) [Seleccionar]
#!/bin/bash
((i = 0));
while((i <= 10))
do
echo -e "${i}";
((i++));
done



Código (bash) [Seleccionar]
#!/bin/bash
((i = 0));
while((i++ <= 10))
do
echo -e "${i}";
done
#37
Hola, estoy en un problema.

Me quedan 600 megas en disco duro, ya no puedo instalar nada más. Tengo un solo disco duro, particionado, en uno Windows y en otro Ubuntu 8.04 - Hardy Heron, en la partición de Windows me queda más espacio, pero en Linux ya no.

Quisiera configurar la partición de Windows para que por defecto ahí se instalen todos los nuevos programas que yo instale.

¿O cómo podría redimensionar la partición donde está Linux para darle más espacio?
#38
Hola, estoy haciendo un visor de documentos de texto(sí lo sé, es una estupidez, pero quiero practicar un poco de componentes en Java, aparte que tengo cientos de libros en .txt y me sería útil).

Bueno, lo que hago para volcar todo al JTextArea es leer el archivo con un Scanner y en cada línea hacer un append al JTextArea, así:
Código (java) [Seleccionar]

File file = fc.getSelectedFile();
                       filename = file.getAbsolutePath();
                       lblNameFile.setText(filename);
                       // Leer archivo:
                       File archivo = new File(filename);
                       Scanner sc = new Scanner(archivo);
                       sc.useDelimiter("\n");
                       String linea;
                       while (sc.hasNext())
                       {
                           linea = sc.next();
                           texto.append((linea.isEmpty() ? " " : ++lineNumber) + "\t" + linea + "\n");
                       }
                       lineNumber = 0;
                       sc.close();


Funciona bien, el problema es que el scroll se va hasta abajo(estamos hablando de unas 3000 líneas por archivo de texto), así que quisiera que aunque todo fuese volcado al JTextArea, el scroll quedará en la primera línea, ¿podrían decirme cómo?

Otra cosa, quisiera un método Ir a, ¿hay algo que me permita ir a cierta línea en el JTextArea?

Usé este método para obtener el número de línea(algo rústico, pero funciona):

Código (java) [Seleccionar]
while (sc.hasNext())
                       {
                           linea = sc.next();
                           texto.append((linea.isEmpty() ? " " : ++lineNumber) + "\t" + linea + "\n");
                       }


Les dejo todo el código para que lo prueben, de antemano gracias.

http://rapidshare.com/files/424244300/TextViewer.java

http://www.megaupload.com/?d=M5EZAF8X

EDITO:

He solucionado lo de poner el cursor en la primera línea así:

texto.setCaretPosition(0);

Ahora me queda otra duda, estoy teniendo problemas al abrir archivos con espacios con el Scanner, ¿alguien sabe como resolverlo?
#39
.NET (C#, VB.NET, ASP) / Orientación C# ó VB .net
19 Septiembre 2010, 09:49 AM
Antes que nada cabe decir que soy un ignaro en estos dos lenguajes, así que si cometo una burrada haganmelo saber.

Bueno, lo que pasa es que me he cansado un poco de de programar en C/C++, ojo, no estoy diciendo que sea aburrido, sino que el desarrollo es lento, cosa que me ha desesperado.

Así que me he decidido migrar hacia Visual Basic .net o C#, así que debo elegir entre ambos.

Pero tengo dudas, no voy a pedir que me digan las ventajas o desventajas, lo que quisiera saber es cuál tiene más cabida laboral actualmente.

¿en cuál se desarrolla más rápido?, ¿cuál me brinda más ventajas?

¿cómo es el rollo de las GUI's con C#?

¿qué necesito para programar en cada uno?


Bueno, gracias por todo.

El lunes formateo mi PC, pondré Windows 7 y lo que me indiquen.
#40
Hola a todos, necesito un poco de ayuda.

Uso Ubuntu 9.04 - Jaunty Jackalope.

El problema está en que no puedo encontrar una combinación de teclado para dar con estos símbolos < y >, no los puedo sacar, y realmente necesito estos caracteres para programar en esta laptop.

Gracias de antemano.
#41
Seguridad / Ayuda - Burlar pagina de conteo
18 Agosto 2010, 08:03 AM
Hola a todos, necesito algo de ayuda.

Resulta que mi hermano tiene una banda, y se está haciendo un concurso de votaciones, en las que la gente puede votar por una canción de ellos. Tu eliges cuánto le das, entre más alta sea su calificación pues mejor. Resulta que alguien está votando mal por ellos, les están dando muy malas calificaciones.

La pagina es esta:

http://escucha.universia.net.mx/concurso/escucha-maqueta/strangers-in-the-space

Subiendo la estrellitas es como se pone la calificación.


Entonces necesito saber si hay alguna manera de pasar ese sistema, tal vez usando un proxy, no sé, necesito ideas.

De antemano gracias.
#42
Hola a todos.

Esta propuesta surge a raíz de la ola de distintas maneras de codificar que he visto en algunos scripts últimamente. Si bien podemos hacer el script como nos de en gana, esto puede ser perjudicial para el desarrollo del mismo, cuando otros programadores lo vean, se hará dificil entenderlo, así que propongo que entre todos hagamos una lista de cómo se debería programar en Batch. Cosas como:

Código (dos) [Seleccionar]

:label

código
código
código


El ancho de tabulador a 4 espacios, deja una línea en blanco antes de la declaración de etiqueta y una después, luego el código tabulado.

La declaración de una función:


Código (dos) [Seleccionar]
:string_f

código
código
código

goto:string


Lo mismo que antes, una línea en blanco antes y después de la declaración de etiqueta, el nombre de la "función" seguida de un "_f" que hará claro que es una función.


También cómo deben ser los nombres de las variables, etc, etc.

Cosas como estas, que creo son para bien. Así que si les gusta la idea apoyenla. Espero su colaboración.


Saludos.
#43
Hola, esto surgió de la necesidad de administrar lo que copio y debo respaldar de internet.

Se trata de un script en Bash, usando las herramientas Xdialog y Parcellite.

Parcellite es un administrador del portapapeles, para GNU/Linux, aquí la descripción:

Parcellite is a lightweight GTK+ clipboard manager. This is a stripped down, basic-features-only clipboard manager with a small memory footprint for those who like simplicity.


Uso:
 parcellite [OPCIÓN...]

Ejemplos del portapapeles por el terminal:

 echo "copiado a portapapeles" | parcellite
 parcellite "copiado a portapapeles"
 echo "copiado a portapapeles" | parcellite -o

Opciones de ayuda:
 -?, --help        Mostrar opciones de ayuda

Opciones de la aplicación:
 -d, --daemon      Ejecutar como demonio
 -n, --no-icon     No usar icono de estado (Ctrl-Alt-P para el menú)
 -o, --output      Imprimir contenido del portapapeles

Escrito por Gilberto "Xyhthyx" Miralla.
Reportar errores a <xyhthyx@gmail.com>.


Este software nos permite "programar" una acción con el contenido del portapapeles, esta acción se ejecuta con un atajo de teclado que podemos definir.


Bueno, pues hice el script siguiente, que mediante la acción tu puedas respaldar en un archivo lo que copiaste:

Código (bash) [Seleccionar]
#!/usr/bin/bash
#===============================================================================
#          FILE:  clip.sh
#         USAGE:  ./clip.sh
#   DESCRIPTION:  Script de automatización de copiado y pegado.
# parcelite, xdialog y este pequeño script.

# Mediante la opción "Acciones" de parcelite, podemos programar una opción
# En este caso llamaremos a este script para que volque el texto.
#  REQUIREMENTS:  --- Xdialog, parcellite
#        AUTHOR: Leo Gutiérrez Ramírez. (fgm), leorocko13@hotmail.com
#       CREATED: 30/07/10 17:42:34 MDT
#===============================================================================
ELEGIDO=1
while [ $ELEGIDO -eq 1 ]
do
FILE=`Xdialog --backtitle "Leo Gutierrez R." --title "Elija la ruta y el nombre de su archivo" \
--no-buttons --check "Agregar" --fselect "${HOME}" 30 70 2>&1`
case "$?" in
1)
exit 0;
;;
255)
exit 0;
;;
esac
echo -e "Algo : -${FILE}-" | grep "^checked-" > /dev/null && AGREGAR=1 || AGREGAR=0
FILE=`echo -e "${FILE}" | sed -e "s/^checked$//gi" -e "s/^unchecked$//gi"`
if [ -d "${FILE}" ]
then
Xdialog --title "Error de elección de archivo" --msgbox "No ha elegido un nombre de archivo válido.\n
Probablemente solo eligió el directorio destino.\n" 10 50
ELEGIDO=1
else
ELEGIDO=0
fi
done

if [ $AGREGAR -eq 1 ]
then
parcellite -o >> "${FILE}"
else
parcellite -o > "${FILE}"
fi
exit 0;


Aquí está la interfaz del script:


Configuren las acciones de parcellite, poniendo en el comando:
bash "RutaDelScript.sh"

Le puse una opción por si quieres agregar al archivo, es decir, evita que el contenido sea truncado.

Para instalar en Ubuntu:
sudo apt-get install parcellite

Saludos.

#44
Hola a todos.

Quisiera que se quitara a "Tcl" ya que nadie pregunta sobre ese lenguaje, sería mejor si se reemplazara por otro lenguaje. Incluso VBScript queda fuera, que es el segundo del que más preguntan.

Saludos.
#45
¿Ustedes consideran que soy algo duro al dar respuesta a los temas?