lunes, agosto 12, 2013

MariaDB and MySQL queries with likes

I was doing some research on how to set up MariaDB with WP, nginx and php5. I was following this tutorial during my free time: http://avav.byethost5.com/?p=166 and suddenly I got a question from a co worker. He has the following scenario and I will try to reproduce it the best I can.

MySQL database. One table with a PK int and some other columns that for the sake of the example we will omit. He asked me the following:

If I have a PK int column, named Id and I perform a query like this: SELECT * FROM MyTable WHERE ID LIKE '123%'; it should use the PK index.

I replied: No. But I wanted to find some hard proof of it.

So I just fired MariaDB and shoot the following commands:


Here the script so far: MariaDB - Create database. I have provided only MariaDB script, since it should work in both sides.

Let's go Official

This is the official mysql indexes documentation: https://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html

So MySQL says:

Most MySQL indexes (PRIMARY KEYUNIQUEINDEX, and FULLTEXT) are stored in B-trees. Exceptions are that indexes on spatial data types use R-trees, and that MEMORY tables also support hash indexes.

so those a primary key so far is a B-TREE. And now let's look what it says about the B-TREE and like queries the doc:

B-Tree Index Characteristics

A B-tree index can be used for column comparisons in expressions that use the =>>=<<=, or BETWEENoperators. The index also can be used for LIKE comparisons if the argument to LIKE is a constant string that does not start with a wildcard character. For example, the following SELECT statements use indexes:
SELECT * FROM tbl_name WHERE key_col LIKE 'Patrick%';
SELECT * FROM tbl_name WHERE key_col LIKE 'Pat%_ck%';
In the first statement, only rows with 'Patrick' <= key_col < 'Patricl' are considered. In the second statement, only rows with 'Pat' <= key_col < 'Pau' are considered.
The following SELECT statements do not use indexes:
SELECT * FROM tbl_name WHERE key_col LIKE '%Patrick%';
SELECT * FROM tbl_name WHERE key_col LIKE other_col;

and so far the Primary Key index will use the index. Since our query states:
ID LIKE '123%'

Let's do the test

I am gonna create the following table:


And of course the script: Create Table.MariaDB.sql

And insert the data, by using LOAD DATA











Here the data and the script.

Finally the Query

And we are there, the famous query:


it seems to be good now.

We must use EXPLAIN, in order to get the possible execution plan



Here we can see where the test using the LIKE clause over an integer value is not using the key at all:

The key column indicates the key (index) that MySQL actually decided to use. The key is NULL if no index was chosen. 

However we can see the Primary Key listed in possible keys column, but remember:
The possible_keys column indicates which indexes MySQL could use to find the rows in this table. Note that this column is totally independent of the order of the tables as displayed in the output from EXPLAIN. That means that some of the keys in possible_keys might not be usable in practice with the generated table order.
and since it is not using the index, it will do a select_type = All

The join type. The different join types are listed here, ordered from the best type to the worst:
  • ALL
    A full table scan is done for each combination of rows from the previous tables. This is normally not good if the table is the first table not marked const, and usually very bad in all other cases. Normally, you can avoid ALL by adding indexes that allow row retrieval from the table based on constant values or column values from earlier tables.
and as a bonus you can use the following tool:


It is the mariaDB explain analyzer. Check it out, it might help you in your coding.









miércoles, abril 03, 2013

Raspberry Pi - Fuentes de poder

Raspberry Pi - Fuentes de poder

Esta vez vamos a conocer un poco más sobre él (o ella como más le guste) y en esta entrada vamos a ver las fuentes de poder o sea de donde se puede conectar para que obtenga electricidad.

Primero el raspberry-pi necesita 5V, debido a que es alimentado por medio de un puerto USB, la prueba está aca:
http://www.raspberrypi.org/faqs, en la sección de power o un poco más de detalles en: http://www.raspberrypi.org/archives/260.

Y aca pueden ver el jack usb en el diagrama:
Básicamente esto nos donde conectarlo, pero la situación ahora es: Donde consigo cables usb que se conecten al toma corriente de la pared?
Afortunadamente en mi caso tengo el cargador del celular que viene con un convertidor USB.

Acá puede ver dos flechas, la amarilla dice 100~240V, este es el valor de entrada, o sea que la fuente de poder a la cual va a conectar tiene que estar entre ese rango 100 a 240V. Usualmente en mi país Costa Rica, los voltios andan en 220V, entonces estamos bien. Ahora si viven en Europa, Asia es probable que tengan diferentes niveles de voltages. Pueden usar de referencia este link de wikipedia: http://en.wikipedia.org/wiki/Mains_electricity_by_country, sin embargo, revisen la entrada para evitar un choque electrico, que es muy poco probabler pero uno nunca saber.

Ahora la flecha roja es lo curioso, dice OUTPUT/Salida: 5.0V = 1.0 A. Si su adaptador dice 5.0V = 0.9 o algo parecido, creo que no hay problema. Le he estado preguntando a un amigo que estudió electrónica y parece que los Amperios y los Voltios son diferentes pero tienen relación. Si alguien conoce la diferencia de forma sencilla lo puede poner en un comentario o en algún momento haré una entrada con respecto a eso.

Bueno ahora que estamos entendidos en este aspecto, creo que podríamos pasar a otras formas de alimintar el Pi. Cosas que se me ocurren, pero no las he probado, imagino que funcionan:

Conectarlo a un usb de la PC

Imagino que se podría conectar a la PC y hacer que el mismo pase electricidad al Pi. No lo he intentado ( ni lo pienso hacer), por que después algo sale mal. Y no va a detectar el raspberry Pi, como un flash drive ( aunque no se, podría hacerse, solo que en lugar de conectar al usb de poder, un sencillo podría funcionar como puente. mmm )

Conectarlo a un usb de la Mac

Es el mismo caso con una mac, sin embargo, acá tendría mas precaución debido al hecho que a veces las mac book pro no dan todo el voltaje requerido. Al menos eso me pasó con un usb drive de toshiba canvio y la mac book pro del trabajo. Acá está el reportaje:


básicamente eso es problema del disco duro, que consume un pooquito más.

Conectarlo a un usb del carro

En lugar de tener una tablet con waze para ver donde va, se podría re acomodar el tablero y adaptarle un Raspberry-Pi con un SIM card. Solo se me ocurre, pero la tecnología esta, entonces por que no soñar?

Comprar cables y conectores/convertidores

Para los que no tiene un celular con cable usb pueden comprarlo en amazon.com, ebay.com o preguntenele a algún amigo, compañero de trabajo, familiar si tiene algún cable viejo de esos que no ocupan.

Lo mismo con los convertidores. Al menos en mi país en los centros comerciales, venden convertidores, inclusive en las pulperías. Es nada más de darle.

Conector de pared USB

Se puede cambiar el enchufe de pared para que tenga conexión directa de la casa, sin los convertidores: http://www.amazon.com/Newer-Technology-Power2U-Outlet-Charging/dp/B0065I114K
Imagen de amazon.com

DYI - Cables Usb 

Los cables/ convertidores se pueden alterar/ modificar para que sean como una base. Acá un tutorial de wired.com: http://www.wired.com/geekdad/2011/08/diy-usb-charger-with-minty-boost/, que trata sobre eso.

E infinidad de posiblidades, se pueden conectar paneles solares y tratar de hacer cosas interesantes.

Bueno espero que les haya servido, este pequeño artículo sobre el Pi.



miércoles, marzo 27, 2013

Raspberry PI

Bueno me acaba de llegar mi muy apreciado Raspberry PI.  Por lo cual es momento de empezar a ver en que lo uso, que me invento o que hago.

Por el momento vamos a lo básico. Esto es un raspberry PI:


Básicamente es una mini computadora con un procesador llamado ARM (http://es.wikipedia.org/wiki/Arquitectura_ARM) , el cual se utiliza mayoritamente para trabajar aplicaciones de baja potencia. 

En si, el raspberry pi es un procesador ARM de alrededor de 700 Mhz con 512 MB de RAM, muchos dirán que es muy poquito, pero con eso yo programa en C++ de borland, pascal, Visual basic y hasta Java 1.3, entonces no está tan mal.

Que se puede llegar a hacer?

Di todo lo que a uno se le pueda ocurrir.
Entre otras cosas. Yo por el momento, voy a trata de montar un NAS con esta guía: http://lifehacker.com/5988835/turn-a-raspberry-pi-into-a-low-power-nas, y mi disco duro externo, un toshiba de 1TB usb 3.0, como este: http://www.amazon.com/Toshiba-Canvio-Basics-Portable-Drive/dp/B005J7YBRW y no funciona me voy a mandar con una llave usb kingston de 32 GB como esta: http://www.amazon.com/Kingston-Digital-DataTraveler-101-Generation/dp/B004TS1J1S/.

Así que a estudiar se ha dicho.

martes, agosto 11, 2009

Ensayo Competencia Perfecta

Realice un ensayo acerca de Competencia Perfecta

El siguiente ensayo tratará de explicar mi muy personal opinión sobre la competencia perfecta y un poco de lo que podría pasar en algunos escenarios.

Según la Real Academia Española, competencia significa, entre muchas definiciones:

Situación de empresas que rivalizan en un mercado ofreciendo o demandando un mismo producto o servicio.

http://buscon.rae.es/draeI/SrvltGUIBusUsual?TIPO_HTML=2&TIPO_BUS=3&LEMA=competencia

Perfecta:

Que tiene el mayor grado posible de bondad o excelencia en su línea.

http://buscon.rae.es/draeI/SrvltGUIBusUsual?TIPO_HTML=2&TIPO_BUS=3&LEMA=perfecta

Por lo tanto, la competencia perfecta se puede definir como una situación que rivalizan varias empresas en un mercado por la venta de un producto, en la cual la situación es la mejor para todas las empresas. He leído varios foros como: http://www.xouslab.com/main/viewtopic.php?f=36&t=1026 , según el ejemplo que ponen en el referido, se habla de la soya como un producto homogéneo que se vende desde los productores a un conjunto de cooperativas. En ese pequeño momento, o sea en el mercado interno si se da, pero al momento de venderlo desde las cooperativas hacia otra empresa o cliente físico, ahí cada uno pone su precio por diferentes razones ya sean costos o algún otro justificante.

También en este foro: http://es.answers.yahoo.com/question/index;_ylt=Apv1viiBCkfgSfnZvemRdjmR.gt.;_ylv=3?qid=20070618121605AAIm0cY, muestran varios ejemplos de competencia perfecta tal como el pan o las tortillas, que prácticamente compramos cualquier tipo de pan o tortillas, no hay mucho que el productor pueda hacer para cambiar el precio de los mismos, y casi que cualquier persona se puede poner una panadería, si no cuenten la cantidad de mus manni que hay en este país.

La competencia perfecta es una situación que considero nos puede favorecer a todos ya sea empresa o persona física o cliente, pero se debe tener en cuenta que los extremos son malos, por ejemplo en Bolivia privatizaron el servicio de agua potable, y terminó siendo un caos: http://www.aporrea.org/tiburon/n55148.html, les cobraban en dólares tarifas irracionales o peor inclusive los pobladores de esa ciudad bebían agua contaminada.

En resumen es un conjunto de condiciones que nos puede favorecer a todos, sin embargo no aplicará a todos los productos por parejo. Considero que tienen sus límites de aplicabilidad y de alcance.


Identifique y explique diferencias entre competencia perfecta y competencia monopolística

 

Competencia Perfecta

Competencia Monopolística

Producto

Homogéneo

Diferenciado

Cantidad Vendedores

Muchos

Uno

¿Existen barreras?

No

Si, ya sean impuestos o leyes

Conocimiento del Mercado

Total

Parcial

El precio es fijado

Por el mercado, o sea la empresa es precio aceptante

La empresa, debido a que esta es la que manda

Cantidad de producto es fijado por

El mercado, por la curva de oferta y demanda

El monopolio vende la cantidad que quiere

 

Coloque un ejemplo de una empresa que se encuentra en competencia perfecta y desarrolle las características que la identifican para ser una empresa competitiva.

Las panaderías mussmanni. La situación de estas panaderías es muy sencilla, la mussmanni no vende pan directamente, ellos le rentan la marca a varias panaderías, y estas llevan ciertos estándares para hacer el pan. No existe ninguna barrera para que una empresa que desea vender pan, lo venda. Cualquiera pueda hacer pan, y venderlo al precio del mercado, nada más debe tener ciertos permisos de ley que a cualquier empresa o persona que desee vender productos alimenticios le corresponde, si alguien entra al mercado y sube el precio del pan que hace, lo puede vender a ese precio, pero gradualmente va a tener que bajar el precio, debido a que es muy poco probable que alguien pague más por un pedazo de pan. Adicionalmente la cantidad de pan que se vende es fijado por la oferta y demanda.


martes, abril 07, 2009

Templates OpenOffice 3.org

Pues me encontraba haciendo un trabajo para la universidad, y me dí cuenta que el OO3.org no trae algo así que digamos templates o plantillas decentes para las presentaciones. Me dedique a buscar y hay unas very impresive:
  1. Modern Impress Templates.
  2. http://technology.chtsai.org/impress/
Saludos.

sábado, marzo 21, 2009

Keytouch y keyEditor

Hoy probé un par de programitas muy bellos.

Hablo de keytouch y de keyEditor.

Resulta que keytouch, me permite activar mis teclas especiales de función, como subir o bajar volumen, abrir el player de musica, el correo, etc....

Bueno lo puse así:
aptitude install keytouch

y todo bien, excepto que .... no tenía mi tecladito, un logitech internet 350 keyboard, por lo tanto me tocó buscar como hacer los scan codes y etc...

En fin, puse KeyEditor:
aptitude install KeyEditor

Y al final instalé el programita, lo cargue y me muestra los devices que son los posibles candidatos para mi teclado y ya de ahi lo puedo programar. Envío al autor mi modelo de teclado y listo, feliz y contento, tengo mi teclado funcionando.

Saludos.

miércoles, marzo 18, 2009

Instalar KDE4 en debian 5 64 bits.

Bueno, bueno hoy quería probar otros desktop además del ya apreciado xfce. Por lo tanto me dedique a instalar KDE 4 con el plasma en Debian 5.
Así que google leando me encontré esto: http://kde4.debian.net/ y pos seguí las instrucciones y me ha funcionado.
Instalé la versión minimal y corre normalito.
Simplemente hay que hacer esto:
Agregar esta linea al file: /etc/apt/sources.list (Recuerden hacer respaldo por si algo pasa)
deb http://kde4.debian.net/ lenny main

Y ya
# apt-get update
# apt-get install kde4-minimal

Reiniciamos la sesion X11 y listo

Saludos desde Costa Rica.