Fork me on GitHub

Posts in tag `Ruby'

Introducción a Ruby

December 3, 2014

Charla de introducción a Ruby que preparé para el laburo

Charlas Ruby Trabajos

Aprendiendo Ruby - Mysql con Threads

September 12, 2014

El siguiente es un script que mediante threads crea n conexiones a la base de datos y donde cada conexión/thread realiza n consultas de insert o update.

Para crear threads en Ruby hay que usar la clase Thread. Aquí un ejemplo sencillo

threads = []
3.times {
    threads << Thread.new {
        print "Threads are fun!"
    }
}
threads.each { |t| t.join }
Threads are fun!
Threads are fun!
Threads are fun!

Para mysql usé el módulo mysql, el cual instalé de la siguiente forma.

apt-get install ruby1.9.1-dev libmysqlclient-dev
gem install mysql

Aquí un ejemplo simple

require 'mysql'

db = Mysql.new 'host', 'user', 'pass', 'db_name'
result = db.query 'select now()'

result.each do |row|
    row.each do |col|
        puts col
    end
end
2014-09-12 08:16:23

Finalmente el script

El script imprime t por cada thread creado, c por cada nueva conexión y . por cada 10 queries.

$ ruby bench.rb 10 100
Bench: 10 threads, 100 queries each
ttttcct.c.tcc...c..t.....t.c.....tc.......tc...........c
........................................................
........

Recursos

Ruby

Redis desde Python, Ruby, Lua, PHP y Node

September 6, 2014

El ejercicio es abrir varias terminales y jugar con redis desde distintos lenguajes. Para cada lenguaje se puede usar su propia consola interactiva.

Primero un ejemplo simple usando la consola de redis

$ redis-cli 
127.0.0.1:6379> set foo bar
OK
127.0.0.1:6379> get foo
"bar"

La consola de redis también puede usarse de esta forma

$ echo "set foo bar" | redis-cli
OK
$ echo "get foo" | redis-cli
"bar"

Finalmente los clientes. En el sitio de redis hay un listado de clientes para muy diversos lenguajes. De ahí elegí los siguientes.

Python

Github: redis-py

$ sudo pip install redis
$ python
>>> import redis
>>> r = redis.Redis()
>>> r.set('foo', 'bar')
True
>>> r.get('foo')
'bar'

Ruby

Github: redis-rb

$ sudo gem install redis
$ irb
>> require 'redis'
=> true
>> redis = Redis.new
=> #<Redis client v3.1.0 for redis://127.0.0.1:6379/0>
>> redis.set "foo", "bar"
=> "OK"
>> redis.get "foo"
=> "bar"

Lua

Github: redis-lua

$ sudo apt-get install lua-redis
$ lua
> redis = require 'redis'
> client = redis.connect('127.0.0.1', 6379)
> client:set('foo', 'bar')
> foo = client:get('foo')
> print(foo)
bar

PHP

Github: phpredis

$ sudo apt-get install php5-redis
$ php -a
php > $redis = new Redis();
php > $redis->pconnect('127.0.0.1', 6379);
php > $redis->set('foo', 'bar');
php > $foo = $redis->get('foo');
php > print $foo . "\n";
bar

Node

Github: node_redis

$ npm install redis
$ node
> var redis = require('redis')
> var client = redis.createClient(6379, '127.0.0.1')
> client.set('foo', 'bar', redis.print)
true
> Reply: OK
> client.get('foo', function(err, res) { console.log(res) })
true
> bar

Read more »

Lua Node.js PHP Python Ruby

← Older | Newer →