Archive for the ‘Informática’ Category

Excepcional recopilatorio realizado por Luc Bergeron (@Zapatou) de los mejores videos del año en Youtube/Vimeo/etc… (habréis visto algunos, pero todos…imposible!!) :

 

Y la lista completa de los videos, que ha dejado en su Facebook (impresionante trabajo!)

 

001- The Arctic Light –  http://bit.ly/swxWCx

002- GoPro HD: Avalanche Cliff Jump with Matthias Giraud - http://bit.ly/t1D3UV

003- Jeb Corliss Grinding The Crack - http://bit.ly/tU4j0d

004- Unbelievable cable car speed flying – Antoine Montant in Chamonix, France - http://bit.ly/vDo66C

005- På tynn sjøis 2 (on thin sea ice 2), Sandefjord in Norway - http://bit.ly/sxEkzC

006- Dressed for Dinner - http://bit.ly/szlhlT

007- Air France L’Envol – Film pub 2011 - http://bit.ly/t7N5J0

008- Columbia’s Omni-Heat Electric vs. Wim Hof: Another Day at the Office - http://bit.ly/sIn24f

009- Douchebag Bison - http://bit.ly/tnHOFz

010- 2SCS14 TRAILER 2 - http://bit.ly/rWz2XW

011- Criminal Penguins – Frozen Planet - http://bit.ly/sa5Obj

012- One year in 120 seconds - http://bit.ly/sIpxcH

013- Kids Create Bellagio-style Water Show in Pool - http://bit.ly/rZqeZD

014- Shark Pool: Official Trailer - http://bit.ly/u9yl0Q

015- Pool Skateboarding - http://bit.ly/t6JgyG

016- Cooper the chimp goes scuba diving - http://bit.ly/tItPXi

017- Ape With AK-47 - http://bit.ly/uRAgbK

018- Toyota NZ Hilux TV ad – Tougher Than You Can Imagine - http://bit.ly/smgXB3

019- Longboarding: French Fries and Dogs Eyes - http://bit.ly/ujUEE3

020- Landscapes: Volume Two - http://bit.ly/suPFGo

021- Future, Past & Present – Gerard Trueba, Cesar Cañas & Toni Bou - http://bit.ly/s80BMq

022- Danny MacAskill Plays Capetown - http://bit.ly/vdkylQ

023- Trike Racing – Fast and the Furious - http://bit.ly/voRdMP

024- Dirt Bike Lands on Chick CRASH HUGE - http://bit.ly/tU9vr3

025- Formula 1 comes to America! – Red Bull Racing takes first lap in Texas - http://bit.ly/vm8hLt

026- DC SHOES: KEN BLOCK’S GYMKHANA FOUR THE HOLLYWOOD MEGAMERCIAL - http://bit.ly/tTpqAn

027- Replay XD1080 – 462 in the Speed Demon - http://bit.ly/rAXZoR

028- Hdr skies - http://bit.ly/sTnbmw

029- The Human Slingshot - http://bit.ly/sQz9dT

030- Human Slingshot Slip and Slide – Vooray - http://bit.ly/vxJoZd

031- Blob Jump Official Guinness World Record - http://bit.ly/vse1Lt

032- Falling off the Rock 2011 – part 2 of 2 - http://bit.ly/tWbGD2

033- Michal Navratil – jumped from hotel roof in St. Maarten - http://bit.ly/rShYGs

034- Trip Of a Lifetime – Cliff Diving In Bermuda - http://bit.ly/rzSe6i

035- Vermont - http://bit.ly/sLqASm

036- RC Aerial Cam, Aerial Video Reel - http://bit.ly/vKHnHx

037- Ryan Doyle parkour in Mardin - http://bit.ly/uH8GHv

038- Russian spiderman 2 – Sergey Devliashov - http://bit.ly/skw7S8

039- Parkour comes to Greece – Red Bull Roof Tops - http://bit.ly/uQSBzU

040- TEMPEST FREERUNNING ACADEMY – GYM VIDEO - http://bit.ly/v8ZzRx

041- Damien Walters 2011 Official Showreel - http://bit.ly/vbMHVM

042- SwagRun Parkour and Freerunning - http://bit.ly/utaNyH

043- Dream World - http://bit.ly/t12bvk

044- Ampisound Showreel - http://bit.ly/rGaPr7

045- PUMPED UP KICKS DUBSTEP - http://bit.ly/u7tBXH

046- Stunt Motorcyclist in Downtown Chicago – Red Bull Night Tracks - http://bit.ly/uNXuZp

047- Endless Dance – Vagabonds & Friends - http://bit.ly/rqjYt8

048- Tokiodrift im Wohnzimmer - http://bit.ly/syi2Ol

049- Longest Consecutive Headspin World Record 11YR OLD - http://bit.ly/uTrVnf

050- Dubstep Juggling - http://bit.ly/u7ojlX

051- Hudson – Against The Grain - http://bit.ly/vMfJAZ

052- J&B Remix music video – J&B Remix music video

053- Slow Motion Dog Video from Beneful - http://bit.ly/tTYp71

054- Jorian Ponomareff – Ride your passion - http://bit.ly/vWWvCA

055- GoPro 2011 Highlights You in HD - http://bit.ly/u0AgRl

056- Dubstep dance Unleash Your Fingers edIT – Ants JayFunk - http://bit.ly/uFnbyP

057- Intro Dream Jump 222m – Dream Tower not a Bungee jump – longest - http://bit.ly/sLFLdF

058- Polte – What it is all about - http://bit.ly/ti8G90

059- Jung von Matt Limmat: Pro Infirmis Rapprochez-vous - http://bit.ly/tOcqj4

060- High five for first kiss - http://bit.ly/tvAdU3

061- EVOLUTION OF STYLE 2 - http://bit.ly/tI98sx

062 – Madeon – Pop Culture - http://bit.ly/rPWuMs

063- Weetabix – Dancer - http://bit.ly/vEZ83S

064- FUTURE PROOF - http://bit.ly/t2kpsn

065- Michael – PS3 Long Live Play - http://bit.ly/ucI2BE

066- Go Beyond The Cover - http://bit.ly/sTHiZN

067- Yoga Outreach – Zombies - http://bit.ly/uFovF1

068- Eyes in slow motion - http://bit.ly/sUKH0g

069- 100 YEARS STYLE EAST LONDON - http://bit.ly/vYW0oL

070- Greatest Father Daughter Dance Medley Ever - http://bit.ly/vw1CLR

071- Party Rock Anthem-Kia Soul Hamster Commercial - http://bit.ly/tAAlBX

072- Freestyle Football – Gautivity 4 - http://bit.ly/v54pzE

073- Skipping Slow Motion - http://bit.ly/ti3trE

074- OPJ in HOT ROPE – jumping sequence - http://bit.ly/sq9gys

075- Flying Rhinos - http://bit.ly/tMjIwC

076- World’s first manned flight with an electric multicopter - http://bit.ly/v9QILx

077- Robert Muraine – Mr Fantastic a World Of Dance San Diego 2010 - http://bit.ly/twRPYb

078- Becks – NONSTOP – Skrillex - http://bit.ly/tA6743

079- Samsung – Slate - http://bit.ly/ti8sgy

080- Samsung – Chronos - http://bit.ly/u4fHc7

081- BOLSHOI THEATRE – id - http://bit.ly/tZuufz

082- Changing faces with a smile – Operation Smile - http://bit.ly/rFBx7x

083- Losers - http://bit.ly/sJaMMh

084- Canal+ The Bear by BETC Paris - http://bit.ly/scJGXO

085- Break Dancing Gorilla at the Calgary Zoo - http://bit.ly/rOVlrE

086- BALLET 360 – The 360 Project - http://bit.ly/tUK3U3

087- LES TWINS – WORLD OF DANCE – WOD SAN DIEGO – NEW STYLE FRANCE HIP - http://bit.ly/teYDbp

088- Dubai Airports Flash Mob - http://bit.ly/rqJGUn

089- Modern Warfare – Epic Tower Jump - http://bit.ly/swwlU3

090- GoPro 2011 Highlights: You in HD - http://bit.ly/u0AgRl

091- GoPro 2011 Highlights: You in HD - http://bit.ly/u0AgRl

092- Hotel Booked in Freefall - http://bit.ly/s4bO90

093- EVOLUTION OF STYLE - http://bit.ly/uGKs44

094- Mercedes-Benz Werbung mit Stop im Wald German TV 2011 - http://bit.ly/u644iC

095- Respire - http://bit.ly/u4LCAA

096- Lil crabe – sail – break ton neck - http://bit.ly/vjkTvd

097- Kilian Martin: A Skate Illustration - http://bit.ly/teS7su

098- Ballroom Dance – Tale As Old As Time - http://bit.ly/tqoSuu

099- AZO Showreel 2011 - http://bit.ly/vtL2dC

100- The 2011 Short Film Of The Year Awards - http://bit.ly/s90kZL

101- IGLIDE – Christina Aguilera – DUBSTEP - http://bit.ly/u1oI7x

102- Genki Sudo – WORLD ORDER in New York - http://bit.ly/rMdn0c

103- Taekwondo Shuffle in Korea - http://bit.ly/s1Iwkg

104- McGill Dances for Cancer Research Lipdub - http://bit.ly/uIycdY

105- NOISIA VISION Teaser - http://bit.ly/spAAav

106- Water Jet Pack: Get High with Jetlev - http://bit.ly/v139qI

107- Mirage – The Full Experience - http://bit.ly/rGDYAL

108- International Epic Trick Shot Battle – Brodie Smith – USA vs. Australia - http://bit.ly/upYjKx

109- CSF World’s Largest Water Balloon Fight 2011 Official Video - http://bit.ly/uZeZ2p

110- Water Balloon to the Face doesn’t pop – Smarter Every Day - http://bit.ly/sdcClY

111- Beats By Dr. Dre Studio Color Campaign - http://bit.ly/s1jWsw

112- Lisa Hannigan – Knots - http://bit.ly/ttiTqc

113- Porter Robinson – SPITFIRE – CAPTURE THE CAN - http://bit.ly/sDuVCK

114- This is what it’s like to be shot at with an AK-47 - http://bit.ly/sRZ03o

115- Ultimate Batting Practice - http://bit.ly/vZJjQv

116- Publicité IKEA njut – Cuisine mix -http://bit.ly/tcQuuS

117- Storm Freerun – Volume 1 - http://bit.ly/tO7out

118- Ryan Williams Web Edit Two - http://bit.ly/t1Jx5d

119- North Legion SMX 2011- shizofanatic - http://bit.ly/txbGug

120- TreT-Training – Parkour Dog From Ukraine - http://bit.ly/u4Fdlp

121- Nub TV – Skateboard Side Flip – First Ever - http://bit.ly/u4MGgP

122- Drifting Motorbike – Drift Gymkhana – Jorian Ponomareff - http://bit.ly/vigZlQ

123- MOVE - http://bit.ly/w3n6Dq

124- RESEAU FERRE DE FRANCE - http://bit.ly/vLJCiq

125- Nissan QASHQAI new TV Commercial HD - http://bit.ly/uxkoIA

126- Endless Roads – Trailer - http://bit.ly/sa74Zc

127- Trial Freestyle – THE PARAMONT RIDE – JULIEN DUPONT – ARTHUR - http://bit.ly/tNajd1

128- World’s Greatest Drag Race - http://bit.ly/vLPjRz

129- Girl vs. Camel – in race - http://bit.ly/vBkhW8

130- Jedi Kittens Strike Back - http://bit.ly/tZ65kW

131- Brain Farm Digital Cinema Reel HD - http://bit.ly/s8KQ6a

132- McFly’s Closet - http://bit.ly/tQjcSk

133- Epic Chicken Burger Combo – Epic Meal Time - http://bit.ly/vbCPHi

134- Downhill Skateboard Bobtrack Altenberg Ramón Königshausen - http://bit.ly/vuzqpT

135- android dreams - http://bit.ly/tblywg

136- Timelapse – The City Limits - http://bit.ly/rpQ46L

137- The Aurora - http://bit.ly/s85C1E

138- Finding Oregon - http://bit.ly/tXLUt8

139- ZAIN – SAD WORLD - http://bit.ly/s5CFLb

140- Glencairn Tower Demolition - http://bit.ly/rPTNGc

141- Helicopter Crashes - http://bit.ly/rN9jTj

142- Paragliding vs Eagle - http://bit.ly/tsNA7z

143- I DIDN’T HIT MY BALLS - http://bit.ly/u1Xo81

144- Tough Mudder 2012 - http://bit.ly/vHLifo

145- Aerialist Seanna Sharpe 285 Feet Over The Williamsburg Bridge - http://bit.ly/sNfpbL

146- One Wheel Up, One Way Or Another - http://bit.ly/sRL6Xj

147- Jetman vs Jetteam - http://bit.ly/rt1Axy

148- Vestel – F18 Jetwash - http://bit.ly/tp9GrP

149- Ground Control Trailer – 6 December 2011 - http://bit.ly/w0osRy

150- Frank Lavallee – a Short Skate Film - http://bit.ly/sCKqzP

151- 8 Hours in Brooklyn - http://bit.ly/tszXry

152- STREET BATTLE YAK FILMS Les Twins VS Bones Pee Fly VS Laura Boubou - http://bit.ly/vW2HyA

153- Sneaker Face - http://bit.ly/uQJn9l

154- Friend request - http://bit.ly/rZ4tX3

155- Corentin - http://bit.ly/uKaiZw

156- AMAZING BEATBOX KIDS – Feel So Good – Masta Mic - http://bit.ly/skcR7S

157- Skittles Boom Box - http://bit.ly/uQcPe2

158- Cello Wars – Star Wars Parody Lightsaber Duel – Steven Sharp - http://bit.ly/s2D0ut

159- Michael Jackson Tribute Performance by Cirque du Soleil - http://bit.ly/vqEQXL

160- International Epic Trick Shot Battle – Brodie Smith - http://bit.ly/upYjKx

161- FLASHMOB – TESTÉ SUR DES HUMAINS – TVA - http://bit.ly/sYcFza

162- CubeStormer II - http://bit.ly/vwizsE

163- I LOOK MOVE - http://bit.ly/rQIvhg

164- Bupa Find A Healthier You - http://bit.ly/tWAsdv

165- Baby trashes bar in Las Palmas - http://bit.ly/u0obXQ

166- Take This Lollipop - http://bit.ly/stilrz

167- blind - http://bit.ly/sEYlkh

168- Traffic in Frenetic HCMC Vietnam - http://bit.ly/vrqE5s

169- Cravendale – Cats with Thumbs - http://bit.ly/v8MnKi

170 – Jackass 3D Rocky Punch - http://bit.ly/taSKAs

171- JP Auclair Street Segment – from Sherpas Cinemas_ All.I.Can - http://bit.ly/u670CQ

172- Beat It – A beatboxing and popping inspired short film featuring - http://bit.ly/uCSqLg

173- Brush With Death - http://bit.ly/t1O245

174- BOB - http://bit.ly/rRDYLW

175- Old Spice Motorcycle - http://bit.ly/w2Le4a

176- Official Call of Duty Modern Warfare 3 – The Vet – The n00b - http://bit.ly/uXqNCU

177- THE AMAZING CALLS – NOKIA Lumia - http://bit.ly/sMv0Zm

178- Brain Farm Digital Cinema Reel HD - http://bit.ly/s8KQ6a

179- Freestyle mtn biking in slow motion – Dancing Slopestyle - http://bit.ly/rU6s38

180- adidas D Rose adiZero Rose 2 The Bull - http://bit.ly/t8UtyO

181-  BOLSHOI THEATRE id - http://vimeo.com/31256872

182- Stunt Poetry - http://bit.ly/v8Bs8R

183- YouTube Space Lab – What Will You Do? - http://bit.ly/vrsbe0

184- PHANTOM WATER EDIT - http://bit.ly/rOK13J

185- Cliff Diving in Athens, Greece – Red Bull Cliff Diving World - http://bit.ly/sZ1stW

186- Dynamic Blooms - http://bit.ly/uQGjQE

187- Life of flowers - http://bit.ly/ttAKj9

188- SLOW MOTION PILLOW DESTRUCTION - http://bit.ly/sdQEvY

189- Rio for Real Fly with a bird - http://bit.ly/uiiP7U

190- Video Tutorial_ use of a steadycam for outdoor - http://bit.ly/uZdIGF

191- Just Jump – Skydives - http://bit.ly/uVAyEF

192- Danse avec le pil – Dancing with a plane - http://bit.ly/uPv71Y

193- Louie Schwartzberg – The hidden beauty of pollination - http://bit.ly/uItZZs

194- Loom - http://bit.ly/sEBuwo

195- Lovely Owl - http://bit.ly/sHFaz7

196- Phantom Cocktails - http://bit.ly/vsHjBy

197- Winter in Hell - http://bit.ly/rp0omU

198- Afghanistan – touch down in flight - http://bit.ly/tPCk0r

199- Internet Love Story CTFxC Wedding – Charles & Alli - http://bit.ly/vey0E0

200- 24 Hours of Neon - http://bit.ly/rTCldG“>200- 24 Hours of Neon

 

Llevo un tiempo sin tiempo e intentando formarme en varias tecnologías para sacar varios proyectos, remunerados y no, adelante. Lamentablemente no estoy pudiendo profundizar ni avanzar lo que quisiera, y mi visión por ahora no pasa de la perspectiva de otear el horizonte por encima de la barandilla, de puntillas para poderme asomar.

Las tres tecnologías entre las que me debato, para unos u otros proyectos, rondan siempre a Java, Django y RoR. Parto de la base de que mis conocimientos web se quedaron en el html (cutre) y que me he saltado directamente a uno de los grandes como PHP, que no solo se queda ya como algo muy sencillo comparándolo con estos tres “nuevos” lenguajes, sino que además a día de hoy ya es tontería ponerse a aprenderlo.

Acabo de leer de entre mis tabs eternamente a la espera de ser leidos, una entrevista que le hizo mi amigo @sowe a @happywebcoder, o Raul Murciano, como le conocí yo en la universidad cuando era mi profesor. Un excepcional profesional, guia de referencia para mi en muchos campos además del de la programación.

Os la reproduzco aquí, porque conmigo ha conseguido que me pique el gusanillo (@sowe, objetivo conseguido!! ;D), como para, a estas alturas que aún no he dado ningun paso imporante adelante, quizas decantarme por RoR antes que Django para muchas cosas (o todas).

¿Como esta el RoR en San Francisco (SF)?

Pues la verdad es que en plena forma. En SF hay muchísimas start-ups y muchas de ellas basan su tecnología en la web. Rails encaja muy bien con la filosofía de una start-up: permite prototipar muy rápido sin que el código deje de ser mantenible, ir refinando el prototipo mediante iteraciones cortas, incorporar gente al equipo es fácil porque todo el mundo sigue las mismas convenciones… Aquí se han dado cuenta de todas estas ventajas y, pese a que hay una cantidad tremenda de empresas… siguen haciendo falta programadores!

¿Como te has adaptado a SF?

SF es una ciudad muy acogedora, siempre encuentras alguien dispuesto a orientarte o echarte un cable. Tengo la sensación de que muchos de sus habitantes también proceden de otros sitios y hay cierto ambiente de solidaridad.

Eso sí, es una ciudad muy cara, especialmente el tema del alojamiento está por las nubes. En nuestro caso hemos optado por vivir en las afueras, en Berkeley: en 20 minutos de BART (parecido al metro) estamos en la ciudad y es un sitio más pequeño que encaja muy bien con nuestro estilo de vida (venimos de vivir en un pueblecito de la Costa Brava). Nos gusta tener la ciudad cerca para hacer alguna escapada de vez en cuando, pero para el día a día preferimos un sitio más tranquilo… será que nos hacemos mayores :D

El idioma es sin duda mi punto débil, pero es parte de lo que quiero mejorar durante el tiempo que esté aquí. Por suerte mis compañeros de trabajo son encantadores y tienen una paciencia tremenda conmigo.

Lo que no podemos evitar es echar de menos a la familia: por suerte podemos hablamos por videoconferencia muy a menudo y les mantenemos informados por facebook para compartir con ellos un poco de nuestro día a día. Tener la familia y los amigos lejos es sin duda lo que más nos cuesta de estar aquí.

¿Como ves Ruby y RoR desde un punto de vista tan privilegiado como heroku?

Heroku aloja miles de aplicaciones basadas en Rails y en ese sentido  sí es un punto de vista privilegiado porque puedes ver cómo aumenta el número de empresas que apuestan por Rails. Nuestro equipo de ventas nos informa cuando detecta alguna empresa conocida adopta nuestra plataforma y por suerte ocurre bastante a menudo. Por otra parte, Heroku utiliza internamente muchísimos proyectos open source desarrollados en Ruby. En todos ellos ves que la evolución no para y que tienen un ritmo de actividad impresionante, igual que impresiona el número de grupos locales y de conferencias dedicadas a practicar y difundir las bondades de Ruby y Ruby on Rails por todo el mundo. Por todo esto creo que tanto a nivel de popularidad entre las empresas
como de actividad por parte de la comunidad Ruby y Ruby on Rails están en un momento dulce.

Que crees que le falta a RoR para difundirse mas?

Tiempo. Creo que en las tecnologías, como en muchas áreas de conocimiento,cada persona tiene distintos grados de interés y de
permeabilidad hacia las novedades. Diría que tanto Ruby en el campo de la programación como Rails en el del desarrollo web han hecho suficiente “ruido” como para que la gente que tiene interés en estar al día haya oído hablar de ellos.
También creo que esa entre esa gente se ha creado suficiente masa crítica de usuarios como para darle entrada en el mundo empresarial, y que las empresas que tienen interés y se lo pueden permitir han empezado a probar Ruby y Rails con pequeños proyectos. Creo que es importante hacer esta puntualización sobre “las empresas que se lo pueden permitir” porque hay empresas que, o bien porque se dedican a temas en los que Ruby y Rails no encajan, o tienen una estructura demasiado rígida que les impide evaluar nuevas tecnologías (lo cual me parece peligroso a largo plazo si la tecnología juega un papel importante en su negocio).
El siguiente nivel de “permeabilidad” serían las personas y empresas que sólo prueban y aprender nuevas tecnologías cuando no les queda más remedio, porque el mercado se lo exige. Ese paso es con diferencia el  más lento y sólo el tiempo dirá si Ruby y Rails llegan a penetrar a ese nivel, pero eso depende en gran medida de otros factores diferentes a la difusión.

¿Que crees que le falta a ruby o RoR o en que podía mejorar?

Antes de nada me gustaría resaltar que Ruby no es el lenguaje perfecto ni Ruby on Rails el framework ideal para desarrollo web porque “there are no silver bullets”.
Vamos con Ruby:
- a nivel de sintaxis es un lenguaje muy conciso pero me gustaría que lo fuera un poco más (por ejemplo soy fan de la tabulación de python vs el “end”).
- del desarrollo del lenguaje en sí apenas conozco nada así que poco puedo aportar. Si acaso comentaría que en alguna de las listas
oficiales (ruby-dev) aún se utiliza japonés y yo unificaría en todas el uso del inglés.
- en cuanto a las librerías creo que rubyems, pese a ser un proyecto indispensable para cualquier programador Ruby, aún está a mucha distancia por ejemplo del CPAN de Perl.
- para terminar, siempre le pediremos a ruby más rendimiento y menos consumo de recursos: por suerte hay gente muy buena trabajando en las diferentes implementaciones de Ruby así que veremos mejoras.

En cuanto a Rails:
- la versión 3 ha traído una fuerte reestructuración interna: ahora Rails es mucho más hackeable pero creo que el rendimiento (al menos en modo desarrollo) se ha resentido mucho, así que me gustará ver si mejora en ese aspecto.
- la documentación, tanto a nivel de API como de tutoriales y guías de buenas prácticas, es fundamental para facilitar la adopción y uso de un framework. Por suerte gente como Xavier Noria han dado un paso al frente y con un trabajo diario han conseguido generar una documentación magnífica además de facilitar la participación de cualquier interesado en corregirla o completarla, espero que más gente se anime a colaborar en este apartado.
- como twitteaba hace poco @mgnoriega, es bueno ver que tras una etapa de consolidación Rails está de nuevo innovando: me gustará ver en funcionamiento la gestión automática de assets y su integración con coffeescript en su siguiente versión. Era algo que hasta ahora se gestionaba con plugins: espero que siendo los nuevos defaults su adopción crezca entre los desarrolladores, muchos usuarios se verán beneficiados al visitar webs con contenidos comprimidos y optimizados para su descarga y cacheo.

¿Quizá uno de los aportes de RoR sea la metaprogramacion aplicada?

Sí y no. Yo creo que la metaprogramación es buena cuando sirve para evitar repetir código, pero creo que en algunas versiones anteriores de Rails se llegó a abusar demasiado de ella: algunos fragmentos eran demasiado “exóticos” y eso dificultaba corregir errores o simplemente comprender cómo funcionaban. Creo que hay que buscar un compromiso entre la elegancia y la legibilidad del código y creo que en ese sentido Rails ha madurado bastante.

¿Que ventajas ves a ROR frente a PHP y al todo poderoso JAVA?

La primera ventaja que yo veo es la sintaxis: creo que Ruby es un lenguaje muchísimo más conciso y elegante que PHP y Java. Hay gente que no le da importancia a estas cosas, pero a mí me parece fundamental que el código sea siempre fácil y rápido de leer, mantener y modificar. En ese sentido creo que Ruby es mejor que PHP (cuya sintaxis para trabajar con orientación a objetos siempre me ha parecido un apaño) y que Java (que en mi opinión tiene una sintaxis que conduce a diseños demasiado recargados).

Para mí, hasta hace poco tiempo PHP era una alternativa válida frente a Rails cuando necesitabas desarrollar una web muy sencilla. Con la aparición de rack y Sinatra no encuentro un ejemplo en el que optar por PHP. Otra ventaja que tenía PHP era su ubicuidad y su facilidad de despliegue: con Heroku tardas menos de un minuto en crear y pasar a producción una aplicación Ruby… Así que yo ya no le veo ninguna ventaja a PHP.

Java tiene un mercado empresarial grandísimo en varias plataformas diferentes y por tanto hay mucho dinero invertido, no se dejará de utilizar de la noche a la mañana y seguro que mantiene una posición privilegiada en mercados concretos. Eso sí, creo la desaparición de Sun supone un revés muy importante, y no sé si Oracle tiene muy claro qué hacer con lo que ha comprado… Diría que Java es como los abuelos cascarrabias de las películas: le queda mucho tiempo entre nosotros pero cada vez menos gente quiere hacerse cargo de él.  Como anécdota, Jonathan Schwartz (ex CEO de Sun) utiliza Rails en la empresa que fundó tras vender Sun, y no creo que le falten contactos ni recursos para contratar profesionales Java de primer nivel :D .

Cómo evitar que ROR crezca hasta hacerse inmantenible como JAVA?  ¿Está RoR hecho para el mundo Enterprise?
Las aplicaciones de mi empresa tienen muchos usuarios… ¿Rails escala?  ¿Crees que hay mundo después de java?

(Agrupo estas tres preguntas para darles una respuesta común).
Creo que con la tecnología que tenemos hoy en día, los culpables de que un proyecto sea difícil de mantener somos las personas y no los lenguajes o frameworks que utilicemos. Los plazos de entrega irreales y la desgana a la hora de programar pueden darse tanto en proyectos Rails como en proyectos Java. Sí creo, como te decía antes, que creo que Ruby ayuda a tener un código más mantenible que Java… pero durante mi tiempo de freelance he visto aplicaciones Rails cuyo mantenimiento debe ser un infierno, así que usar ruby no asegura nada.
En el 2008, yellowpages.com explicaba en conferencias cómo había migrado de Java a Ruby on Rails. El código pasó de 125.000 a 20.000 líneas, se alegraron de comprobar que había mejorado muchísimo su mantenibilidad y seguían sirviendo más de mil millones de páginas al mes. Como ejemplo extremo de escalabilidad tenemos empresas como twitter o facebook que han probado distintas tecnologías y han terminado ajustándolas a medida para que se adapten a lo que necesitan. El límite de Rails parece que está entre ambos ejemplos pero lo desconozco porque no he trabajado en proyectos de esa escala.

Ya tenemos muchos programadores formados… ¿Compensaría fórmalos en RoR?

Yo lo haría si fuera mi empresa y pudiera permitírmelo. Como mínimo, aunque no quieras cambiar de tecnología, seguro que sacarían algunos patrones interesantes que poder aplicar con la tecnología que utilizan actualmente.

¿Serían nuestros programadores más felices trabajando con RoR?

No lo sé, puedo decirte que yo sí lo soy (he trabajado previamente con PHP y Java).

 

Hace un par de semanas perdí un disco duro USB de 2.5″ que llevaba a todas partes conmigo y contenia un archivo encriptado con TrueCrypt con todos los datos de clientes y proyectos. El disco salió volando, chocó contra el suelo y adiós datos. Por fortuna solia hacer copia de seguridad  del archivo encriptado de 100GB cada mes aproximadamente. Aparentemente suficiente pero, después de casi un mes de locura y recuperación del trabajo perdido, he aprendido que no es suficiente.

La solución era montar un sistema de copias de seguridad automatizado, que realizase las copias en lapsos de tiempo mucho mas pequeños. El problema es que copiar cada hora 100 GB de datos es imposible. La solución vino dada por Rsync, un programita nativo de Linux que, gracias a las librerias de CygWin, dispone de una versión compilada para Windows. Hay multitud de tutoriales por ahí que explican como usarlo, instalarlo y configurarlo. Yo no voy a reinventar la rueda. Sólo a explicar la solución que he planteado, principalmente para acordarme más adelante, pero también por si a alguien le sirve de utilidad

Nota Previa Importante: Rsync permite realizar sincronizaciones incrementales de archivos entre directorios locales y remotos. Aqui sólo voy a plantear la sincronización local entre dos unidades encriptadas con Truecrypt en dispositivos diferentes (portatil y USB).

Para utilizar Rsync de forma local no hace falta instalarlo como servidor en las maquinas destino. Si bien esto restringe el uso de determinadas funciones (como las rutas rsync://), la mayoría de funcionalidades se mantienen y la operatividad es plena. Para una utilización local en Windows únicamente hacen falta el ejecutable (rsync.exe) y las librerias cygwin1.dll y cyggcc_s-1.dll disponibles en el paquete de CygWin (hay multitud de fuentes en internet. Yo dejo aquí colgado el paquete mínimo utilizado en este tutorial).

Al ser un comando nativo de Linux, las rutas locales plantean son un problema, ya que en linux se utiliza una notacion similar al estandar POSIX (el “\” de windows es “/” en linux). Esto se soluciona con la libreria cygwin1.dll que simula una instalacion de cygwin y utiliza las referencias de linux (“/”) para trabajar, pero enlaza con las rutas locales de windows referenciadas con “\”. Además, la implementación de Rsync incluye un parseador que traduce las rutas de “\” a “/” (me ha dado algunos problemas con rutas complejas y nombres de archivo).

Las unidades de disco, en Windows se representan con la letra y los dos puntos (C:\, D:\, etc). La libreria de Cygwin nos ayuda con esto tambien traduciendo cada unidad como una ruta de linux (C:\ se convierte en /cygwin/c/, por ejemplo).

Con todo esto, la utilización de Rsync queda configurable en ambos sistemas exactamente de la misma forma, por lo que para hacer cualquier otra configuración sólo hay que ir a la documentación o a los múltiples tutoriales existentes. En el comando de arriba:

COMANDO BÁSICO:

rsync “origen” “destino

(las comillas no son obligatorias, pero si utiles en windows para las rutas con espacio)

OPCIONES:

-a: modo archivo. Compara y copia archivos con archivos, no directorios entre si.

-u: actualizar. Si en el destino hay un archivo con una fecha de edición posterio al que queremos copiar, no lo sobreescribe. Esto puede dar problemas de actualización si se utiliza y sincroniza el dispositico con más de una fuente.

-b: BackUp. Si actualiza un archivo con una nueva versión posterior, hace copia de seguridad del mismo y le añade un sufijo (~por defecto, pero también configurable). Si en el origen se elimina un archivo, en el destino se elimina también, pero se deja una copia con sufijo, como backup. Es muy util para tener las dos ultimas versiones de un archivo y para prevenir borrados accidentales.

–sufix: sufijo definible para sustituir a la ~ para los archivos de copia de seguridad. Es altamente recomendable de utilizar en sistemas Windows, ya que es muy complicado hacer busquedas de archivos que contengan ~ para localizar los archivos de backup.

-r: recursivo. Actualiza todo, desde el directorio principal que le damos, por todos sus subdirectorios hacia abajo.

-p: mantiene los atributos de permisos del archivo copiado. Si se va a utilizar tambien en sistemas Linux es conveniente añadir tambien las opciones -o (de owner) y -g (de group), para mantener los atributos completos de los archivos.

-t: mantiene los atributos de tiempo de modificación del archivo copiado.

-P: progreso. Con cada archivo que copia o actualiza, muestra una barra de porcentaje durante el proceso. Es más util para transferencias por red.

-h: escribe los datos por pantalla más amigables (en Kbs, Mb, etc…). Combiar siempre con más opciones porque suelto muestra la ayuda.

–logfile: ruta al archivo de log donde se escribirán las acciones que se vayan realizando.

–delete: borrado. Es la opción que permite eliminar un archivo en el origen y que al actualizar la copia de seguridad, se actualice la eliminación también. Si se combina con la opcion de -b (de backup), actualiza eliminando, pero guarda una copia, por si acaso.

–stats: estadisticas. Al terminar la actualización presenta un pequeño resumen de actividad (archivos copiados, tiempos empleados, tamaño total de arcvhvos actualizados, etc…)

–fake-super: opción MUY IMPORTANTE en Windows. Rsync utiliza archivos temporales para realizar las sincronizaciones (que luego elimina). Junto con el cambio de las fechas de acceso de archvos, en los sitemas Windows son tareas que requieren privilegios de administrador. Si no se utiliza esta opción la actualización se realiza correctamente, pero se obtienen mensajes de error con cada transferencia realizada. Muy incomodos y feos de leer. Mejor usarla.

–exclude: opción muy recomendable en  Windows para las papeleras, si se van a utilizar sincronizaciones de unidades completas (como en este ejemplo, que sincronizamos unidades virtuales de TrueCrypt entre si). Windows guarda en un directorio oculto ($RECYCLE.bin) las copias de los archivos que eliminamos parcialmente, con referencias aleatorias suyas, hasta que vaciamos la papelera. Rsync al eliminar archivos en las sincronizaciones los manda a estas papeleras por lo que, si no las excluimos, se sincronizarán entre si, aumentando su tamaño exponencialmente y reduciendo el espacio disponible en las unidades, además de ir tardando cada vez más en completarse, al haber más archivos.

Un detalle importante es la barra final del path “/” que SI aparece en la ruta de origen, pero que NO debe aparecer en la ruta de destino. Si la dejamos en origen y en destino, rsync sincronizará todo el directorio de origen en el directorio de destino, haciendo una copia del directorio dentro del destino. Si no hacemos esto, las dos unidades TrueCrypt no serán iguales, ya que en la copia de backup abrá un nivel de directorios más que en el original. En Windows esto puede llegar a ser un problema, ya que hay un limite máximo de profundidad (subdirectorios) que, si se supera durante la copia, puede dejarnos una copia de seguridad estropeada e incompleta

“/cygdrive/origen/”   “cygdrive/destino/” NO!!
“/cygdrive/origen/”   “cygdrive/destino”  SI!!

 

Para terminar dejo el código de un archivo .bat que me he hecho para el caso, donde sólamente hay que configurar las rutas al principio y queda todo hecho. Sólamente hay que configurar una tarea en el Programador de Tareas de Windows para que se ejecute con la recurrencia que creais conveniente.

Dejo aqui también un paquete BackUps-Rsync.zip con los archivos y librerías necesarias para este tutorial, así como dos versiones de archivo .bat: BackUp.Inicio.bat (genera un archivo de log por cada ejecución, con la fecha de la ejecución) y BackUp.Recurrente.bat (genera un archivo de log diario, donde se guardan los logs de todas las copias de backup ejecutadas en un mismo dia).

 

 

 

@echo off

REM ###########BackUps a disco con Rsync (para Windows y Linux)####################
REM
REM Por Skiter el 6/5/2011
REM http://www.skitergia.com/2011/05/05/backups-a-disco-con-rsync/
REM
REM ###############################################################################

REM #################### RUTA DE INSTALACION ######################################
REM # Rutas y nombres de archivo. Todo en formato WINDOWS
REM ###############################################################################

REM Ruta donde está copiado el Rsync
set RSYNC_INSTALATION_PATH="C:\Program Files (x86)\BackUps (Rsync)\"

REM Nombre (sin extensión) para el archivo de logs
set LOGFILE_NAME="BackUpSesion."

REM Ruta donde se alojarán los archivos de log.
set LOGFILE_WIN_PATH="G:\BackUpsLogs\"

REM Directorio (o unidad TrueCrypt) de la que queREMos hacer copias de seguridad
set FILES_TO_BACKUP_WIN_PATH="R:\"

REM Directorio (o unidad TrueCrypt) donde queREMos que se hagan las copias
set BACKUP_DESTINATION_WIN_PATH=”S:\”

REM ##############################################################################

REM ######################## SCRIPT ##############################

REM Guardamos Fecha y hora actuales (en formato YYYY.MM.DD_hhmmss)
set NOW=%DATE:~6,4%.%DATE:~3,2%.%DATE:~0,2%_%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%

REM creamos el nombre del archivo de log, con la fecha al final.
REM al valor configurado arriba, le quitamos la ultima comilla (“),
REM le añadimos la fecha, la extensión de archivo y volvemos a cerrar las comillas.
set BACKUP_LOGFILE=%LOGFILE_NAME:~,-1%%NOW%.txt”

REM escribimos en el archivo de log una linea para definir el comienzo del log
echo —- Started First Backup at %NOW% >> “%LOGFILE_WIN_PATH:”=%%BACKUP_LOGFILE:”=%”

REM quitamos todas las comillas (ya no nos van a hacer falta).
set BACKUP_LOGFILE=%BACKUP_LOGFILE:”=%

REM nos movemos al directorio donde está el Rsync
C:
chdir %RSYNC_INSTALATION_PATH%

REM eliminamos y sustituimos algunos caracteres de las rutas configuradas arriba
REM para hacerlas Linux y pasarselas al comando correctamente.

REM al nombre de archivo de log le quitamos las comillas
set LOGFILE_NAME=%LOGFILE_NAME:”=%

REM cambiamos las barras “\” por barras “/”
REM eliminamos todos los “:” (ya no hacen falta)
REM eliminamos todas las comillas de las rutas (las pondremos en el comando)
set LOGFILE_WIN_PATH=%LOGFILE_WIN_PATH:\=/%
set LOGFILE_WIN_PATH=%LOGFILE_WIN_PATH::=%
set LOGFILE_WIN_PATH=%LOGFILE_WIN_PATH:”=%

REM cambiamos las barras “\” por barras “/”
REM eliminamos todos los “:” (ya no hacen falta)
REM eliminamos todas las comillas de las rutas (las pondremos en el comando)
set FILES_TO_BACKUP_WIN_PATH=%FILES_TO_BACKUP_WIN_PATH:\=/%
set FILES_TO_BACKUP_WIN_PATH=%FILES_TO_BACKUP_WIN_PATH::=%
set FILES_TO_BACKUP_WIN_PATH=%FILES_TO_BACKUP_WIN_PATH:”=%

REM cambiamos las barras “\” por barras “/”
REM eliminamos todos los “:” (ya no hacen falta)
REM eliminamos todas las comillas de las rutas (las pondremos en el comando)
REM eliminamos la última barra “/” de la ruta del destino
set BACKUP_DESTINATION_WIN_PATH=%BACKUP_DESTINATION_WIN_PATH:\=/%
set BACKUP_DESTINATION_WIN_PATH=%BACKUP_DESTINATION_WIN_PATH::=%
set BACKUP_DESTINATION_WIN_PATH=%BACKUP_DESTINATION_WIN_PATH:”=%
set BACKUP_DESTINATION_WIN_PATH=%BACKUP_DESTINATION_WIN_PATH:~,-1%

REM escribimos el comando con las variables correspondientes ya formateadas
rsync -aubrpt –suffix=”_backUp” -Ph –delete –stats –fake-super –exclude=”$RECYCLE.BIN” –log-file=”/cygdrive/%LOGFILE_WIN_PATH%%BACKUP_LOGFILE%” “/cygdrive/%FILES_TO_BACKUP_WIN_PATH%” “/cygdrive/%BACKUP_DESTINATION_WIN_PATH%”

REM #########################################################

 

 

 

 

 

 

 

Algunas referencias que he utilizado para documentarme:

Los comienzos de la epopeya: www.itefix.no

Primera pista sobre los paths: panoolvidar.wordpress.com

Aunque no es una solucion, da pistas: www.eslomas.com

Una posible solucion completa: optics.ph.unimelb.edu.au

Fundamental para el problema de los archivos temporales: digitaldj.net

Soy Linuxero converso desde el primer año de carrera y por deformación “frikiaccional” estoy malacostumbrado a usar el Shell Scripting para muchos apaños.

Llevo dos días intentando organizar un par de scripts Linux y Windows para hacer backups automáticos a unidades de disco encriptadas usando TrueCrypt, Rsync, Cygwin y liandola parda (en la parte de windows, como no).

Hoy he sufrido mi propia maldición. Usando un comando linux (sed.exe y gawk.exe en windows, provistos por CYGWin) estaba intentando filtrar la fecha y la hora para añadirla al final del nombre de los archivos de log en formato SQLTime (YYYYMMDDhhmmss)

echo %date% %time% | C:\cygwin\bin\sed.exe -e “s/\//\ /g”| C:\cygwin\bin\sed.exe -e “s/\:/\ /g” | C:\cygwin\bin\sed.exe -e “s/,/\ /g”| c:\cygwin\bin\gawk ‘{print $3″.”$2″.”$1″.”$4$5$6 }’

Output: 2011.05.05.135915    (lo se, lo se. No es SQLTime. He añadido unos puntitos “a lo aleman“)

Con dos cojones (con perdon). Como todo lo que suelo hacer yo, hay una forma más facil de hacerlo (en Windows). Al final va a resultar que MS-DOS no era tan malo).

echo %DATE:~6,4%.%DATE:~3,2%.%DATE:~0,2%_%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%

Output: 2011.05.05_135915    (Ta Da!!!!)

Resulta que a las variables de entorno que ya existen, puedes incluirle “recortes” añadiendo los dos puntos (:) y la vírgula (~). El primer número es el primer caracter desde el que se empieza a mostrar (la cuenta empieza en 0), el segundo número es el número de caracteres que se muestran (contando desde el primer número).

echo %DATE% = 05/05/2011

echo %DATE:~6,4% = 2011

(a partir del sexto caracter, el 2, contamos 4, inclusive el sexto)

Y cual es la diferencia que ha hecho que me vuelva loco buscando una alternativa nativa de MS-DOS???

Que la segunda forma puedes incrustarsela a un comando de MS-DOS que utilice un ejecutable Linux-like (de CyGWin) y se lo come como si fuese un caracter más en la linea de comandos (por ejemplo, al pasarselo a un atributo de una opción del comando linux).

Cuando termine con los scripts de BackUp dejaré un HowTo aqui y veréis por que necesitaba esta pijoteria.

 

 

 

 

P.D.: como curiosidad para todos aquellos que habéis aprendido hoy que el “rabito de la ñ” se llamaba “vírgula“, y no biribula, birbula, ño o “palito de la ñ”, os sugiero que busques la definición y la compareis con los resultados en imágenes de google…jajajaja.

P.D. II: Os dejo otros truquillos que despues, refinando el script, he tenido que usar para darle formato a los datos que iba almacenando en las variables.

echo %DATE:~,-3% = 05/05/2

(el -3, sin numero, pero con coma delante, elimina los 3 últimos caracteres)

echo %DATE:~-3% = 011

(el -3, sin numero ni coma delante, empieza a contar por el final, hacia atrás. Sólo los 3 últimos caracteres se muestran)

echo %DATE:/=\% = 05\05\2011

(con un igual entre caracteres, reemplaza las instancias del primero por el segundo. Aqui, las / con \)

echo %DATE:/=% = 05052011

(igual que el anterior, pero reemplazando por nada. Elimina el carácter)