Translate
domingo, 21 de abril de 2013
Cual es tu escritorio favorito?
Interesante iniciativa de hacer una encuesta general de que escritorio es el que más nos gusta, si preguntan por el ganador parcial, Unity, me parece increíble. El escritorio que me sugirió abandonar Ubuntu, luego viene KDE y esto es entendible dado que no tiene tanta fragmentación como gnome.
Si preguntan mi opinión sin lugar a duda fui muy feliz con Mate, luego pondría a KDE que me estoy acostumbrando y la verdad viene bien y en tercer puesto pondría a Cinnamon.
Cual sería su voto? Si tienen que hacer un top 3?
Dejo links:
https://docs.google.com/forms/d/1okkJ82jEhdIJ4P8vghf2kdAkkRWHrov5cbFoR570Nz0/viewform?usp=sharing&edit_requested=true
https://docs.google.com/forms/d/1okkJ82jEhdIJ4P8vghf2kdAkkRWHrov5cbFoR570Nz0/viewanalytics
viernes, 19 de abril de 2013
jueves, 18 de abril de 2013
miércoles, 17 de abril de 2013
The Python Profilers
Hace muy poco tiempo me encontré con cProfile de python, es una herramienta para hacer profiling. Pero que es Profile? Un profile es un conjunto de estadísticas que nos indican cuanto demora un método o proceso y como se esta ejecutando. El objetivo es saber porque tarda mi código lo que tarda, para así poder mejorarlo y mejorar la performans del programa.
Las librerías estándares de Python proveen 3 formas de generar profiles:
- cProfile: es el recomendado por la mayoría de los programadores; es una extensión de C y provee un overhead razonable.
- Profile: esta totalmente hecho en python y tiene mayor overhead que cProfile
- hotshot: es una extensión de C experimental, con el objetivo de minimizar el overhead, esta herramienta no tiene mantenimiento y esta pensado eliminarla en nuevas versiones.
import cProfile
import re
cProfile.run('re.compile("foo|bar")')
Esto nos dará como resultado la siguiente tabla:
197 function calls (192 primitive calls) in 0.002 seconds
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 0.001 0.001 <string>:1(<module>)
1 0.000 0.000 0.001 0.001 re.py:212(compile)
1 0.000 0.000 0.001 0.001 re.py:268(_compile)
1 0.000 0.000 0.000 0.000 sre_compile.py:172(_compile_charset)
1 0.000 0.000 0.000 0.000 sre_compile.py:201(_optimize_charset)
4 0.000 0.000 0.000 0.000 sre_compile.py:25(_identityfunction)
3/1 0.000 0.000 0.000 0.000 sre_compile.py:33(_compile)
En el cual podemos ver el método que más se corre y el método que más tiempo ocupa. Simple todos los datos que necesito.
La idea del post no era hacer una guía exhaustiva de cProfile pero si mostrar lo fácil del uso y practico.
Dejo link:
http://docs.python.org/2/library/profile.html
lunes, 15 de abril de 2013
Gnome 3, cinnamon y otras yerbas
Este post es a raíz de la siguiente noticia, dado que yo soy muy fanático de Mate y Mint. Y para no quedarme cómodo con Mate decidí probar Cinnamon y no me fue muy bien. Por lo que dicen es que es culpa de Gnome 3 y por ahí entiendo que la gente de Gnome no puede prohibirse dejar de romper su plataforma y reestructurarla. Pero gente ya basta!!
Por favor dejemos de hacer tan complicado Linux, busquemos de combatir la fragmentación. No estoy en contra que existan opiniones o formas de ver las cosas diferentes, creo que Linux es un lugar donde se puede mezclar todo. Pero cuando entramos a mezclar y rompemos todo. Es porque salta a la vista que falta respeto a los estándares o faltan estándares.
Tenía muchas ganas de probar cinnarch, pero ya no lo voy a poder hacer por lo menos con cinnamon. Por favor cuidemos las bases así podemos crecer.
sábado, 13 de abril de 2013
NoSQL Benchmark!!!
Estuve viendo este benchmark entre Aerospike, Cassandra, Couchbase and MongoDB que realizo la gente de infoQ, muy bueno.
Dejo el link:
http://www.infoq.com/news/2013/04/NoSQL-Benchmark
Dejo el link:
http://www.infoq.com/news/2013/04/NoSQL-Benchmark
USB claro en linux
Estoy sin internet, porque se corto el teléfono, más allá de eso se me ocurrió comprar un modem claro para salir del paso, en fin fui a comprarlo y le pregunte al vendedor que sistemas operativos soportaba, y me contesto Windows, ha y mac también pero nunca lo probé. Digamos que Linux ni hablar pensé, y pensé bien; no funciona en Linux. Por lo menos no sin bajar nada; en fin posteo esto desde el windows que tuve que instalar.
Solo tengo que decirle algo a claro:
Programadores con experiencia.
Hace ya tiempo ley un artículo en java hispano sobre si es mejor un programador con más experiencia; en este articulo se demuestra que no es mejor una persona con más experiencia que un novato programando y al principio pensé que había algo mal, no puede ser que un programador que tiene 3 años en el mercado programe igual que uno que tiene 4 años de experiencia o 2. Me parecía muy raro, pero luego me di cuenta que en realidad alguien con menos conceptos programa igual que los experimentados, con la diferencia de que el desarrollo de software no todo es programar. Es decir nosotros estamos todo el tiempo topándonos con problemas, problemas que puede ser la base de datos o hibernate o algúna otra herramienta y sin embargo se nota a simple vista que alguien que tiene más tiempo programando maneja mejor estas herramientas. Sin hablar de que si hay que diseñar algo con algún patrón; es innegable que el manejo de patrones lleva su tiempo.
Es decir el tiempo te llena de conocimiento y esto vale. Y si no se usa o quedo viejo hay que hacer el esfuerzo de extrapolar el conocimiento, es muy difícil generalizar por ejemplo como se utiliza una herramienta; pero los conceptos siempre quedan; un ejemplo podría ser la gente que sabe flash y diseñar con flash, si bien hubo cambio si una persona que utilizo flash le toca diseñar en html 5 va ser mucho más rápido que alguien que nunca diseño. Por este motivo, hay que esforzarse para entender los conceptos y no solo las herramientas, para que nuestro conocimiento pueda durar en el tiempo.
Es decir el tiempo te llena de conocimiento y esto vale. Y si no se usa o quedo viejo hay que hacer el esfuerzo de extrapolar el conocimiento, es muy difícil generalizar por ejemplo como se utiliza una herramienta; pero los conceptos siempre quedan; un ejemplo podría ser la gente que sabe flash y diseñar con flash, si bien hubo cambio si una persona que utilizo flash le toca diseñar en html 5 va ser mucho más rápido que alguien que nunca diseño. Por este motivo, hay que esforzarse para entender los conceptos y no solo las herramientas, para que nuestro conocimiento pueda durar en el tiempo.
jueves, 11 de abril de 2013
MoSQL, de mongoDb a postgres!!
Con el crecimiento de NoSQL, las herramientas que permiten convivir NoSQL cn base de datos relacionales estan tomando mayor importancia. Por lo tanto les quiero presentar MoSQL, que permite hacer? Replicar datos desde una base de datos MongoDB a una postgres.
Con MoSQL, se puede ejecutar aplicaciones contra una base de datos MongoDB, pero también mantener una actualización de sus datos en PostgreSQL, listo para realizar consultas con toda la potencia de SQL.
Dejo link:
https://stripe.com/blog/announcing-mosql
https://github.com/stripe/mosql
lunes, 8 de abril de 2013
Libertad y educación
Quiero recomendar el blog Libertad y educación, muy bueno y interesante. Y mi pensamiento es que en todas las entidades educativas se debería enseñar software libre. Por que? Porque el software libre te brinda mayor libertad de aprendizaje, podemos aprender más.
Dejo link:
http://libertadygnu.blogspot.mx/
sábado, 6 de abril de 2013
Rust, un nuevo lenguaje de Mozilla
Mozilla anuncia un nuevo motor de renderizado de paginas Servo, lo que me llamo la atención es que servo va ser escrito en un lenguaje nuevo llamado Rust.
Rust a simple vista se ve como c++, pero es bastante más evolucionado. Veamos un poco de código:
use core::rand::RngUtil;
fn main() {
for ["Alice", "Bob", "Carol"].each |&name| {
do spawn {
let v = rand::Rng().shuffle([1, 2, 3]);
for v.each |&num| {
print(fmt!("%s says: '%d'\n", name, num))
}
}
}
}
Que nos ofrece este lenguaje:
- Inferencia de tipos
- Tareas concurrentes seguras
- Closures
- Pattern matching
- Polimorfismo.
Vamos a ver como va evolucionando su uso, por ahora voy mirando su documentación:
http://www.rust-lang.org/
http://doc.rust-lang.org/doc/tutorial.html
http://doc.rust-lang.org/doc/rust.html
Preguntas y respuestas de mi base datos Oracle
Siempre tenemos que mirar nuestra base para cuidar que su crecimiento no sea abrupto, lo peor que nos puede pasar es que las entidades más grandes, sean las que más se consultan y esto suele pasar seguido. Para llevar un control respondamos 3 preguntas:
Cual son los 40 objetos más grande de mi base de datos?
select * from (
select owner, segment_name, bytes/1024/1024 Size_Mb from dba_segments order by
bytes/1024/1024 DESC )
where rownum <= 40
Cual son las 40 tablas más grande de mi base de datos?
select *
from (select segment_name "Table Name",
round(sum(bytes)/1024/1024, 2) "Size MB"
from dba_extents
where segment_type = 'TABLE'
group by segment_name
order by 2 desc)
Cuales son los objetos más accedidos?
SELECT ROWNUM AS RANK, Seg_Lio.*
FROM ( SELECT St.Owner,
St.Obj#,
St.Object_Type,
St.Object_Name,
St.VALUE,
'LIO' AS Unit
FROM V$segment_Statistics St
WHERE St.Statistic_Name = 'logical reads'
AND St.Owner='TN32_UAT'
ORDER BY St.VALUE DESC) Seg_Lio
WHERE ROWNUM <= 15
UNION ALL
SELECT ROWNUM AS RANK, Seq_Pio_r.*
FROM ( SELECT St.Owner,
St.Obj#,
St.Object_Type,
St.Object_Name,
St.VALUE,
'PIO Reads' AS Unit
FROM V$segment_Statistics St
WHERE St.Statistic_Name = 'physical reads'
AND St.Owner='TN32_UAT'
ORDER BY St.VALUE DESC) Seq_Pio_r
WHERE ROWNUM <= 15
UNION ALL
SELECT ROWNUM AS RANK, Seq_Pio_w.*
FROM ( SELECT St.Owner,
St.Obj#,
St.Object_Type,
St.Object_Name,
St.VALUE,
'PIO Writes' AS Unit
FROM V$segment_Statistics St
WHERE St.Statistic_Name = 'physical writes'
AND St.Owner='TN32_UAT'
ORDER BY St.VALUE DESC) Seq_Pio_w
WHERE ROWNUM <= 15
Con el resultado de estas consultas podemos tomar decisiones antes que la base se vuelva lenta.
Cual son los 40 objetos más grande de mi base de datos?
select * from (
select owner, segment_name, bytes/1024/1024 Size_Mb from dba_segments order by
bytes/1024/1024 DESC )
where rownum <= 40
Cual son las 40 tablas más grande de mi base de datos?
select *
from (select segment_name "Table Name",
round(sum(bytes)/1024/1024, 2) "Size MB"
from dba_extents
where segment_type = 'TABLE'
group by segment_name
order by 2 desc)
Cuales son los objetos más accedidos?
SELECT ROWNUM AS RANK, Seg_Lio.*
FROM ( SELECT St.Owner,
St.Obj#,
St.Object_Type,
St.Object_Name,
St.VALUE,
'LIO' AS Unit
FROM V$segment_Statistics St
WHERE St.Statistic_Name = 'logical reads'
AND St.Owner='TN32_UAT'
ORDER BY St.VALUE DESC) Seg_Lio
WHERE ROWNUM <= 15
UNION ALL
SELECT ROWNUM AS RANK, Seq_Pio_r.*
FROM ( SELECT St.Owner,
St.Obj#,
St.Object_Type,
St.Object_Name,
St.VALUE,
'PIO Reads' AS Unit
FROM V$segment_Statistics St
WHERE St.Statistic_Name = 'physical reads'
AND St.Owner='TN32_UAT'
ORDER BY St.VALUE DESC) Seq_Pio_r
WHERE ROWNUM <= 15
UNION ALL
SELECT ROWNUM AS RANK, Seq_Pio_w.*
FROM ( SELECT St.Owner,
St.Obj#,
St.Object_Type,
St.Object_Name,
St.VALUE,
'PIO Writes' AS Unit
FROM V$segment_Statistics St
WHERE St.Statistic_Name = 'physical writes'
AND St.Owner='TN32_UAT'
ORDER BY St.VALUE DESC) Seq_Pio_w
WHERE ROWNUM <= 15
Con el resultado de estas consultas podemos tomar decisiones antes que la base se vuelva lenta.
Aprender Python con Pythonmonk
De los creadores de rubymonk llega pythonmonk, es un manual online para aprender python. Una gran idea , y si no hicieron el de ruby se los aconsejo.
A ponerse a estudiar pequeños saltamontes.
Dejo link:
http://pythonmonk.com
jueves, 4 de abril de 2013
Mi nuevo linux Fedora!!
Por cuestiones de la vida me he movido a fedora, la verdad es que extraño un poco a Mint pero hay que seguir adelante en el camino me encontré con Yum extender, que me parece que va ser mi mejor amigo. Me encontré con gnome-shell y me divorcie a los pocos días, y ahora estoy conviviendo con KDE que me esta tratando bien.
Dejo una foto de mi escritorio:
Dejo links:
http://gomix.fedorapeople.org/software-management-guide/f18/html-single/
Dejo una foto de mi escritorio:
Dejo links:
http://gomix.fedorapeople.org/software-management-guide/f18/html-single/
Suscribirse a:
Entradas (Atom)