Fuente: xkcd
August 29, 2010
August 15, 2010
Jorge Luis Hernandez C.
Comando Split en linux :: Dividir archivos
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'
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.
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.
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
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
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 ?
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
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




