From emhn at telcel.net.ve Wed Oct 9 08:43:56 2002 From: emhn at telcel.net.ve (Ernesto Hernandez-Novich) Date: Wed Aug 4 23:59:32 2004 Subject: [l-linux] buscar y reemplazar In-Reply-To: Message-ID: On Tue, 8 Oct 2002, Alejandro Aranguren wrote: > lei sobre find y fgrep y no entiendo como usarlos. find busca archivos seg?n varios criterios (nombre, tama?o, due?o) y emite una lista con los archivos encontrados. fgrep busca una expresi?n constante (usualmente una cadena de caracteres) dentro de uno o m?s archivos. > Lo que quiero es buscar en una o varias carpetas todos los archivos que > adentro tengan alguna palabra o secuencia de palabras y el mismo comando > me reemplace por otra palabra que yo quiera cambiar. Puedes usar find para construir la lista de archivos find /directorio -print Sin embargo, para editar no te va a servir fgrep (que solamente _busca_), sino que deber?as usar sed sobre cada archivo. El manual de find sugiere leer info Finding Files para tener m?s ejemplos de uso. El concepto general es construir la lista de archivos con find y utilizarla para alimentar a sed; como find emite su lista de archivos por la salida est?ndar y sed los espera en la l?nea de comando, hay que apoyarse en xargs para que haga la transformaci?n find /directorio -print | xargs sed sed tiene su propia idiosincracia en cuanto a las operaciones de edici?n, y el manual es bastante expl?cito. Por supuesto, uno puede ir con Perl y escribir use File::Find; sub wanted { my $o = $File::Find::name; my $n = "$o.temporal"; open O,"<$o"; open N,">$n"; while () { s/foo/bar/g; # O cualquier basura que uno quiera editar print N $_; } close O; close N; rename($o,"$o.backup"); # Copia del original, por si acaso. rename($n,$o); } find(\&wanted,'/directorio','/otro/directorio'); Caveat Emptor: rename() no funciona si el viejo y el nuevo est?n en sistemas de archivo diferentes, por eso es que tengo que crear el archivo intermedio. Si se sospecha que alguien puede estar modificando cosas al mismo tiempo que este programa, es conveniente utilizar alg?n tipo de bloqueo sobre los archivos (flock). -- Ernesto Hern?ndez-Novich - Running Linux 2.4.19 i686 - Unix: Live free or die! Geek by nature, Linux by choice, Debian of course. If you can't apt-get it, it isn't useful or doesn't exist. GPG Key Fingerprint = 438C 49A2 A8C7 E7D7 1500 C507 96D6 A3D6 2F4C 85E3 ------------------------------------------------------------------------ Enviar e-mail a colocando en el cuerpo: "UNSUBSCRIBE caracas-pm-list" para desuscribirse. "INFO caracas-pm-list" para conocer las reglas de etiqueta. ------------------------------------------------------------------------ From emhn at telcel.net.ve Wed Oct 9 13:43:06 2002 From: emhn at telcel.net.ve (Ernesto Hernandez-Novich) Date: Wed Aug 4 23:59:32 2004 Subject: RGB-2-CMYK (era: Re: [l-linux] Herramienta parea convertir bmp a jpg.) In-Reply-To: <02100912202101.04270@cyberbyte.linuxlan> Message-ID: On Wed, 9 Oct 2002, JR wrote: > > GIMP no soporta el modelo CMY(K) todav?a, lo cual lo hace > > inconveniente para trabajar im?genes que van a medio _impreso_. Tampoco > > soporta Pantone, pero s?lo porque se trata de una tecnolog?a patentada > > por la cual hay que pagar para poder implementar. > > > > GIMP trabaja con los modelos de color RGB y HSV. > > Estuve leyendo que para la versi?n de GIMP 2.0 se a?adira el soporte al > modelo CMYK (colores de impresi?n). Si, porque va a tener una infraestructura de manipulaci?n de color completamente nueva, basada en utilizar 16 bits por componente de color. Esto no es ni necesario ni suficiente para soportar CMYK, pero ya que van a reescribir tal parte, es oportuno incluir este modelo (y el soporte a otros que son bastante importantes como YCrCb, YIQ, YUV y el modelo CIE puro). > Hay otra aplicaci?n de software libre llamada Scribus (buscar en > http://web2.altmuehlnet.de/fschmid/) que aunque no la he usado, dice en la > documentaci?n http://www.atlantictechsolutions.com/scribusdocs/ que soporta > CMYK y otras caracter?sticas tales como exportaci?n a SVG (mediante un plugin > disponible en la p?gina de download) y PDF. Scribus soporta cualquier modelo de color implementado en la librer?a de manejo de colores lcm (apt-get install liblcms), que abstrae la transformaci?n entre los modelos de color aditivos, substractivos y perceptivos tanto para im?genes est?ticas como para video. GIMP tiene embebida su propia librer?a de manejo de colores, puesto que es anterior a la aparici?n de lcm. El problema fundamental del soporte a CMYK es que se trata de un modelo de color _substractivo_ que solamente tiene aplicaci?n para medio impreso. Cada fabricante de medio impreso tiene su propia "definici?n" de CMYK basado en la calidad de sus tintas y las posibles configuraciones de papel que usa. En otras palabras no hay un "standard" uniforme. En un mensaje anterior afirm? que CMYK y RGB son complementarios (o "inverso uno del otro") y eso no es totalmente cierto desde el punto de pista _perceptual_ (lo que se "ve", en contraposici?n con lo que se "calcula"). Hay colores en RGB que _no_ se pueden convertir fielmente a CMYK; aunque _matem?ticamente_ son complementarios (R = 1 - C), _perceptualmente_ no son iguales [1]. Esto quiere decir que en muchos casos el conversor debe _saber_ el modelo particular de CMYK que implementa la impresora/plotter de salida a fin de ajustar la conversi?n. Y el algoritmo de conversi?n que envi? es un ejemplo de la falta de standards [2]: En teor?a C = 1 - R, M = 1 - G, Y = 1 - B, K = min(C,M,Y), pero resulta que algunos fabricantes de impresoras, para vender m?s tinta de peor calidad, ajustan C' = C - K, M' = M - K e Y' = Y - K. Otros ajustan utilizando una proporci?n lineal, otros una no lineal. Entonces, ?cu?l modelo utilizar en la conversi?n? [1] La gama de colores (subconjunto del espectro o gamut) generable con el modelo aditivo RGB es mucho m?s amplia que la generable con el CMYK. Hay "m?s" colores RGB que CMYK. ?C?mo manejar los huecos? [2] El algoritmo que envi? calcula min(R,G,B) en lugar de min(C,M,Y), de modo que debe sustituirse for (@rgb) { $min = $_ if $_ < $min; } return( map { 255 - $_ } @rgb, $min); por return((map { my $v = 255 - $_; $v < $min ? $min = $v : $v } @rgb), $min ); para corregir el error y hacerlo m?s compacto. Nada como la programaci?n funcional ;-). -- Ernesto Hern?ndez-Novich - Running Linux 2.4.19 i686 - Unix: Live free or die! Geek by nature, Linux by choice, Debian of course. If you can't apt-get it, it isn't useful or doesn't exist. GPG Key Fingerprint = 438C 49A2 A8C7 E7D7 1500 C507 96D6 A3D6 2F4C 85E3 ------------------------------------------------------------------------ Enviar e-mail a colocando en el cuerpo: "UNSUBSCRIBE caracas-pm-list" para desuscribirse. "INFO caracas-pm-list" para conocer las reglas de etiqueta. ------------------------------------------------------------------------ From emhn at telcel.net.ve Wed Oct 16 08:41:35 2002 From: emhn at telcel.net.ve (Ernesto Hernandez-Novich) Date: Wed Aug 4 23:59:32 2004 Subject: [l-linux] seis caracteres In-Reply-To: <001c01c27508$acbcfcd0$ef01a8c0@PCZ014> Message-ID: On Wed, 16 Oct 2002, Paco Martinez wrote: > Me gustaria obtener el numero de pid de un proceso haciendo algo asi como > > ps -ax | grep mysql | cut -f1 -d > > y me salen solo los procesos que NO empiezan por espacio en blanco -10032 > si, 4569 no- Claro, porque est?s utilizando el -f1 (primer campo), delimitado por espacios en blanco (-d' ', supongo). Si aparece un espacio en blanco, el primer campo es vac?o. Supongamos que _ representa un espacio en blanco. asdkfjasd_dflksjd (Campo 1) (Campo 2) __dlkfjsdf (Campo 3) Tienes campos 1 y 2 _vac?os_ porque antes del primer espacio en blanco no hay nada, y entre el primer espacio en blanco y el segundo tampoco hay nada. > ?hay alguna maneta de obtener el pid que voy buscado? Varias. > ? o lo que es lo mismo como obtener los seis primeros caracteres de una > linea al hacer ps -ax? Si insistes en usar cut, deber?as utilizar _caracteres_, precisamente sabiendo que ps utiliza posiciones fijas. Para eso lees completo el manual de cut (curioso, porque la opci?n -c viene antes que la opci?n -d en man cut). ps ax | grep mysql | cut -c1-5 y eso va a conservar los espacios en blanco desde el principio. Tambi?n puedes usar awk ps ax | awk '/mysql/ { print $1 }' Perl como complemento ps ax | perl -lane 'print $F[0] if /mysql/' o perl autocontenido utilizando el m?dulo Proc::ProcessTable #!/usr/bin/perl -w use ProcessTable; $t = new Proc::ProcessTable; print join(" ",map { $_->pid } grep { $_->cmndline =~ /mysql/ } @{$t->table}),"\n"; El m?dulo Proc::ProcessTable permite que en $t est? toda la tabla de procesos _completa_, y cada vez que se lee (con $t->table) se tome el estado actual de la tabla de procesos [1] y se obtenga en forma de lista. Luego uno busca lo que le interesa y opera, en este caso, los procesos cuya l?nea de comando contenga /mysql/, para luego obtener una lista de los PID, en este caso solamente las imprimo (por eso el print join), pero podr?a usarla para cualquier otra cosa. El m?dulo Proc::ProcessTable est? en CPAN y se instala por los mecanismos habituales, a menos que uno use Debian en cuyo caso basta un apt-get install libproc-process-perl [1] Es _independiente_ del sistema operativo, recordando que Perl funciona en Unix, Windows, MacIntosh, VMS... siempre muestra lo que est? disponible en el sistema. -- Ernesto Hern?ndez-Novich - Running Linux 2.4.19 i686 - Unix: Live free or die! Geek by nature, Linux by choice, Debian of course. If you can't apt-get it, it isn't useful or doesn't exist. GPG Key Fingerprint = 438C 49A2 A8C7 E7D7 1500 C507 96D6 A3D6 2F4C 85E3 ------------------------------------------------------------------------ Enviar e-mail a colocando en el cuerpo: "UNSUBSCRIBE caracas-pm-list" para desuscribirse. "INFO caracas-pm-list" para conocer las reglas de etiqueta. ------------------------------------------------------------------------ From cmolina at net-uno.net Wed Oct 16 16:52:29 2002 From: cmolina at net-uno.net (Carlos Molina) Date: Wed Aug 4 23:59:32 2004 Subject: Oferta de pasantia - tesis Message-ID: <3DADDF9D.5050301@net-uno.net> Saludos a todos. Estoy en la busqueda de universitarios interesados en realizar pasantia y/o tesis con referencia a programacion orientada a objetos en perl. No tiene relevancia el tiempo de la pasantia o la tesis. Tiempo completo. La pasantia o tesis sera para realizar algunos desarrollos de software en el NOC de NetUno. Las personas interesadas, enviar correo a cmolina@net-uno.net Saludos --------------------- Carlos Molina NetUno NOC ------------------------------------------------------------------------ Enviar e-mail a colocando en el cuerpo: "UNSUBSCRIBE caracas-pm-list" para desuscribirse. "INFO caracas-pm-list" para conocer las reglas de etiqueta. ------------------------------------------------------------------------ From jabel.geo at yahoo.com Wed Oct 16 17:46:29 2002 From: jabel.geo at yahoo.com (=?iso-8859-1?q?Abelardo=20Gutierrez?=) Date: Wed Aug 4 23:59:32 2004 Subject: Oferta de pasantia - tesis In-Reply-To: <3DADDF9D.5050301@net-uno.net> Message-ID: <20021016224629.50568.qmail@web11005.mail.yahoo.com> ?Estudiantes universitarios o profecionales universitarios? --- Carlos Molina escribi?: > Saludos a todos. > > Estoy en la busqueda de universitarios interesados > en realizar pasantia > y/o tesis con referencia a programacion orientada a > objetos en perl. > No tiene relevancia el tiempo de la pasantia o la > tesis. > Tiempo completo. > > La pasantia o tesis sera para realizar algunos > desarrollos de software > en el NOC de NetUno. > > > Las personas interesadas, enviar correo a > cmolina@net-uno.net > > Saludos > > --------------------- > Carlos Molina > NetUno NOC > > ------------------------------------------------------------------------ > Enviar e-mail a colocando en el > cuerpo: > "UNSUBSCRIBE caracas-pm-list" para desuscribirse. > "INFO caracas-pm-list" para conocer las reglas de > etiqueta. > ------------------------------------------------------------------------ _________________________________________________________ Do You Yahoo!? Informaci?n de Estados Unidos y Am?rica Latina, en Yahoo! Noticias. Vis?tanos en http://noticias.espanol.yahoo.com ------------------------------------------------------------------------ Enviar e-mail a colocando en el cuerpo: "UNSUBSCRIBE caracas-pm-list" para desuscribirse. "INFO caracas-pm-list" para conocer las reglas de etiqueta. ------------------------------------------------------------------------ From cmolina at net-uno.net Thu Oct 17 07:55:14 2002 From: cmolina at net-uno.net (Carlos Molina) Date: Wed Aug 4 23:59:32 2004 Subject: Oferta de pasantia - tesis References: <20021016224629.50568.qmail@web11005.mail.yahoo.com> Message-ID: <3DAEB332.1050000@net-uno.net> Abelardo Gutierrez wrote: >?Estudiantes universitarios o profecionales >universitarios? > La oferta inicial para pasantias y/o tesis es para estudiantes universitarios, aunque si algun profesional universitario esta interesado, tampoco es rechazado. Saludos > > > --- Carlos Molina escribi?: > >Saludos a todos. > > >>Estoy en la busqueda de universitarios interesados >>en realizar pasantia >>y/o tesis con referencia a programacion orientada a >>objetos en perl. >>No tiene relevancia el tiempo de la pasantia o la >>tesis. >>Tiempo completo. >> >>La pasantia o tesis sera para realizar algunos >>desarrollos de software >>en el NOC de NetUno. >> >> >>Las personas interesadas, enviar correo a >>cmolina@net-uno.net >> >>Saludos >> >>--------------------- >>Carlos Molina >>NetUno NOC >> >> >> >> >------------------------------------------------------------------------ > > >>Enviar e-mail a colocando en el >>cuerpo: >>"UNSUBSCRIBE caracas-pm-list" para desuscribirse. >>"INFO caracas-pm-list" para conocer las reglas de >>etiqueta. >> >> >> >------------------------------------------------------------------------ > >_________________________________________________________ >Do You Yahoo!? >Informaci?n de Estados Unidos y Am?rica Latina, en Yahoo! Noticias. >Vis?tanos en http://noticias.espanol.yahoo.com >------------------------------------------------------------------------ >Enviar e-mail a colocando en el cuerpo: >"UNSUBSCRIBE caracas-pm-list" para desuscribirse. >"INFO caracas-pm-list" para conocer las reglas de etiqueta. >------------------------------------------------------------------------ > > > ------------------------------------------------------------------------ Enviar e-mail a colocando en el cuerpo: "UNSUBSCRIBE caracas-pm-list" para desuscribirse. "INFO caracas-pm-list" para conocer las reglas de etiqueta. ------------------------------------------------------------------------ From gdelfino at mac.com Thu Oct 17 18:01:19 2002 From: gdelfino at mac.com (Gustavo Delfino) Date: Wed Aug 4 23:59:32 2004 Subject: Mensajes SMS Message-ID: Quisiera poder mandar mensajes de texto SMS a celulares (Telcel, Movilnet y Digitel) utilizando Perl. ?Alguno de Uds. tendr? un consejo para poder lograr este objetivo? En CPAN hay un m?dulo llamado WWW::SMS (ver http://www-sms.sourceforge.net) el cual podr?a ser extendido con m?dulos para Telcel, Movilnet y Digitel. Estos m?dulos utilizar?an los portales web de estan compa?ias para poder enviar los mensajes gratuitamente: http://www.mipunto.com/punto_movil/sms/ (requiere login y password) http://movilnet.mobilegen3.com/ (no requiere login) el URL del portal de Digitel lo ignoro. Antes de emprender la tarea de desarrollar estos m?dulos, quisiera saber si alguien ya lo ha resuelto, para no reinventar la rueda. Atentamente, Gustavo Delfino ------------------------------------------------------------------------ Enviar e-mail a colocando en el cuerpo: "UNSUBSCRIBE caracas-pm-list" para desuscribirse. "INFO caracas-pm-list" para conocer las reglas de etiqueta. ------------------------------------------------------------------------ From emhn at telcel.net.ve Thu Oct 24 13:19:22 2002 From: emhn at telcel.net.ve (Ernesto Hernandez-Novich) Date: Wed Aug 4 23:59:32 2004 Subject: [l-linux] Perl. Alguien puede descifrarme esta linea?? In-Reply-To: <20021024145630.17259.qmail@web20418.mail.yahoo.com> Message-ID: On Thu, 24 Oct 2002, Salvador Sosa wrote: > Estoy traduciendo el script csv2vcard al espa?ol pero > tengo problema con los acentos, los cuales no pasan > porque esta l?nea lo limita a los caracteres A-Za-z-_' > > # Valid chars for lookup (from Outlook CSV) are > # A-Za-z0-9_-'/ > # Valid chars for formatting of attr are > # \s,| > > my @lookup = map { s/=0A$//; s/[^\w\s\-'\/]//; $_; } > split /[\s,]*\|[\s,]*/, $def; > > Alguno ser?a tan amable de descifrarme esto a ver como > le agrego los caracteres que faltan. Es un ejemplo hermoso de programaci?n funcional Por partes: Se supone que $def tiene una cadena de caracteres. split /[\s,]*\|[\s,]*/, $def \______ X _____/ quiere decir "corta $def en los lugares donde haya X" y devuelve una lista. En este caso X es una expresi?n regular que identifica pipes (|) con posiblemente espacios en blanco o comas a ambos lados. Entonces ahora tienes una lista Y de los "campos". A todos los elementos de esa lista quieres aplicarle una operaci?n; un programador "est?ndar" usa un for con una variable temporal, construye otra lista... bah. En perl puedes usar map @lista, que es un for impl?cito: a cada elemento de la lista se le aplica la funci?n (la funci?n puede ser con nombre, o an?nima como en este caso que es mucho m?s elegante) y el resultado de dicha aplicaci?n es una nueva lista, i.e. (2,4,6,8) = map { $_ * 2 } (1,2,3,4); Entonces quieres aplicar la funci?n s/=0A$//; s/[^\w\s\-'\/]//; $_; a cada elemento de la lista Y, para obtener una nueva lista modificada; dentro de la funci?n, el modificando en curso es $_, entonces: s/=0A$//; ... si el elemento termina en "=0A", le quita eso s/[^\w\s\-'\/]/// ... cualquier cosa que _no_ (^) sea caracter de una palabra (\w), espacio en blanco (\s), gui?n (\-) comilla simple (') o barra (\/), se elimina $_ ... y se retorna el valor del modificando Entonces en @lookup vas a tener los elementos de la lista Y despu?s de haberles aplicado a cada uno la modificaci?n. Tu quieres que te respete los acentos: - Si los acentos est?n _literales_ (?, ?, etc.), el \w los toma siempre y cuando tengas 'use locale' y las variables LANG, LC_* correctamente configuradas. - Si los acentos est?n codificados, tienes que hacerlo a mano, modificando la funci?n an?nima que usa map. -- Ernesto Hern?ndez-Novich - Running Linux 2.4.19 i686 - Unix: Live free or die! Geek by nature, Linux by choice, Debian of course. If you can't apt-get it, it isn't useful or doesn't exist. GPG Key Fingerprint = 438C 49A2 A8C7 E7D7 1500 C507 96D6 A3D6 2F4C 85E3 ------------------------------------------------------------------------ Enviar e-mail a colocando en el cuerpo: "UNSUBSCRIBE caracas-pm-list" para desuscribirse. "INFO caracas-pm-list" para conocer las reglas de etiqueta. ------------------------------------------------------------------------