Numérica Latina

artesanía numérica autóctona

sexy

ssh -N -L80:proxy.fadu.uba.ar:8080 numerica.cl

pero eso manda ssh (por el 80?) al 8080 de numerica, la cual lo rechazara

biblioteca@pc-1463:~$ ssh -N -L8888:proxy.fadu.uba.ar:8080 numerica.cl
ssh: connect to host numerica.cl port 22: No route to host

igual va por el 22
(se disparan screenshots -
- yo solo quiero instalar un wordpress pa una amiga!)

hot

biblioteca@pc-1463:~$ ssh -R proxy.fadu.uba.ar:8080:numerica.cl:22 roberto@numerica.cl
ssh: connect to host numerica.cl port 22: Connection timed out
$ aptitude search corkscrew
p   corkscrew                                                       - tunnel TCP connections through HTTP proxies                              
biblioteca@pc-1463:~$ apt-get install corkscrew
E: No se pudo abrir el fichero de bloqueo '/var/lib/dpkg/lock' - open (13: Permiso denegado)
E: Imposible bloquear el directorio de administración (/var/lib/dpkg/), ¿es superusuario?
biblioteca@pc-1463:~$ muy bien configurado todo en la uba

por ende no

ssh roberto@numerica.cl -o "ProxyCommand corkscrew proxy.fadu.uba.ar 8080 numerica.cl 22"

>>


Numérica usa Attribution-Noncommercial-Share Alike 3.0 Unported.

Abril 7th, 2014

Publicado en: Uncategorized

Comentar

contexto

El caso es que en un desarrollo que integra varios servicios, hice unos test en Cucumber en donde el usuario interactúa con varias páginas (va a una, hace algo, va a otra…). Como el driver por defecto de Capybara, RackTest ejecuta directamente contra el código (creo que ni levanta un servidor) éste no puede testear páginas externas, por lo que me cambié a WebKit (después de probar Selenium, que no se la pudo).

Luego le integré como método de pago Stripe, que es la última chupada del mate: incluyes un JavaScript que levanta un pop-up que toma el pago, y luego submitea el form que le des con un token, haciéndose cargo de todo el pago fuera de tu sitio. Cuando tocó testear con Cucumber, todo fue bien

@webkit
Escenario: Pago
Dado que el usuario entra a la página de pago
Y hace click en "Pagar con tarjeta"
Y pone su correo
Y pone su número de tarjeta
Entonces
...

Hasta que de un día para otro, todos los tests que involucaban pago se rompieron

broken

Después de agotar todas las instancias y ya que pareciera que nada había cambiado sustancialmente, deduje que algo tenía que haber cambiado en checkout.js, el script de Stripe, el cual se linkea directamente desde el servidor de ellos.

Busqué un changelog en su página, pero el código es privado. Me conecté a #stripe en IRC y mv me confirmó que habían actualizado de versión el día anterior. ¿Qué puede ser? ¿Por qué webkit se niega a ejecutarlo ahora?

webkit en debug

En su página de GitHub el driver dice que tiene una versión de debug:

so we’ve included a debug version of the driver that prints a log of what happened during each test

Pero no se indica cómo activarlo, y el link que dan está roto, debiera apuntar al wiki que dice que basta con poner

Capybara.javascript_driver = :webkit_debug

y tenemos nuestro log

Received "Node.leftClick" 
Started "Node.leftClick" 
Started request to "https://q.stripe.com/?event=outerLoad&lsid=33023aa4-10d7-43ee-80c6-f2be1399f493&cid=603fa6ca-0f76-4424-af23-d6c679b84d32&rf=http%3A%2F%2F127.0.0.1%3A33074%2Frequester%2Fteams%2F52f702c2616c646ea3090000%2Fname&sc=&key=pk_test_AR55DVwGjvs6XD8LX99I22L2&merchantVariantID=pk_test_AR55DVwGjvs6XD8LX99I22L2&forceV3=true&merchant_i3=test&version=v3&i=1391919819178" 
Load started 
"Node.leftClick" started page load 
Started request to "https://checkout.stripe.com/v3" 
Started request to "https://checkout.stripe.com/v3" 
Finished "Node.leftClick" with response "Success()" 
Started request to "https://checkout.stripe.com/v3/checkout/desktop.css?version=nzQPwWRdq1CkpeODzgibGw" 
Started request to "https://checkout.stripe.com/v3/checkout/desktop.css?version=nzQPwWRdq1CkpeODzgibGw" 
Started request to "https://checkout.stripe.com/js/raven.min.js?version=l0KqNMHa_QhUOamdDvGk-A" 
Started request to "https://checkout.stripe.com/js/raven.min.js?version=l0KqNMHa_QhUOamdDvGk-A" 
Started request to "https://checkout.stripe.com/v3/checkout/desktop.js?version=0KWqslarIzhG12n8fQnLaw" 
Started request to "https://checkout.stripe.com/v3/checkout/desktop.js?version=0KWqslarIzhG12n8fQnLaw" 
Started request to "https://js.stripe.com/v1/" 
Started request to "https://js.stripe.com/v1/" 
Started request to "https://mpsnare.iesnare.com/snare.js" 
Started request to "https://mpsnare.iesnare.com/snare.js" 
Received 200 from "https://checkout.stripe.com/v3" 
Received 200 from "https://checkout.stripe.com/v3/checkout/desktop.css?version=nzQPwWRdq1CkpeODzgibGw" 
Received 200 from "https://checkout.stripe.com/js/raven.min.js?version=l0KqNMHa_QhUOamdDvGk-A"
...

Como vemos, al apretar el botón de Stripe sí se cargan todos sus assets…

Además, la consola del browser no tiene errores

page.console_errors # y similares
# => [ ]

así es que tampoco es que el javascript falle por algún motivo…

page.driver.window_handles

A punto de cambiarme a Poltergeist (que está basado en webkit pero las hace todas – hasta reportar errores remotos), me fijé en esta parte de su documentación y decidí probarla con webkit no más

page.driver.window_handles
# => ["{bcd5174f-daaf-4530-a0cb-8e789dda6a64}", "{611cfc31-ee42-4358-b032-a1b3d81ae761}"]

¡demonios! ahí está

stripe = page.driver.window_handles.last
# => "{611cfc31-ee42-4358-b032-a1b3d81ae761}"
page.within_window(stripe){ find_field 'Email' }
#<Capybara::Element tag="h1" path="/html/body/div[@id='wrap']/div[2]/div[1]/div/h1">

fuck yea!

switch_to v/s within_window

Lo idea sería poder simplemente cambiarse de ventana de ahora en adelante >>

page.driver.browser.switch_to.window(stripe)

pero webkit no soporta esa sintaxis, así es que me las tengo que arreglar con

within_window stripe do
  # toma un bloque...
end

lo que es una lata porque tengo que wrappear todas las queries que van a stripe en distintos lados… y
hell-yea


Numérica usa Attribution-Noncommercial-Share Alike 3.0 Unported.

Febrero 9th, 2014

Publicado en: informática

Etiquetas:

2Comments

Por ahí ví un infográfico que situaba a Bitcoin como la innovación más importante en los últimos 20 años, después del Internet y antes el PC.
La razón es que es la primera solución al problema de los generales bizantinos (<– me comprometo a hacer esa página en español)

(<– yo subtitulé ese video)

En este video se explica en qué consiste la “confianza computacional” y, como bien dice M. Feuerfelder de BoingBoing,

por qué es mucho mejor que confiar en los bancos (que lavan dinero del narcotráfico como HSBC) y la reserva federal (que básicamente le regala dinero a los ricos que son dueños de los bancos).



Numérica usa Attribution-Noncommercial-Share Alike 3.0 Unported.

Febrero 6th, 2014

Publicado en: informática, política

Etiquetas:

Comentar

cuando los tracks de un disco vienen sin el número en el título
no sé si se podrá hacer en bash, pero un índice es un moco en ruby

Dir["./**"].each_with_index{|f, i| system("rename -v 's/ENLACE\ 041/#{i+1}/i' #{Regexp.escape(f)}") }

en este caso le saco el título del autor (desde Concepción) y le pongo el número.
nótese el #{i+1}, ya que ningún disco parte de la canción cero.

Para sumarle uno al título de cada archivo, necesitará un chorizo como éste

Dir["./*"].sort_by!{|d|d.match(/\d+/).to_s.to_i}.each_with_index{|f, i| system("rename -v 's/\\d+\\ -/#{i+1}\\ -/i' .#{f[1..-1].gsub(' ','\ ').gsub('.','\.')}") }


(los últimos gsub porque no debemos escapar el primer punto para que sea una ruta… seguramente hay formas más elegantes)


Numérica usa Attribution-Noncommercial-Share Alike 3.0 Unported.

Enero 6th, 2014

Publicado en: Uncategorized

Etiquetas:,

Comentar

Por ejemplo para sacar el molesto nombre del blog en un mp3

$ find . -name "*DELASCALLES*" -exec rename -v 's/\ \-\ DELASCALLES\.COM//i' {} \;
./08 Alrevez - Lil Supa - DELASCALLES.COM.mp3 renamed as ./08 Alrevez - Lil Supa.mp3
./04 Esencia - Supremacy HHC - DELASCALLES.COM.mp3 renamed as ./04 Esencia - Supremacy HHC.mp3
./07 Ansias de rap - AltoStanding - DELASCALLES.COM.mp3 renamed as ./07 Ansias de rap - AltoStanding.mp3
./02 Cuatro+Uno - BASYCO - DELASCALLES.COM.mp3 renamed as ./02 Cuatro+Uno - BASYCO.mp3
./05 Mentes erradas - Rayone feat.Danniggaz - DELASCALLES.COM.mp3 renamed as ./05 Mentes erradas - Rayone feat.Danniggaz.mp3
./06 1-2,2-1 - Supa feat.Canserbero - DELASCALLES.COM.mp3 renamed as ./06 1-2,2-1 - Supa feat.Canserbero.mp3
./10 Brindo - Supa,Capooto - DELASCALLES.COM.mp3 renamed as ./10 Brindo - Supa,Capooto.mp3
./03 Standigs en acción - AltoStanding - DELASCALLES.COM.mp3 renamed as ./03 Standigs en acción - AltoStanding.mp3
./09 La Lírica - AltoStanding - DELASCALLES.COM.mp3 renamed as ./09 La Lírica - AltoStanding.mp3

fuente: SuperUser
(aguante el RAP Venezolano)


Numérica usa Attribution-Noncommercial-Share Alike 3.0 Unported.

Diciembre 28th, 2013

Publicado en: Uncategorized

Etiquetas:

Comentar

El periodista de The Guardian que cubrió el caso de Edward Snowden, Glenn Greenwald, habla en la edición 2013 del Chaos Communications Congress acerca de su experiencia con la criptografía para comunicase con su fuente, de privacidad, libertad de expresión y el estado de las cosas hoy por hoy…

en fín, ¡subtitular este video!


Numérica usa Attribution-Noncommercial-Share Alike 3.0 Unported.

Diciembre 28th, 2013

Publicado en: informática, política

Un comentario

El descubrimiento de hoy:

En Mongoid una relación has_and_belongs_to_many no utiliza una “colección intermedia”, sino que colecciones (arrays) en cada modelo


Numérica usa Attribution-Noncommercial-Share Alike 3.0 Unported.

Diciembre 16th, 2013

Publicado en: Uncategorized

Comentar

Ya es enésima vez que busco este comando

find . -type f -print0 | xargs -0 sed -i 's/GobiernoMilitar/DictaduraBrutal/g'

sirve para buscar todas las ocurrencias de una palabra en los archivos de un directorio para reemplazarlas por otra palabra.

find

obviamente busca los archivos

  • -type f: le dice que devuelva sólo archivos, no directorios, links, etc.
  • -print0: es para que separe las palabras (de los nombres de los archivos) con el caracter nulo en vez del espacio, en caso que tengamos archivos con espacios en el nombre (‘Mi archivo  mal   hecho.doc’)
  • -0: creo ques para lo mismo en xargs

xargs

  • xargs: ejecuta lo siguiente para cada archivo

sed

  • sed: el comando de reemplazo de texto, toma una regex en -i

fuente >>>


Numérica usa Attribution-Noncommercial-Share Alike 3.0 Unported.

Diciembre 13th, 2013

Publicado en: Uncategorized

Para instalar un dúper scanner Kodak – que dice soportar Linux…

Supuestamente el gran aporte de Kodak es Scan Twain, un programa que no se sabe mucho qué hace (algo como un controlador del scanner, imagino), construído sobre Qt (librería gráfica en C++), que está disponible en sourceforge.net

Pero. Sólo trae los fuentes (.cpp y .h) pero ningún tipo de archivo de compilación. Gooogleando se intuía que Qt tiene su herramienta propia.

En Debian dele

$ apt-get install qt4-qmake

y supuestamente el workflow es

$ qmake -project

que genera un archivo miproyecto.pro

$ qmake miproyecto.pro

que genera un Makefile

$ make

(clásico)

Pero se caía harto con

qlabel.h -- no such file (o algo así)

lo cual sólo pude arreglar instalando los headers de Qt3

$ apt-get install libqt3-headers

a pesar que entiendo usamos Qt4…

Siguiente error que encontramos

undefined reference 'TiffSetField'

etc.

lo cual suena a que falta linkear una librería externa… efectivamente

$ aptitude search tiff

muestra una tal libtiff, que se halla en /usr/lib/libtiff.so

así es que añadiendo

-L/usr/lib -ltiff

al Makefile,

¡compila!

Pero me sirvió para practicar C++ no más, ya que es la misma basofia que hay en los repos de Squeeze que se queda pegado al seleccionar el scnner…


Numérica usa Attribution-Noncommercial-Share Alike 3.0 Unported.

Octubre 16th, 2013

Publicado en: Uncategorized

Etiquetas:, ,

Comentar

A menudo uno borra un archivo en Aptana (u otro IDE) y después en git status aparecen así

# On branch master
# Your branch is ahead of 'origin/master' by 4 commits.
#
# Changes to be committed:
#   (use "git reset HEAD ..." to unstage)
#
#	modified:   app/assets/stylesheets/store/all.css.scss
#	modified:   app/overrides/one_style.rb
#	modified:   app/views/spree/something/edit.html.erb
#
# Changes not staged for commit:
#   (use "git add/rm ..." to update what will be committed)
#   (use "git checkout -- ..." to discard changes in working directory)
#
#	deleted:    app/views/spree/something/_one.html.erb
#	deleted:    app/views/spree/something/_two.html.erb
#	deleted:    app/views/spree/something/_three.html.erb

o sea que hay que volver a borrarlos en Git

$ git rm app/views/spree/something/_one.html.erb
$ git rm app/views/spree/something/_two.html.erb
etc

bueno para listarlos todos

$ git ls-files --deleted

se lo podemos luego pasar a xargs para borrarlos

$ git ls-files --deleted | xargs git rm

Numérica usa Attribution-Noncommercial-Share Alike 3.0 Unported.

Septiembre 13th, 2013

Publicado en: Uncategorized

Etiquetas:

Comentar

Siguiente Página »