Planeta Python México

August 15, 2010

Jorge Luis Hernandez C.

Comando Split en linux :: Dividir archivos

En ocasiones surge el problema de limitar a cierto tamaño los archivos para hacer alguna cosa en particular, y para ello existen varias opciones. Ya recordarán un programa muy famoso llamado Hacha (que aun hoy se sigue utilizando), que nos permitía dividir un archivo en varios, estableciendo el tamaño máximo que debía tener cada archivo, o bien, en cuantos archivos querías dividirlo.

En linux contamos con una pequeña herramienta que por default, viene instalada. Se trata del comando split.

Para dividir un archivo en varios de tamaño de 10 mb, sería de la siguiente manera.

$ split -b10m archivo

Y el resultado serían varios archivos nombrados como “aa”, “ab”, etc. Aunque podemos establecer algún prefijo.

$ split -b10m -d archivo archivo. --verbose

Los archivos resultantes tendrán prefijo numérico esta vez, además que verías un poco mas el proceso con --verbose.

Salida:
archivo.00
archivo.01
archivo.02
archivo.03

Ayuda de Split

$ split --help
Usage: split [OPTION]... [INPUT [PREFIX]]
Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default
size is 1000 lines, and default PREFIX is 'x'.  With no INPUT, or when INPUT
is -, read standard input.
 
Los argumentos obligatorios para las opciones largas son también obligatorios
para las opciones cortas.
  -a, --suffix-length=N   utiliza sufijos de longitud N (por omisión 2)
  -b, --bytes=TAMAÑO      escribe TAMAÑO bytes en cada fichero de salida
  -C, --line-bytes=BYTES  escribe un máximo de BYTES bytes sin cortar líneas
  -d, --numeric-suffixes  utiliza sufijos numéricos en vez de alfabéticos
  -l, --lines=NÚMERO      pone NÚMERO de líneas en cada fichero de salida
      --verbose           print a diagnostic just before each
                            output file is opened
      --help     muestra esta ayuda y finaliza
      --version  informa de la versión y finaliza
 
SIZE may be (or may be an integer optionally followed by) one of following:
KB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.
 
Report split bugs to bug-coreutils@gnu.org
GNU coreutils home page: <http://www.gnu.org/software/coreutils/>
General help using GNU software: <http://www.gnu.org/gethelp/>
Report split translation bugs to <http://translationproject.org/team/>
For complete documentation, run: info coreutils 'split invocation'

Publicado por lesthack el August 15, 2010 05:23 AM

August 13, 2010

Jorge Luis Hernandez C.

Y tu, eres linuxero ? :: Tuxteno Podcast

Hasta hace poco, no conocía este magnifico podcast; ya vengo escuchando algunos programas atrasados y por supuesto, los programas que publican cada veintena de días aproximadamente. Pero, en particular, el último programa «y tu… eres linuxero?» ha sido muy interesante, y lo digo por lo siguiente:

El programa comienza hablando de los primeros días en que la comunidad de linuxeros surgía a flote, cuando los que interesados en aprender y conocer cosas distintas, nos descargábamos o hasta comprábamos en algún quiosco, una revista con alguna de las primeras distros ya un poco comerciales como RedHat y Mandrake, cuando, nos costaba un poco de trabajo instalarnos el sistema para luego batallar con algunas cuestiones como la tarjeta de video, sonido o ethernet.

Sin bien es cierto, estas primeras versiones eran muy rusticas comparadas con las interfaces actuales, y cuando lográbamos tener el sistema listo, nos sentíamos realizados, aunque luego batallábamos en compilaciones, librerías, dependencias, etc.

VS

Pero, ¿ que ha pasado ahora ?, en la actualidad linux es mucho mas conocido, ya es un competidor de renombre frente a sistemas operativos comerciales y privativos, además de proveer seguridad y estabilidad, y poco a poco, mas usabilidad para los usuarios comunes, muestra de ello “Ubuntu“.

Sí, ubuntu es por hoy, la distribución GNU/Linux con mas renombre en el mundo que todas las demás, y desafortunadamente, cuando los usuarios comunes se refieren a linux, pronuncian ubuntu. Gracias al trabajo de Canonical, muchos usuarios no pertenecientes a la rama de la informática se han acercado a linux para hacer sus labores cotidianas sobre este sistema operativo ya sean de diseño, ofimática, fotografía, etc.

Pero, a muchos de nosotros, esto nos pesa, y alegamos que quien use una distro como ubuntu, no se le puede considerar como un verdadero “linuxero” debido a la facilidad que ha adquirido para hacer las cosas sucias.

Los que propulsábamos a GNU/Linux y a la comunidad del software libre, ¿ no queríamos esto ?, ¿ no queríamos que todos usaran linux ?, y que con grandes esfuerzos de todos, desarrolláramos aplicaciones cada vez mas usables para los usuarios comunes. Esto es a lo que nos invita a reflexionar el podcast, así que les recomiendo lo escuchen y lo sigan.

Tuxteno - Podcast #15 Segunda Temporada

Publicado por lesthack el August 13, 2010 03:00 PM

August 12, 2010

Noe Nieto

Hola mundo con twitter y python

Primero Preparar Ubuntu 10.04 para usar el api de twitter con python en virtualenv

$ sudo aptitude install python-virtualenv

$ virtualenv --no-site-packages --verbose twitter_api

$ cd twitter_api

$ source bin/activate

(twitter_api) $ bin/pip install python-twitter

 

Despues escribir hola mundo desde la consola de python:

(twitter_api) $ bin/python

 

>>> import twitter
>>> api = twitter.Api(username='mi_username',password='secretopassword')
>>> status = api.PostUpdate('Hola mundo con la API de twitter para Python. #cpmexico ')
{"created_at": "Thu Aug 12 02:16:13 +0000 2010", "favorited": false, "id": xxxxyyyy, ... }
Y eso es todo!

Publicado por Noe Misael Nieto Arroyo el August 12, 2010 02:20 AM

August 08, 2010

Jorge Luis Hernandez C.

¿ Te cuesta trabajo decidir algo ? 45:56 am

Hoy en la mañana (muy de mañana) estaba platicando y decidiendo con Manuel Alejandro (@ceochronos)  sobre que Template dejar a un blog (que luego les platicaré mas de esto) de 3 que teníamos para elección.

Sin embargo y a propuesta mía, sugerí que el Template tuviera un cuerpo un poco ancho (que cubriera gran parte de la pantalla) por lo que la elección quedaba a solo 2 plantillas.

Ambas nos gustaron, pero había que definir el ganador, así que Alejandro dijo que lo dejáramos a “un volado“, me reí un poco y le propuse que fuera algo mas geek, a lo que su respuesta fue la siguiente:

(00:36:04) Alejandro Gómez: hmm ok, que sea geek entonces. Cifra cual tema gana si 
el numero esta entre [1, 50] y cual gana si esta entre [51, 100] yo genero el numero 
aleatorio y te lo digo, luego descifro el archivo que tu cifraste y vemos cual es el ganador :p

Me pareció interesante, que yo decidiera los rangos para luego mandárselos cifrados bajo su llave GPG pública, mientras el genera un numero random que me enviaría, y así, los 2 sabríamos quien había ganado al mismo tiempo.

Preparé el mensaje de la forma:

[1-50] Tema1
[51-100] Tema2

Y pasé a cifrarlo:

-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.10 (GNU/Linux)
 
hQIOA2y0ZE+yFEF4EAgAuEuH/JFBOA33GrdPDTdpZWp+RWa34xLQxFbT3za5rr1V
O4UWAC0qgw+6ivcXnGKpbx4mvDE3UYT/OFOEpO+fIRw5NV1oPIE4TPLnpFYU4hDT
3kS/ApwDwP2a8+XoRLRaO0CYX6e0iXsYostwiBBXUUb6LlVgMy+AxxOg4j8MzHiY
HzVQA39qCS+QuL6+/yBialaO5ddDu+l7+5Evr6Sn0ljV1HY5wMkTBeYP67fl2aJ3
nfwRkquuhwzP0xlmZwpVg2hVJ4qxXTWfAB6ck8HQkxAY30bvSb12s/v3clkUR6Ud
vnMESbpNEpWBhVpN+rM7P+JGKHXkFh9OnTFlCwIxvwf/R/Y95OEsXKc0yUftkJtJ
dcu1c/NEXlK+ERgM9iuHQCOg/ZevisPBYHgYxPpmTe6bzW89/Qsnwqfsg6pdr8na
PmJ3zV2Rz0yBMDxZ5DY/whn2pOem0MRnwzYUmtEapnWxUL79G5CLySEB9qBkuaSD
WP5I4LLpoKNC1/PAhnLrCtzEWekqa1NTPh1JQVzYNhp1ZsaLoFt1zHhWy4y6PKMx
kVJUwOcdjrwce9sXoq72/0BJEwy/9XIgqMeOxaPxGjYKLGq2BmKd3EbqG6M2SumT
9FfhpDTN9BqQFHwv2A7Ry9m1Dn/XjqEXvqjvgDwdfZVr+4eqXz50Npt3NnFulqbr
f9LABgEKxJ4F/UeUPakI97wtqbSe+SDTC2SiLMdN+JZ6TV2Oao5CSqOPEr8MJuPT
GKWSgKlgvbDi7vNqrpjHIRCpKNYulk2I+V17qHGW4jU9k1A/KtCwgdjg3/azrVNC
w4o6WRbhlVyrfFR9OJQVrS9cfmXCBnnQgnxTYgJp5mp0P+yZVXb7KZwBwGG/OzjA
s4JKx++TJCycrIo+SO/VltB3smhU+E/PK6L8z0Go+pvOANPL/CVFD2sNlDcYrRWF
HlFyXbpb6im/pQ==
=+tiK
-----END PGP MESSAGE-----

Así que ambos decidimos de manera aleatoria cual sería el Template que tendría el blog, aunque después se nos ocurrieran cosas mas locas como usar a π y a φ con cifrado asimétrico, o poner a competir thread’s en divisiones infinitas bajo números aleatorios mayores a 0 hasta que se rompieran.

Así es, solo estas cosas se nos ocurren a tales horas de la madrugada.

¿ Te ayudamos a decidir ?

Publicado por lesthack el August 08, 2010 06:23 AM

August 05, 2010

Jorge Luis Hernandez C.

Obfuscated C Code Contest

¿ Quien no siente emoción al ver tremendo y hermoso código ?

long h[4];t(){h[3]-=h[3]/3000;setitimer(0,h,0);}c,d,l,v[]={(int)t,0,2},w,s,I,K
=0,i=276,j,k,q[276],Q[276],*n=q,*m,x=17,f[]={7,-13,-12,1,8,-11,-12,-1,9,-1,1,
12,3,-13,-12,-1,12,-1,11,1,15,-1,13,1,18,-1,1,2,0,-12,-1,11,1,-12,1,13,10,-12,
1,12,11,-12,-1,1,2,-12,-1,12,13,-12,12,13,14,-11,-1,1,4,-13,-12,12,16,-11,-12,
12,17,-13,1,-1,5,-12,12,11,6,-12,12,24};u(){for(i=11;++i<264;)if((k=q[i])-Q[i]
){Q[i]=k;if(i-++I||i%12<1)printf("\033[%d;%dH",(I=i)/12,i%12*2+28);printf(
"\033[%dm  "+(K-k?0:5),k);K=k;}Q[263]=c=getchar();}G(b){for(i=4;i--;)if(q[i?b+
n[i]:b])return 0;return 1;}g(b){for(i=4;i--;q[i?x+n[i]:x]=b);}main(C,V,a)char*
*V,*a;{h[3]=1000000/(l=C>1?atoi(V[1]):2);for(a=C>2?V[2]:"jkl pq";i;i--)*n++=i<
25||i%12<2?7:0;srand(getpid());system("stty cbreak -echo stop u");sigvec(14,v,
0);t();puts("\033[H\033[J");for(n=f+rand()%7*4;;g(7),u(),g(0)){if(c<0){if(G(x+
12))x+=12;else{g(7);++w;for(j=0;j<252;j=12*(j/12+1))for(;q[++j];)if(j%12==10){
for(;j%12;q[j--]=0);u();for(;--j;q[j+12]=q[j]);u();}n=f+rand()%7*4;G(x=17)||(c
=a[5]);}}if(c==*a)G(--x)||++x;if(c==a[1])n=f+4**(m=n),G(x)||(n=m);if(c==a[2])G
(++x)||--x;if(c==a[3])for(;G(x+12);++w)x+=12;if(c==a[4]||c==a[5]){s=sigblock(
8192);printf("\033[H\033[J\033[0m%d\n",w);if(c==a[5])break;for(j=264;j--;Q[j]=
0);while(getchar()-a[4]);puts("\033[H\033[J\033[7m");sigsetmask(s);}}d=popen(
"stty -cbreak echo stop \023;sort -mnr -o HI - HI;cat HI","w");fprintf(d,
"%4d from level %1d by %s\n",w,l,getlogin());pclose(d);}

Así que sin pensarlo lo compilan y ejecutan, se llevarán una gran sorpresa.

   $ gcc t.c -o t
   $ ./t

Se trata del código ganador del “The International Obfuscated C Code Contest“, quien se a chutado un singular tetris en tan solo 19 hermosas lineas en C.

¿ A poco no es una lindura ?

Vía:  Yakibo

Enlaces:  An ofbuscated tetris | The International Obfuscated C Code Contest

Publicado por lesthack el August 05, 2010 04:31 PM

Noe Nieto

Mi blog sindicado en Planeta Linux

Intro

¡¡ Hola Planeta Linux !! Mi blog ha sido sindicado en la sección méxico, así que me presento.

Mi Nombre es Noe Nieto y laboro en la empresa iServices de México.  Es una empresa mexicana que hace negocios predominantemente con software libre y se especializa en aplicaciones web para e-learning y, últimamente, e-commerce. Nuestra plataforma de desarrollo es Python, Zope/Plone y Django.

Acerca de este blog

Hay veces que escribo acerca de Ubuntu y otras cosas de software libre, pero en este blog escribo, principalmente, acerca de mis experiencias desarrollando aplicaciones con Python, Zope/Plone y Django y todas sus tecnologías asociadas. Algunos posts serán en inglés puesto que también estoy sindicado en el Planeta Plone.

Links para visitar

 

¿Redes sociales?

Publicado por Noe Misael Nieto Arroyo el August 05, 2010 04:06 PM