Semana 1 & 2

Semana 1

Empezó el curso de una forma bastante dura. Todo el lúnes, desde las 9 am hasta las 6pm estuvimos instalando los cinco mil programas necesarios para el curso… bueno, exagero, solo eran 14, de los cuales tres o cuatro me hicieron la vida bien difícil. Por la mañana hicimos las presentaciones de cada uno con juegos típicamente gringos y más tarde hicimos las presentaciones de nuestras páginas web. La mía resultó ser la más titina de todas… por muuucho.

La semana entera fue una revisión y clases sobre el trabajo preparatorio previo que sobre Ruby debíamos haber hecho.

En un principio fue fácil. Me deja muy contento notar que mi nivel de inglés es suficiente para entender todos los tecnisísmos del caso; así que no me siento en desventaja. Me he salido del tema, perdón. En un principio fue fácil pero para el jueves [arrays y hash] ya la vida se me había complicado, pues de estos temas más bien pocón… eso que son importantísimos ya que se trata de nada más y nada menos que de listas, sean temporales o permanentes, pero que al fin y al cabo guardan toda la informacion de los usuarios. El viernes, la vida, la alegría y la calma mental se me acabó cuando vimos las [class]. De esas no entiendo ni forro y resultan que son importantísimas.

Cada día debíamos hacer un programa y cada programa tenía sus objetivos y unos bonus.

El primer día, sin nada de anestesia nos pusieron a hacer una lista interactiva donde se podían agregar nuevos miembros, borrarlos, editarlos, verlos o acceder a ellos. Me quedó perfecta, cumpliento con todos los bonus y de remate, antes de las 5:30!

El segundo día, tuvimos que hacer un programita con un listados de comandos del command line que al seleccionarlos nos imprimian el la pantalla los manuales de uso de cada uno. Se debía tener la opcion de borrarlos y añadir nuevos. Yo de ñoño le agregé la opción de exportarlos a un archivo .txt que se creaba automáticamente con el nombre del comando. Dejé a todo el mundo viendo un chispero.

El tercer debí construír una calculadora. Esta resultó ser mucho más complicada de lo pensado porque el resultado de la operación debía a su vez convertirse en primer término para una nueva. Además debía tener historicos de operaciones y reset. La mía cumplía con todos los requisitos, la llamé la EggAdder 2000 y cómo tenía tiempo de sobra, hice la DigitalEggAdder 3000… logré que se pudiera escribir la operacion de una (mientras todos los demás debían pedir numero por numero y aclarar de entrada que operacion se queria) y que las suboperaciones se pudieran escribir de una tambien. Bastante problemas me dio hacer un botón de memoria que pudiera ser utilizado en una operacion posterior. El ejercicio tenía como bonus hacer que la calculadora operara con seno y coseno y lo logré, además hice que sacara potencias y raices cuadradas. Otra vez vi los ojos de envidia de los demás.

El jueves nos encargaron de hacer una bola mágica, de esas que uno hace una pregunta cualquiera y ella devuelve respuestas genéricas al azar.

Había que hacer [arrays] con las respuestas y esto me dio durísimo… me cuesta bastante acceder a estas listas y hacer [loops] con ellas. Al final fue un trabajo bueno. A este [array] había que poderle meter nuevas respuestas, pero que se pudiera tambien resetear para que siguiera con las de default, tanto, que al final quede con un [array] principal y dos temporales para una misma cosa. Funcionó todo y completé todos lo bonus (a media noche) pero logré incluirle la despedida mas fastidiosa del mundo por tandas. La cabeza al final de este ejercicio me quedó echando humo… nadie tuvo envidia de mi obviamente.

El viernes fue el acabose. De entrada nos hicieron un brain teaser… un quiebra cabezas en teoría simple. De un [array] numérico sacar el valor máximo y mínimo y como bonus entrarlos como un ARGV. Teníamos una hora y no logré en ella ni siquiera hacer que de los ARGV me saliera un [array] con numeros enteros utilizables. Estaba prohibido usar helpers tipo array.sort, array.min o cosas así. Lo terminé el sabado (y eso que Jake sapeó la respuesta).

Seguido el teaser se nos vino encima una clase de [class] y yo muy juiciocito en mi puesto vi a un gringo muy blanco hablar en chino fluido. Nos han pedido hacer un menu de restaurante donde se podían hacer el pedido, repetir cosas, pagar la cuenta y contar las calorías de los platos pedidos, pero había que usar [classes]! Me negué a hacerlo… si ni siquiera era capaz de escribir la primera línea. Desesperado acudí a los [hash] que tampoco sé acceder y para colmos de la desgracia hice [hash] dentro de un [hash] dentro de un [hash] y en teoría a eso le debía hacer un [loop]… a las 5:00 acepté mi derrota… de mi restaurante no iba a salir un solo pedido. Frustrado a más no poder, vi que alguien hizo un [hash] dentro de un [array] y le copié. Que diferencia que hacía!

@main = [

{item: 'Hamburger', price: 12.50, description: 'Quarterpound beef', calories: 2000},

]

Pude por fin hacer el [loop] que tanto necesitaba:

def options

@main.each { |x, i| puts "#{x[:item]} $#{x[:price]} #{x[:description]} #{x[:calories]}"}

end

Feliz con mi loop me pude ir a la casa a empezar el trabajo… todo esto era solo el menú, faltaba comprar, repetir, pagar y ser despedido… A la 1 am por fin funcionó algo. Terminé el sábado.

 

Semana 2

Ok, semana dos; aquí vamos.

Nos recibió el lunes con el primer trabajo en grupo: hacer un casino, recomendado (obligatorio) con [class]. No me tenía tan traumatizada la idea porque había cuadrado hacer el casino con Rob y Daniel, pues como vivimos juntos podíamos continuar el trabajo en la casa sin ningún problema… pues no. Nuestros nombres en un array son escogidos por un computador y este con su simple algoritmo, o para ser más específico aún, su helper [.sample] decidió que yo debía trabajar con Marisa y William. Jake nos dio un empujoncito mostrándonos como comenzar el casino. Fue realmente lo que necesitabamos, con ese pedacito comencé a trabajar y para el final del primer día ya tenía al casino con dos juegos, seleccion de jugadores, memoria de puntuacion y billetera; en fin, los objetivos de los dos días ya cumplidos y la mitad de los bonus también.

el martes se fue todo en la construcción de una ruleta, los dados (que en realidad eran casi que lo mismo y además yo ya los había adelantado por la noche) y el acabose… BlackJack! Tenía que crear una baraja con pintas y otro monton de cosas que se podían hacer con un [loop] dentro de un [loop] pero que igual lo dejaba a uno jodido sin poderle dar valores numericos a la J, Q, K y al As. En fin, fregando con los T.A y peleando yo contra Ruby logré dar con una línea dentro del [loop]… la línea de value

 

def generate_deck

   @suits.each do |suit|

     @ranks.size.times do |i|

       value = @value[i]

       color = (i % 2 == 0) ? 'Black' : 'Red'

       @cards << Card.new(@ranks[i], suit, color, value)

     end

   end

   deal

  end

 

Aquí el resultado en pry

 

[1] pry(#<Deck>)> @cards

=> [#<Card:0x007fcafb942118 @color="Black", @rank="A", @suit="Spades", @value=11>]

 

En fin, con esto cuadrado y dos litros de café encima logré terminar el juego de BlackJack. La presentación de los casinos fue triste ya que fuimos humillados por Josh y Cael, quienes cuentan con cierta experiencia en programación y por lo tanto hicieron un casino que nos rebajaba a los demás a ser amateurs vergonzantes frente a semejante presentación.

Pasado el casino, el día siguiente solo se concentró en bases de datos. [SQL] a dos manos… acá (y me imagino en el mundo programador) llamado sequel. Con este lenguaje debíamos hacer nuevas bases de datos en servidores locales creados en [PgAdmin], además de editarlos directamente con [Postgres] o en el mismo. Después, para rematar la sesión, se nos vino una tanda grande de búsqueda de datos y edición de los mismos desde [Postman]. Todo lo hice muy bien, todo me funcionó, pero aún me falta alguna clase que nos enseñe a conectar las bases de datos con los mismos inputs de nuestros usuarios desde una front end. Me imagino que en semanas entrantes eso entrará al temario.

El jueves nos recibió con otro brain teaser. En esta ocasión, un jueguito en el que había que contar letras de los nombres de los números y al final llegar al magic four. Parecía dificilísimo y yo por mi cuenta comencé de entrada con un [loop] dentro de otro como el ejemplo de las cartas… rápido lo dejé del lado pues me encontré una GEM que escribía en letras los números de entrada. Con esta GEM se hizo en tan solo 19 líneas el programita entero.

Aquí lo que verdaderamente importa…

 

def process

  @name = @user_input.to_name

  long = @name.length

  if @name == 'four'

    puts "Four is the magic number"

    exit

  end

  puts "#{@name} is #{long.to_name}"

  @user_input = long

  process

end

 

Pasado el teaser (solo había una hora para hacerlo), debíamos copiar dos páginas web bastantes sencillas. No nos dieron ninguna clase de HTML o CSS porque en teoría eso ya lo debíamos saber… Los que no dominaban estos temas se quedaron viendo un chispero. Cómo las páginas a copiar eran bastante cagaditas, me gasté un montón de tiempo tratando de hacerlas ver tan feas como las originales.

El fin de la semana comenzó con un examen de conocimientos en el que saqué una nota más bien mediocre aunque esto no me bajó los ánimos… los errores se debieron más que todo a problemas idiomáticos relativos al inglés, que a errores sintácticos relativos al SQL, HTML, CSS o el mismísimo Ruby.

Hecho el examen, debimos aprender [Sinatra], una especie de lenguaje que conecta Ruby con el HTML y que, en teoría, hace fácil la conexión entre el front-end y el back-end. Me constó bastante. Eso sí, para el sábado ya estaba lista la reconstrucción del la CheatSheet con página funcional y la del la Magic Eight Ball, también. En ambos casos logré conectar todas las características básicas pero todo lo demás, los bonus y detallitos que hacen los programas más agradables aún no se encuentran conectados.

screen-shot-2016-11-06-at-16-41-30 screen-shot-2016-11-06-at-16-43-21

Anuncios

6 comentarios en “Semana 1 & 2

  1. No puedo opinar sobre el tema pues no se y entiendo nada.
    Lo q si se y entiendo es que te va a ir super por verraco, decidido Y putas.
    Ánimo pues. Pp

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s