Desafio Latam
 
  • Tutoriales
    • Rails
    • Javascript
    • Android
  • Motivación
  • Graduados
  • Ver Cursos

DesafioLatam

Aprende a construir aplicaciones web en nuestros bootcamps presenciales.
Formularios Anidados
Formularios Anidados en Ruby on Rails
desafio dominó

Desafío lógico del tablero de ajedrez y los dominó

Imagina que tienes un set de dominó y que cada ficha ocupa dos espacios de un tablero de ajedrez, debes colocar cada ficha en posición vertical u horizontal en el tablero pero no puedes ocupar ni la primera posición del tablero ni la última.

En resumen:

hay 62 espacios disponibles

tienes 31 piezas y cada una ocupa dos espacios, puedes ponerlas verticalmente o horizontalmente.

A primera vista se ve como un problema fácil de resolver, ¿Eres capaz de hacerlo?.

P.D: El problema si tiene solución.

Te salió muy fácil resolver el problema?, aquí tienes otro.

 

(Gracias a danielitis por la ilustración del problema).

Share Button
  • junio 20, 2015
  • 9
  • 9901
  • Desafíos
  • Ver más
Donde poner los scripts de javascripts

Javascript en el Head o en el cierre del body? Estás equivocado

¿Por que se dice que los scripts de javascript deben ir en el cierre?

En la web existen muchas recomendaciones acerca de que deben poner el javascript al final del sitio justo antes del cierre del </body>, la razón argumentada es sencilla, los navegadores leían secuencialmente los scripts y bloqueaban el render de la página hasta haberla leído el script, pero entonces ¿por qué razón Ruby on Rails, que supuestamente es construido por expertos carga javascript dentro de la etiqueta <head> </head> en lugar del cierre de la página?.

¿Entonces por qué Rails los pone al principio?

Hay 2 razones:

La primera es porque todos los navegadores modernos (incluyendo internet explorer 8) a partir del 2008 incorporaron un sistema llamado preload scanning que les permite cargar todos los scripts paralelamente sin causar bloqueos (bueno, realmente los bloqueos todavía existen, pero son parciales y ya ahondaremos más sobre como eliminarlos).

El segundo problema de agregar javascript al inicio consiste en que a veces alguna funcionalidad crítica de la página (o de tu negocio) depende de esos javascript, por ejemplo si pones google analytics al final, en el cierre del body y el usuario sale del sitio antes de terminar cargar la página entonces pierdes la data del usuario, otra de las funcionalidades críticas de Rails viene dada por jquery-ujs, si esto se cargara al final de la página tendríamos un problema con los usuarios que son del tipo Quicky Clicker y presionan el los links antes de que la página termine de cargar.

Más sobre Preload Scanning

Preload Scanning no evita completamente el bloqueo, su implementación cambia dependiendo del navegador, pero en términos básicos consiste en un light weight process que se levanta para seguir leyendo archivos css, imágenes u otros scripts cuando se topa con un script. Pero esta lectura es sólo de forma parcial, por lo que sigue siendo recomendado en muchos casos poner javascript al final.

Otra forma de optimizar el proceso es ponerlo en el head junto con los atributos async o defer, este thread de stackoverflow es bastante aclarativo sobre las diferencias, sin embargo como todo lo asincrónico se recomienda implementar con cuidado.

¿Que dice google al respecto?

Técnicamente el guideline oficial de google developers dice que debes evitar en lo posible bloquear, en otras palabras cargar javascript, si lo haces, hazlo al final, ocupa async y defer cuando puedas y si el script es pequeño, es mejor tenerlo dentro del html (esto último si que me lo esperaba) debido que al evitar el llamado disminuyes la latencia de los requests.

Sugerencias finales:

Nada de lo leído quiere decir que uno pueda poner en cualquier parte cualquier script, muchos de ellos tienen dependencias, otros necesitan el DOM cargado y como no están bien programados hay que agregarlos necesariamente al final, a fin de cuentas el preload scanning lo que lo logra es evitar que la lectura de un script de javascript bloquee la lectura del HTML.

En resumen:

si las funcionalidad es crítica en el head, sino en el cierre del body, si el javascript consiste sólo en un par de líneas puede ir inline para optimizar la carga.

Referencias:

http://andydavies.me/blog/2013/10/22/how-the-browser-pre-loader-makes-pages-load-faster/

http://railsapps.github.io/rails-javascript-include-external.html

http://stackoverflow.com/questions/436411/where-is-the-best-place-to-put-script-tags-in-html-markup

https://developers.google.com/speed/docs/insights/BlockingJS

 

Share Button
  • junio 9, 2015
  • 8
  • 88332
  • Javascript
  • Ver más

¿Perjudicado por el cierre de academia MacPC?

DesafioLatam se toma muy en serio la generación de talentos digitales de Latino América y la situación en la quedaron algunos de los alumnos de Academia MacPC en Chile nos parece gravísima.

Dada la magnitud de la situación hemos hecho una alianza con En1Mes para ayudar a corregirla y ayudarte a terminar tu curso de forma OnLine.

Es por eso que si usted es una de las personas que quedó con un curso a medias, o hizo un curso con Academia Mac y no quedó contento, entonces inscríbete y le daremos acceso de forma completa y gratuita a las versiones online del cursos de html y el curso de ruby on rails de En1Mes.

De entre todas las personas que vean todos los videos entregados sortearemos una beca completa para participar en el bootcamp de 4 meses de backend con Rails de DesafioLatam que empieza el 10 de agosto.

Además, CoderHouse, otra empresa dedicada a la enseñanza tecnológica con una misión similar a la nuestra está sorteando algunas becas gratuitas a las personas que fueron afectadas, te invitamos a participar por ellas: http://www.coderhouse.com/chile/academiamacpc

Share Button
  • junio 6, 2015
  • 0
  • 7520
  • Eventos
  • Ver más

Desafío lógico

Es bueno poner a prueba la cabeza con problemas no necesariamente relacionados con código, tampoco sería difícil crear un algoritmo para resolver el problema, pero la gracia está en resolverlo a mano y así poner a prueba nuestras capacidades lógicas.

desafio del día

desafio del día

Share Button
  • junio 5, 2015
  • 1
  • 3990
  • Desafíos
  • Ver más
logo omniauth

Login con Facebook y Twitter para tu proyecto Rails

 

Uno de los requerimientos más solicitados hoy en día por nuestros clientes a la hora de desarrollar una aplicación web es la integración con redes sociales, o también, es un requisito casi esencial para tu proyecto de emprendimiento, es por ello que en esta guía ahondaremos en los pasos necesarios para llevar este proceso a cabo, haciendo uso de las APIs públicas de Facebook y Twitter en particular, ya que son las redes sociales más utilizadas en este minuto.

Creando tu App en el Portal de Desarrollo

Primero lo primero, crearemos y solicitaremos los permisos necesarios para tener nuestra app funcionando en las plataformas para de esta forma obtener nuestros códigos de Cliente y Secreto.

Facebook

Para ello, accedemos a la sección de desarrolladores de Facebook (https://developers.facebook.com).

2

           

En el menú superior encontrarán “My Apps” y dentro de el menú que se despliega está la opción “Add a New App”, y les aparecerán las siguientes opciones.

1

Share Button
  • junio 4, 2015
  • 6
  • 11761
  • Devise, OmniAuth
  • Ver más
API Fest - Flyer redes sociales

API Fest Hackathon Santiago

Santiago tendrá su primera hackathon dedicada al desarrollo de proyectos basados en APIs, reuniendo a 60 creadores digitales para convertir ideas en prototipos usando las APIs de
Google, Github, Open Data del Gobierno Chileno.

ApiFestSantiago es una hackathon realmente para hackers, sin jueces, hecha por y para desarrolladores: los participantes serán quienes elijan las mejores ideas y decidirán cuáles proyectos se llevan a casa los mejores premios.

Entre el 13 y el 14 de junio, el C​o-Work​del C​entro de Innovación UC – Anacleto Angelini recibirá a los más talentosos y creativos desarrolladores de la ciudad para colaborar, conceptualizar y desarrollar proyectos tecnológicos. Contando con un total de 60 puestos disponibles, los organizadores del evento animan a los desarrolladores que quieran participar a i​nscribirse​y p​resentar sus ideas​antes de que se agoten las entradas.

Esta hackathon es organizada por A​xiom Zen,​una incubadora de tecnología reconocida por construir, lanzar y acelerar compañías emblemáticas como R​outific,​Z​enHub​y T​imeline;​y solo es posible gracias al apoyo de otras grandes compañías y organizaciones de tecnología y emprendimiento como C​o-Work,​S​tart-Up Chile,​Z​enHub,​G​oogle Developer Group​y​ muchas más.​

«Santiago se está convirtiendo en el próximo gran centro de la innovación tecnológica de Latinoamérica, y el mundo se está dando cuenta de eso. Gracias a programas como StartUP Chile, cada día hay nuevas startups internacionales estableciéndose en la ciudad. Estamos emocionados por ser parte de una comunidad floreciente que está atravesando un momento crucial,” comenta Ryan Naayem, uno de los organizadores del API Fest.

Inscríbete

#APIfest

APIFest hackathon Santiago

APIFest hackathon Santiago

Share Button
  • mayo 28, 2015
  • 0
  • 3653
  • Eventos, Hackathones
  • Ver más
coffeescript

Resumen express de coffeescript

Estos son los apuntes de Coffescript de Arnoldo Rodriguez, uno de los profesores de DesafioLatam, en Monterrey, México, están muy buenos, especialmente si quieres recorrer de forma rápida todas las virtudes que tiene coffeescript.

Comments in CoffeeScript

Ruby
1
2
3
4
5
# single line comment
 
###
multiline comment, perhaps a LICENSE.
###

Variables and Scope

Ruby
1
2
3
4
5
6
# All variables are by default scoped locally
my_var = "Hello world"
pi = 3.1416
 
# Attach a variable to the global or window object to make it global
window.my_var = "Hello world"

Functions

Ruby
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# use the slim arrow to declare a function
func = -> "bar"
 
sumXtoTen = (x) ->
10 + x
 
# arguments are specified in parenthesis before the arrow
times = (a, b) -> a * b
 
# you can specify default arguments
times = (a = 10, b = 15) -> a * b
 
# use splats to receive N arguments via an array
sum = (nums...) ->
result = 0
nums.reduce (total, num) -> total + num
 
# you can avoid parethesis in function calls with at least 1 argument
alert "hello world"
console.log "this is the end"
 
# on the contrary you cannot call a function without parenthesis and zero
# arguments
 
# this fails
alert
# this is O.K.
alert()
 
# use the fat arrow to bound a function call to the local context
# mostly used in callbacks
# avoid using the conventional self = this is not very coffeescriptish
 
this.clickHandler = -> alert "clicked"
element.addEventListener "click", (e) => this.clickHandler(e)

Objects Literals and Array Definition

Ruby
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# Object literals
 
# regular Javascript syntaxis
object1 = {one: 1, two: 2}
 
# without braces
object2 = one: 1, two: 2
 
# using new lines instead of commands
object3 =
one: 1
two: 2
 
# Arrays
 
# avoid the trailing comma
array1 = [1, 2, 3]
 
# using new lines
array2 = [
1
2
3
]
Share Button
  • mayo 23, 2015
  • 0
  • 4434
  • Coffeescript, Tutoriales
  • Ver más

¿Cómo hacer más rápido Ruby / Ruby on Rails?

Ruby no es el lenguaje más rápido del vecindario, está pensado en la felicidad del programador, no en la velocidad, pero si sabes estos simples trucos puedes hacerlo varias veces más rápido.

Share Button
  • mayo 22, 2015
  • 0
  • 3510
  • Tutoriales
  • Ver más

Instalar Ubuntu en Windows

Si quieres programar en ruby o python o casi cualquier lenguaje que no sea .NET debes tarde o temprano tendrás que cambiarte a Linux o OSX, y la razón es muy sencilla, windows es un pésimo sistema para programar y la terminal que posee es bastante mala. A pesar de que existen opciones y alternativas, todos los que las pruebas se terminan hasteando y cambiando a Linux o OSX.

Cómo instalar Ubuntu junto con Windows

En esta guía te voy a explicar paso a paso lo que debes hacer para pasarte de Windows a Ubuntu de la forma más fácil y cómoda posible.

1. Descarga la versión de ubuntu que necesitas. Te recomendamos la versión 14.04.02 LTS (Long term support)

Descargar Ubuntu Desktop   Download   Ubuntu

2. Tras haber descargado el instalador, debes quemarlo en un CD o USB. Desde acá puedes descargar un programa para dejar el cd/usb con arranque.

Sugerencia: Es mucho más rápido hacerlo con un USB

3. En caso de que quieras dejar Windows y Ubuntu, debes en primer lugar entrar a hacer un espacio especial para tu nuevo sistema operativo. Esto lo haces simplemente, presionando el botón de Windows, luego escribes «Crear y formatear particiones del disco duro» o en inglés «Create and format a hard disk partition»

4. Al hacer click en «Crear y formatear particiones del disco duro» / «Create and format a hard disk partition» te aparecerá a siguiente ventana. En ella debes hacer click derecho en una partición que quieras quitarle espacio para darle a la nueva. Tras hacer click derecho debes entrar en Reducir/Shrink y ahí debes decir el tamaño al que reducirás la partición actual y asi el resto quedará para el nuevo sistema operativo. Se recomienda dejar unos 30GB para ubuntu.


5. Debes reiniciar el computador, si tienes windows 8 debes presionar reiniciar mientras al mismo tiempo tienes presionado el botón Shift. En caso de tener Windows 7, debes reiniciar y ver que tecla debes presionar para inicie desde cd/usb en algunos casos es algo automático, sino debes presionar  Esc  u la tecla que al inicio diga: -[tecla] to enter Boot Menu

6- Tras reiniciar y tener el cd/usd inserto en el computador deberías escoger la opción de instalar Ubuntu y luego, cuando llegues a dónde instalar el sistema operativo, debes seleccionar la partición creada y darle doble click, ahí debemos hacer un espacio nuevo para memoria virtual dejandola bajo el nombre swap / intercambio con 4gb es suficiente y en  «/», tras eso en la partición que quedará con mayor espacio debes seleccionar y establer como mount point: «/» . Tras esto es simplemente avanzar con simples clicks.

7. Tras realizado lo anterior, instalando exitosamente ubuntu y reiniciado el computador te debería dar la opción de elegir el sistema operativo a usar. En el caso que inicie de manera automática en Ubuntu, lo que debes hacer es correr la siguiente línea en el terminal de ubuntu:

Ruby
1
sudo update-grub

En caso de que estés 100% decidido a dar el paso de dejar completamente Windows y pasarte a Ubuntu, lo que debes hacer es simplemente descargar la versión que quieras, siguiendo los pasos 1. y 2., tras esto puedes reinicir tu computador, siguiendo el punto 5.

Share Button
  • mayo 20, 2015
  • 0
  • 6533
  • Linux
  • Ver más

controlando el tiempo de inactividad en rails con devise

En este mini tutorial aprenderás como controlar la inactividad de un usuario dentro de un sitio web o aplicación.

Esto este particularmente útil si estuviésemos creando una aplicación que manejara datos financieros o delicados, en estos casos es importante que la sesión de un usuario no quede abierta por descuido. Hay que siempre tener en cuenta que el usuario podrías estar en un computador de uso compartido y siempre existe la posibilidad de que haya gente malintencionada alrededor de el.

Para este tutorial se da por entendido que la gema de Device se encuentra instalada y operativa en nuestro proyecto.

¿Cómo lograr controlar la inactividad de un usuario en una aplicación web hecha en Rails?.

Pasos:

Paso 1: Asignar el tiempo dentro del initializer de devise

Hay que descomentar la línea config.timeout_in = 10.seconds y asignar el tiempo necesario que se encuentra en el initializer devise.rb (los 10.second, son elementos que se modifican, en este ejemplo lo dejé en 10 segundos, pueden ser 5 minutos, 1 hora, etc, obviamente en Ingles – second, minutes, hours)

Paso2: Agregar :timeoutable en el modelo de usuarios

Dentro del archivo models/user.db después de todos los able agregados por devise (como por ejemplo validatable) podemos agregar el símbolo :timeoutable

Paso 3: Reinicio el Servidor:

Siempre que se modifican los archivos dentro de initializers hay que reiniciar el servidor.

4.- Ahora cada vez que exista inactividad en la aplicación por 10 segundos, me cerrará y redireccionará al login de nuestra app en Rails. Una vez que te logueas la aplicación es capaz de redireccionar al lugar dónde quedó el usuario antes de que cerrara la conexión.

Share Button
  • mayo 20, 2015
  • 0
  • 4801
  • Devise
  • More
Página 25 de 28« Primera«...1020...2324252627...»Última »

SUSCRÍBETE A NUESTRO NEWSLETTER

Inicio 1 de Marzo

Inicio 9 de Marzo

Inicio 9 de Marzo

Inicio 15 de Marzo

Etiquetas

activeadmin alumnos android API aplicación móvil APP aprender Automatización ciberseguridad consejos desarrollo devise digital diseño Diseño de patrones diseño ux/ui educación emprendimiento eventos experiencia front end fullstack Google hackathon Herramientas útiles Html Infraestructura Javascript lenguajes de programación Motivación mujeres oportunidades Optimización programación python Rails Rake Ruby Ruby on Rails talleres tecnología testimonio Tips Tutoriales webinar

Entradas recientes

  • Estudiar en pandemia: tips para sobrevivir a esta hazaña
  • Transformación profesional con liderazgo y autenticidad
  • Full Stack: Certificación vs Portafolio
  • Frameworks y Librerías de Full Stack: Su aporte para los desarrolladores en el mercado.
  • Vue JS 3 y sus novedades ¿Qué ventajas trae?

Comentarios recientes

  • Macarena Rojas en Diseñador, diseñadora y su rol político
  • Marisol - catalogo avon en Diseñador, diseñadora y su rol político
  • Marisol - catalogo leonisa en TOP: Aplicaciones más descargadas en esta Cuarentena
  • Macarena Rojas en Webinar: «¿Cómo iniciar en programación sin tener conocimientos previos?»
  • Adriana en Webinar: «¿Cómo iniciar en programación sin tener conocimientos previos?»

Categorías

ActiveAdmin Actualidad Android Conferencias Consejos Consejos para emprendedores Creación de Juegos curso programacion Data Science Desafíos Desarrollo web Devise Diseño Web Docente Educación Emprendimientos tecnológicos empresas Entrevista laboral Eventos firebase Fullstack git Graduados Hackathones informáticos Javascript Linux Marketing Digital Motivación Mujeres Oportunidades Profesionales TI Programación python Rails Seguridad Informática tecnologia Tendencia Testimonios Tips Tutoriales Ui Uncategorized Ux wordpress
  • trabajos remotos

    Top 32 sitios para encontrar trabajos remotos

    125947 views
  • Donde poner los scripts de javascripts

    Javascript en el Head o en el cierre del body? Estás equivocado

    88332 views
  • Microsoft, Google y Ernst and Young apuestan por los talentos y no los títulos

    65598 views

Desafio Latam Copyright 2017. All Rights Reserved