Sopa de letras

Lecturas

¡Descubre los fascinantes artículos en Sopa de Letras!

from Bitácora personal

Magisk en Android

Magisk es una utilidad que permite rootear nuestro dispositivo permitiéndonos usar aplicaciones para cambiar configuraciones, además nos permite instalar módulos que añaden diversas funcionalidades es esta el problema de que rootear puede ser un riesgo de seguridad si no se tiene cuidado pero si te gusta cacharrear a nivel software en el movil pues es algo interesante además de que si tienes alguna custom ROM se vuelve practico ya que permite arreglar problemas con sistemas tipo SafetyNet además de poder instalar cosas útiles en general y aplicaciones que otorguen funcionalidades como bloqueadores de anuncios (Adaway, Adaway también funciona sin root pero sin root usa una VPN que consume más bateria), y demás software.

En esencia Magisk es un muy potente software que nos permite añadir características a nuestro dispositivo que en algunos los fabricantes no añaden, configuran, etc...

Yo uso Magisk y la verdad la gran cantidad de herramientas a las que tengo acceso me permite configurar muchas cosas que en algunos casos me gustan o hacen la vida más cómoda y eso esta bien expreso así mi apoyo a esta gran herramienta e insto a usarla con responsabilidad pues el control que puede ejercer sobre nuestro dispositivo podría ser usado con fines malintencionados si no tenemos suficiente cuidado

 
Legu pli...

from soldanes

Cinco años de cybercirujeo

EncuentroFederal

A fines de diciembre de 2018, estando ya de vacaciones escolares y viviendo en un palacio de 27 m² en pleno Congreso contemplé una situación que me pareció horrorosa. Salía del ascensor y delante mio una vecina del edificio se iba con un gabinete entre las manos: vi como ella simplemente soltaba la máquina y la dejaba caer en la vereda con el estruendo propio de la chapa noventosa de una buena computadora de formato horizontal. Demoré la llegada a lo de mi amigo para levantar ese cacharro, que resultó ser una gloriosa 486, muy parecida a la primera compu que hubo en casa. Lamentablemente, el HDD no andaba y no tenía otro para probar. Pero bastaron solo unos días para que consiga el repuesto: las grandes urbes son un cementerio de basura electrónica que se apila, se oxida y se desguasa a la vista de todos.

Con un disco y más RAM cirujeada pude revivir esa 486, ponerle un D.O.S, instalarle DOOM y un par de juegos más de la época. Eso me hizo pensar que tal vez podríamos sumar retrocomputadoras rescatadas de la basura a los eventos que se venían haciendo en el Teatro Mandril. A mi amigo Herni le copó mucho la idea y supongo que entre charlas, birras y arcades surgió el nombre “cybercirujas”, una conjunción de dos términos maravillosos: el cirujeo clásico de la Argentina más el concepto cyber con “y”, no con “i”, ya que no solo refiere al concepto de “cyber”, esos espacios de socialización de la Internet y los videojuegos post 2000s sino también mezcla obviamente los conceptos de cyberpunk y cyberespacio. Así fue que en alguna Muere Monstruo Muere Monstruo Muere de enero o febrero del 2019 apareció por primera vez la idea de Cybercirujas’Club, un espacio donde socializar tu retrotecnología alejada completamente del concepto de mercantalización de lo antiguo y el rescate de equipos que pudieran seguir batallando en uno de los frentes más bastardeados por el sistema capitalista: la búsqueda del ocio.

Durante ese 2019 nos fuimos sumando a movidas en la Muere Monstruo Muere, así fue que conocí a Vlas y a Zelmar, quienes en una fecha montaron un nextcloud (una nube como google drive) al cual podías acceder desde un wifi y te permitía descargar software y libros piratas. En paralelo, venía indagando en la movida de selfhosting y puntualmente en la reutlización de equipos antiguos para brindar servicios web. Me hice de una Mac Mini G4 y una i5 de 3ra generación en el cual monté distintas aplicaciones para satisfacer algunas necesidades de cómputo y no depender de los servicios de Google u otros. Se iba gestando, de esta manera, una forma de pensar un hacktivismo, una militancia tecnopolítica que cuestionaba los hábitos computacionales que teníamos naturalizados. Fui conociendo así a distintas personas en el cyberespacio que pensaban y accionaban parecido. Proyectos como Disroot, que ofrece servicios de mail y nube sin trackeo ni robo de información, o también Undernet.uy, en menor escala pero también de forma completamente autogestiva y cyberciruja. Ese año también tuve la suerte de participar del documental “Videojuegos sobre ruedas”: viajamos hacia Córdoba y allí pude conocer en persona a mi actual amigo ̣Nicolás Wolovick, cyberciruja y computologo.

Nico es docente y al igual que yo, militante a ultranza del software libre. Estos dos hechos hicieron que durante la pandemia del 2020 nos preguntemos muchas cosas. ¿Qué pasa con nuestros alumnos o conocidos que necesitan una computadora para trabajar y/o estudiar en este contexto?¿Cómo que tienen una compu pero no la pueden usar porque el sistema no responde?¿Por qué tenemos conocidos con laptops o PC’s usables cajoneadas sin usar? Ambos, él desde Córdoba, yo desde CABA, comenzamos a ver cómo colaborar con quiénes precisaban equipos y, además, hacernos de repuestos o de desguaces, ya sea porque los encontrábamos en la calle o porque nos los hacían llegar. Así fue que aquella idea de Cybercirujas, que surgió puramente desde el ocio, luego se encaminó hacia las ideas del selfhosting y la soberanía de cómputo, finalmente terminó sumando una militancia territorial que aunaba el derecho a reparar y la lucha por disminuir brecha digital. Todo esto hizo que durante ese año diésemos unas charlas en YouTube, organicemos el grupo de Telegram y comenzáramos, ahora sí, a gestar una verdadera Comunidad Organizada.

Como se habrán dado cuenta, la idea de Cybercirujas fue creciendo muy rápidamente y sin demasiada organicidad. Muchos medios se hicieron eco de nuestras acciones y así más gente se fue enterando. Nico desde Córdoba fue juntando gente, yo desde CABA, y luego se fueron sumando gente de Rosario, Santa Fe y de distintas partes siempre bajo un mismo paraguas: la lucha contra la obsolescencia programada como un puntal político, pero también, la experimentación tecnológica y la conquista del ocio en nuestros eventos de El Club del Cybercirujeo.

Para nosotros la obsolescencia programada no consiste solamente en reparar una computadora para darle sobre vida, sino más bien es el basamento para desplegar muchas ideas que teníamos dando vueltas. El mercado del cómputo es el más redituable del mundo: si en el siglo XX los dueños del globo eran los industriales, hoy lo son los oligarcas del dato encarnados en figuras como Elon Musk o Jeff Bezos. Estos tecnocratas manejan la vida digital de miles de millones de personas en el globo y son quienes dictan cómo tienen que ser los dispositivos que navegan esas redes de datos privadas. Hay un circulo vicioso entre prestadoras de software y fabricantes de hardware, en las cuales todas ganan menos los consumidores. Tampoco gana nuestro planeta que debe soportar un nivel de extractivismo y depredación brutal para poder mantener un modelo de “úselo y tírelo”. Es por eso que Cybercirujas se transformó, indefectiblemente, en un espacio de accionar completamente político. Arreglar una computadora o juntarse con amigos a reparar algo no es, necesariamente, una acción cyberciruja. Cybercirujas plantea mostrar lo político dentro de la tecnología: que tengamos que cambiar de celular cada 2 o 3 años, que sean las mujeres quienes más se acercan a pedirnos equipos, que encontremos computadoras funcionales en basurales, que la sociedad naturalice el espionaje o el monopolio de servicios informáticos, que no polemicemos sobre la tecnología, que no veamos el descalabro ecológico que genera el mercado de celulares; todo eso y mucho más dan cuenta de la acción política de cybercirujas.

Mapa

En estos cinco años hemos crecido como comunidad enormemente. Hemos entregado cientos de computadoras. Hay células cybercirujas actuando en el territorio de CABA, La Plata, Rosario, Santa Fe, Córdoba, Posadas, se está gestando una en Bariloche y cada tanto nos escriben para sumarse en otras partes del país. Logramos hacer nuestro 1er Encuentro Federal. Nos hemos posicionado como referentes dentro del hacktivismo territorial en la región. El motor de todo este movimiento no es otro más que el tecnoempoderamiento de la sociedad civil. Siempre hablamos con Nico que debemos desterrar para siempre el “no entiendo de computadoras”. No se trata de ser un hacker, se trata de comprender el mundo en que vivimos. Recién ahora con el ascenso del Presiduende, que fue ampliamente favorecido por el gran oligarca del dato Elon Musk, muchos comienzan a caer en la cuenta de la importancia de cuestionar los sistemas de cómputo, de dejar de naturalizar todo lo relativo a la tecnología. Quienes venimos del software libre hace mucho tiempo estamos cuestionando estas cosas, pero es cierto que el mundo linxuero siempre quedó relegado a un nicho cerrado y bastante tóxico.

Cybercirujas busca todo lo contrario. Necesitamos que la sociedad civil se tecnoempodere. Precisamos que se hagan carne propia los debates tecnológicos, es urgente que dejemos de naturalizar todas esas cosas y es una obligación moral de parte de quienes tenemos ese conocimiento, bajarlo a las bases, militarlo en el territorio de la forma que sea. El mundo del software libre y sus comunidades tradicionales quedaron estancadas: debemos buscar nuevas formas de territorializar estos debates. Cybercirujas lo encontró de una manera muy simple: reducción de la brecha digital mediante el derecho a reparar empleado por una Comunidad Organizada pero sin desligar el derecho al ocio, porque los eventos festivos y nocturnos que hacemos no solo son un laboratorio de experimentación tecnológica sino también son parte del derecho a ser felices. Así que ya saben… cybercirujas del mundo, ¡uníos! Y si necesitaban una excusa para brindar hoy, ya la tienen. Feliz cumpleaños, querida comunidad.

 
Leer más...

from soldanes

Organizar la bronca

Montando un cañon

Hace unos días hablaba con un amigo sobre la situación laboral de los docentes en Misiones. En esta provincia, al igual que en otras, el gobierno central aporta del Tesoro Nacional varios conceptos del salario docente. El FONID es el más conocido, ya que surgió de las luchas docentes de la Carpa Blanca. Pero también hay dos conceptos más: la Conectividad, que surgió en 2021 durante la pandemia, y la Garantía Nacional. Este último era percibida por 7 provincias que aducían no poder llegar al piso mínimo de la paritaria nacional docente, que se situaba en 250 mil pesos. Esto implica que el gobierno provincial ponga 161 mil pesos del sueldo de un cargo testigo (maestra de grado sin antigüedad) y el estado nacional, sumando FONID, conectividad y garantía aporte casi 90 mil. Es decir, la Nación ponía algo así como el 30% de nuestro sueldo. En noviembre y diciembre, el gobierno anterior se encargó de enviar esas partidas pero el gobierno de Misiones nunca nos depositó esos haberes por lo cual durante diciembre, enero y febrero hemos cobrado la miserable suma de 161 mil pesos, unos 100 mil pesos debajo de la canasta básica de indigencia. Peor aun, el gobierno provincial ahora dice que pagará con fondos propios esa deuda que Nación tiene, cuando la realidad es que el gobierno saliente sí envió la plata y acá metieron la mano en la lata. Es cierto que desde que asumió el presiduende dejaron de enviarse fondos, pero eso fue a partir de enero, ¿qué pasó con el resto?¿quién se los afanó?

De estas y otras cosas venía hablando con amigos y colegas, y puntualmente con un amigo que, al igual que yo, la estaba pasando pésimo debido a este robo perpetrado por el gobierno provincial de Misiones. En un momento me mencionó que me notaba con mucha bronca, lo cual es cierto. En diciembre tenía una bronca e ira tremenda. No paraba de escuchar Las Manos de Filippi y Hermética para intentar canalizar ese enojo de alguna manera, porque no solo nos habían afanado sino que además, asumía el presiduende y la runfla de delincuentes. ¿Cómo puede ser que Caputo, Bullrich, Sturzenegger y otros tantos no solo vivan en el mismo país que nosotros, los argentinos de bien, sino que además comanden la nación? Pero esa bronca prontamente fue cambiando. Me sentía solo con mi ira, y estar solo y enojado es muy peligroso porque el veneno te queda adentro y te pudre el alma. Busqué colegas docentes que estuvieran en la misma situación, enojados pero con ganas de accionar y así fue que llegué al Frente de Trabajadores de la Educación en Lucha (FTEL), un frente que nuclea a algunos gremios y docentes autoconvocados que luchan contra la patronal, los gremios ensobrados y pelean por una educación digna con lo que eso conlleva: buenos salarios, infraestructura escolar, en fin, lo que todos sabemos. Entonces, cuando hace unos días me dijo que me notaba con bronca le respondí: no, no tengo bronca. Bronca tenía hace unos meses, ahora me siento organizado, que es distinto.

Justamente ayer vino Juan Grabois a Posadas y con Emi fuimos a escucharlo. Uno de los conceptos que él mencionó fue precisamente el de “organizar la bronca”. Desde que fui sumándome al FTEL, esa bronca se tornó en organización; eso fue lo que le contesté, sin haber escuchado a Grabois hablar de eso, sino por simple asociación de ideas. Mientras vivía en CABA, participaba de marchas y movilizaciones, siempre actuando solitariamente, nunca encolumnado en nada. Cuando había paros docentes también solía adherirme a ellos pero pocas veces me movilizaba o participaba de acciones. La militancia orgánica, gremial o partidaria nunca me terminó de convencer ya que implica dogmatismo. Además, siempre vi que esas estructuras de militancia tradicionales tenían vicios de la política más rancia del país: gente de dudosa ética y moral, ensobrados y panqueques, chantapufis y ricos. Acercarme al FTEL me hizo dar cuenta que quienes estaban al lado mio tenían los mismos problemas que yo, ganaban la misma miseria que yo, tenían las zapatillas igual de gastadas que las mías, en fin, eran colegas, compañeros y compañeras de verdad, no cuadros enquistados en el poder, aferrados a un cargo por el simple hecho de querer un cargo. No, de hecho, muchos de ellos, al igual que yo, no formaban parte de ninguna agrupación. Y quienes formaban parte de alguna orga sindical eran laburantes de verdad, no burócratas que luego de hablar se suben a una 4x4 y se van a su mansión. Quizás algún otro militante lea esto y piense, “que boludo este pibe, como si todos fuéramos así”; y claro, no todo el gremialismo es Moyano ni toda el arco político es el clan Bullrich o Cafiero. Pero lamentablemente quienes llegan a posiciones de poder en su mayoría sí forman parte de cierta elite que, como dijo Grabois ayer, y como dicen varios más, aplastan o verduguean a otras bases que quieren sumarse a la función pública no por el cargo sino por el simple hecho de querer que su patria, nuestra patria, crezca y prospere. Creo que esas cosas estoy viendo en estas primeras experiencias con los y las compañeras del FTEL: gente comprometida con la educación, que labura desde las bases, que vive en carne propia las injusticas que padecemos los docentes, injusticias de todo tipo: desde salarios de indigencia, gremios entreguistas, escuelas cayéndose a pedazos hasta pibes rotos y hambrientos que ven a la escuela como una salida de la violencia y el hambre. Todas esas cosas y más generan bronca, ira, enojo, frustración, pero que solamente la organización puede transformar en algo productivo.

Lamentablemente la docencia misionera, y parte de su pueblo, es indiferente o apático a estas cuestiones. Cuando comencé a buscar espacios donde movilizar esta bronca me encontré con una resistencia increíble de los docentes, que veían a todos los que reclamábamos como chorros, tranzas, votantes de Milei, etc. Hay muchos colegas que son terriblemente desclasados y brutos, ¿cómo puede ser que un docente, que está encargado de la educación de las nuevas generaciones, sea un completo ignorante político, peor aun, orgulloso de esa ignorancia? Entiendo que un síntoma de esta época es ser un bruto (recuerden al General, “he visto muchos malos volverse buenos pero nunca a un bruto volverse inteligente”) pero hacer alarde de la ignorancia ya es otra cosa.

En las ultimas convocatorias del FTEL en Posadas y en distintas partes de la provincia se fueron sumando más colegas. Cuando el hambre y la miseria golpea tu puerta, la organización es la única salida. Quedarse quieto nunca es bueno y no intentar accionar, peor aun. Cuando me sumé en enero, eramos 20. El jueves pasado, cerca de 300. Ahora el gobierno provincial anunció que “pagará” la “ deuda de Nación de noviembre y diciembre con fondos propios, lo cual es absurdo porque Nación sí envió esa guita. Pero ojo, que acá hay una trampa. Como dije, venimos cobrando 161 mil pesos desde diciembre. El 29 de febrero nos pagarán la deuda de noviembre, más el aumento de...¡14%! A eso hay que sumarle la actualización de los componentes de nafta y pasajes; hay ítems en nuestro sueldo que equivalen a 50l de nafta y 40 pasajes urbanos de Posadas, pero que quedaron al valor de octubre y recién ahora se actualizarán, sin ser retroactivos con los meses de diciembre ni enero. Luego el 10 de marzo pagaran la deuda de diciembre, por lo cual el docente en marzo tendra unos buenos pesos ultra devaluados...viniendo de tres meses cobrando 161 mil mangos, que te tiren 100 mil mas te hace sentir rico, créanme. Pero te hace sentir rico cuando no te das cuenta que en el fondo te están cagando. Recordemos esto: Nación no enviará más FONID, ni conectividad ni garantía nacional. Digamos que en el mejor de los casos se luchará para que manden el FONID que en nuestro caso representa unos 12500$, por lo cual en abril un docente cobrará cerca de 200 mil pesos, es decir, mucho menos que lo que debía cobrar en diciembre, unos 250 mil.

Marzo será para la docencia misionera un punto de quiebre. Si el docente no se organiza y moviliza su bronca, vivirá un año completo en la miseria más absoluta. El gobierno provincial ajusta en educación y con chauchas y palitos vende una recomposición salarial que no existe. ¿Cómo se puede hablar de “aumento salarial” si se va a cobrar menos que en octubre? La única salida es la resistencia y la organización de la bronca.

 
Leer más...

from myreviews2024

Aloha, Yokohama! Bienvenidos a Like a Dragon: Infinite Wealth, están listos para la aventura?

Olvídate de las típicas reseñas estructuradas. Aquí vamos a sumergirnos en las calles luminosas de Like a Dragon: Infinite Wealth, el noveno título de la aclamada saga Yakuza, con la misma intensidad con la que Ichiban Kasuga se lanza a su nueva aventura. Agarra tu bate de béisbol más confiable y prepárate para un análisis sin filtros.

Aloha, Waikiki!: Playa paradisiaca de Honolulu con turistas disfrutando, motos acuáticas en el agua y el restaurante luau del juego en segundo plano.

Continuación o innovación?

Infinite Wealth toma el testigo de Yakuza: Like a Dragon, conservando su esencia RPG con combates dinámicos y un toque estratégico, pero no se trata de una simple copia. La incorporación de Kazuma Kiryu, el icónico protagonista de la saga original, aporta una capa de nostalgia y profundidad emocional que los fans agradecerán. Sin embargo, la verdadera innovación está en el escenario: ¡Hawaii! Adiós a las luces de neón de Kamurocho, hola a las playas soleadas de Honolulu. Este cambio aporta frescura y permite explorar nuevas mecánicas, como carreras de motos acuáticas y gestión de un restaurante luau.

Por qué es tan bueno?

Las razones son múltiples. En primer lugar, el humor. Like a Dragon siempre ha sido una serie con diálogos hilarantes y situaciones absurdas, y Infinite Wealth no defrauda. Las bromas de Ichiban siguen siendo igual de ingeniosas, y la interacción con Kiryu genera momentos cómicos impagables. En segundo lugar, el corazón. Los diálogos hilarantes y la trama conmovedora hacen que comprar Like a Dragon: Infinite Wealth sea una decisión acertada. La historia, sin entrar en spoilers, aborda temas como la familia, la lealtad y la segunda oportunidad de una forma conmovedora que te llegará al alma.

Pelea callejera con humor: Ichiban Kasuga lanzando un objeto absurdo a un enemigo confundido en una calle iluminada de neón.

Inspiración prestada?

Sí, pero con personalidad propia. La base del sistema de combate recuerda a clásicos como Dragon Quest y Persona, pero la implementación es única. La variedad de trabajos disponibles para los personajes, desde geodancer hasta chef, brinda un amplio abanico de habilidades y estrategias para experimentar. Además, los escenarios interactivos, donde puedes usar cualquier objeto a tu alcance como arma, añaden un toque alocado y divertido que no encontrarás en ningún otro juego.

Explorar más allá de las peleas:

El mundo de Infinite Wealth es más que combates callejeros. Yokohama y Honolulu están repletas de actividades secundarias: karaoke, gestión de negocios, minijuegos de casino... Hay tanto por hacer que puedes perderte horas sin percatarte del tiempo. Esta variedad garantiza que haya algo para todos los gustos, ya seas un amante de la acción o prefieras tomarte las cosas con calma.

Dúo explosivo: Ichiban y Kiryu posando juntos con expresiones divertidas, uno con un bate y el otro con un micrófono.

Quién disfrutará de este juego?

Si te gustan los RPG con corazón, humor y una pizca de locura, Like a Dragon: Infinite Wealth es para ti. No importa si eres fan de la saga Yakuza o un recién llegado, el juego te atrapará con su carisma y su mundo lleno de sorpresas. Para una experiencia única llena de combates frenéticos y momentos emotivos, no dudes en comprar juegos de PS5 como Like a Dragon: Infinite Wealth. Es perfecto para aquellos que buscan una experiencia única, que combina combates frenéticos con momentos emotivos y un toque de diversión desenfrenada.

Lo recomiendo?

¡Absolutamente! Si buscas un juego que te haga reír, llorar, cantar y, de paso, repartir unos cuantos sopapos con un bate de béisbol, Like a Dragon: Infinite Wealth es una apuesta segura. Prepárate para enamorarte de Ichiban, Kiryu y su alocada pandilla, ¡Aloha y hasta pronto!

 
Read more...

from zylog

#Zylog Somos muchos, somos pocos. Acá estamos, empujando. Nos morimos, nos matan. Acá estamos, Luchando. Nos engañan, Nos mienten. Acá estamos, sobreviviendo.

Que es Zylog, literalmente, es un chip de sonido de los años 70. Que es zylog. Es un proyecto independiente, de noise música, generada con softlibre. Pero de a poco se esta transformando, en algo mas que solo música, sobretodo relacionado con el softlibre. Luchando para que esto se de a conocer fuera de las bigtech.

Saludos.

 
Leer más...

from Bajo las estrellas

Esta noche comienza algo. Difuso e incierto, como la propia inspiración que hoy encuentro. Te miro. Te observo. Entrecierro los ojos para intentar recibir alguna señal. Algo de luz. Pero lo veo no es la oscuridad que te caracteriza. Ni tampoco esos lunares centelleantes que ocupan tu inmensidad. Solo hay gris. Sin forma ni expresión. Solo un manto grisáceo y difuminado que te oculta. Espero que no tarde en precipitarse entre gotas. O que navegue lejos hasta desaparecer, de manera que puedas volver a lucir como de costumbre, a animar a tantos a perderse para encontrarse.

 
Leer más...

from Joshi - Bitácora de aprendizajes

Programita para valorar seguridad de contraseña | POO

Sigamos sufriendo con POO. La idea que se me ocurrió hacer esta vez es un programa que le pida al usuario su contraseña, y le responda que el nivel de seguridad de esta. Mis criterios de evaluación serán muy básicos.

Planeemos nuestro programa:

  1. Defino clase como HowSecurePass
  2. ¿Que variables de instancia crearé para el constructor? Se me ocurren las siguientes:
    • un array vacío para guardar la contraseña del usuario (cada elemento del array será un elemento de la contraseña)
    • @esLetra para almacenar el número de elementos de la contraseña que sean letras.
    • @esNumero para almacenar el número de elementos de la contraseña que sean números.
    • @esSimbolo para almacenar el número de elementos de la contraseña que sean símbolos
    • @calificacion Donde guardaré la ponderación de puntos que evalúan que tan segura es la contraseña
  3. Método para pedirle la contraseña al usuario, y guardarla en la variable userPass
  4. Método para evaluar la seguridad de la contraseña del usuario:
    1. Primero de pasar el string de la contraseña que metió al usuario al array
    2. Después, como primer rasgo, evaluaremos la longitud de la contraseña.
    3. inmediatamente procederemos a evaluar los elementos de la contraseña convertida en array:
      • Si el elemento es una letra, @esLetra aumenta 1
      • Si el elemento es un número, @esNumero aumenta 1
      • Si el elemento es un símbolo, @esSimbolo aumenta 1
  5. Imprimimos calificación y definimos un mensaje de acuerdo a la calificación obtenida:
    • Si el puntaje es 5, Tu contraseña es completamente segura
    • Si el puntaje está entre 2 y 4, Debes mejorar la seguridad de tu contraseña
    • Si es menor a 2, ¡Cambia esa contraseña!

Desarrollemos nuestro programa:

class HowSecurePass
	# Creando mi constructor con las siguientes variables
	def initialize
		@evaluatePass=[]
		@esLetra = 0
		@esNumero = 0
		@esSimbolo = 0
		@calificacion = 0
	end
	
	# Defino un método para recibir la contraseña del usuario
	def userPass
		print "Dame tu contraseña "
		gets.chomp
	end
	
	
	#Método para evaluar seguridad de la contraseña
	def evaluator(userPass)
		# Pasar el string de la contraseña al array @evaluatePass
		@evaluatePass = userPass.chars # El método chars se encarga de hacer el trabajito de la conversión ^^'
		puts @evaluatePass
		
		=begin
		 Para no hacerme bolas, la variable contarCaracteres guarda la contraseña
		 en string para poder contar el número de elementos, ahorita
		  que lo pienso, pude simplemente contar los elementos del array... Duuuuh!!
		=end
		contarCaracteres = userPass
		
		# Evaluamos la longitud de la contraseña
		case contarCaracteres.length
		when 9..Float::INFINITY
			puts "Longitud adecuada"
			@calificacion += 2
		when 5..7
			puts "Podrías hacerla mas larga"
			@calificacion += 1
		else
			puts "LONGITUD INADECUADA"
		end
		
		# Que cosa tan hermosa es el case, ni yo me lo creo, es muy simple de entender y trabajar.
		
		#Evaluamos los elementos que componen la contraseña
		# NOTA MENTAL: APRENDER REGEX
		# Para hacerlo usaremos each do, un ciclo iterativo para ir recorriendo cada elemento de nuestro array
		@evaluatePass.each do |elemento|
		if elemento.match?(/[a-zA-Z]/) # Verifica si el elemento es una letra 
			@esLetra += 1
		elsif elemento.match?(/\d/) # Verifica si el elemento es un dígito
			@esNumero += 1
		else # Si no es una letra ni un número, se considera un símbolo
			@esSimbolo += 1
		end
		
		end
		
		# Trabajamos con los puntajes y hacemos los comentarios correspondientes
		
		puts "Tu contraseña tiene letras" if @esLetra > 0; @calificacion += 1 if @esLetra > 0
		puts "Tu contraseña tiene numeros" if @esNumero > 0; @calificacion += 1 if @esNumero > 0
		puts "Tu contraseña tiene simbolos" if @esSimbolo > 0; @calificacion += 1 if @esSimbolo > 0

# ¡Pero que hermosa forma de hacer los IF's! Ruby permite  poner primero la expresión y luego el if, como si fuera una oración hablada "Escribe esto si pasa esto" eso es genial, el ";" permite hacer un salto de line invisible para escribir la siguiente linea de código en la linea actual. 



		# Damos calificación
		print "Tienes #{@calificacion} de calificación, por lo tanto creemos que "
		
		case @calificacion
		when 5 then puts "TU CONTRASEÑA ES COMPLETAMENTE SEGURA"
		when 2..4 then puts "DEBES MEJORAR LA SEGURIDAD DE TU CONTRASEÑA"
		else puts "CAMBIA ESA CONTRASEÑA YA!!"
		end
end


end

#Ya creamos nuestro molde, ahora creemos el objeto particular

nuevaContra= HowSecurePass.new
evaluar = nuevaContra.userPass
nuevaContra.evaluator(evaluar)

Me siento satisfecho, no sé aún que tan bien he aplicado la POO en este ejercicio pero siento que he progresado.

NOTA MENTAL: Procuraré entrenar mas arduamente para mejorar mis habilidades de programación ^^'

 
Read more...

from soldanes

Adiós a las aulas

Me mudé a la CABA desde Campana en 2011. Apenas mudado, conseguí trabajo en una empresa ultra tercerizada de servicios tecnológicos, pensando que tal vez podría encarar una carrera dentro del maravilloso y fantástico mundo de la informática. La realidad fue completamente avasallante. Tenía buenos compañeros, si, pero la alienación, el viaje al centro, la apatía, los tiempos muertos, la alfombra, los monitores de tubo, todo era agobiante. Para el 2014 no lo aguantaba más y por alguna razón desconocida ingresé al Profesorado de Educación Primaria en mi querido y bellísimo Mariano Acosta del populoso barrio de Once. Creo que fue una de las mejores decisiones que tomé, porque sin saberlo me di cuenta que la educación era mi vocación. Quizás en cierto punto eso estaba allí, en mi inconsciente de manera solapada y mezclada con mis infantiles deseos de ser médico. Mi vieja, doctora, y mi tío, doctor; todo hacia que hasta mis 19 años quisiera seguir esa carrera. Claramente no la seguí, pero el guardapolvo blanco, presente en la salud pública, también es un símbolo de la educación.

Hace unos días que se cumplió un año de la decisión que tomamos con Emi de venirnos a Misiones. No me arrepiento de nada, por más que extrañe mucho a mis amigues y familia. Tener una casa, un patio, el río cerca, es impagable. Pero también, hace varios días que vengo buscando la manera de hacerme a un lado de la docencia debido a los recortes salariales que la provincia de Misiones realizó sobre el sueldo docente. Hoy en día un docente de grado que recién entra al sistema cobra 161 mil pesos. Si, ciento sesenta y un mil pesos. Eso estamos cobrando desde diciembre. Es decir, eso cobramos el ultimo mes del 2023 (se “zafó” un poco por el aguinaldo), eso cobramos en enero y eso cobramos ahora en febrero. Según los últimos números para que una familia tipo no sea indigente, debe ganar por lo menos 200 mil pesos, o sea, en Misiones los docentes están por debajo de la línea de indigencia (según datos de fines de 2023).

Dada esa situación tomé la decisión de dejar la docencia, mi vocación, el espacio donde más he brillado, y comenzar a buscar algún laburo dentro del rubro de IT, de lo que sea, con tal de no estar por debajo de la línea de indigencia. No les miento: peloteo entre el miedo, la ansiedad, la tristeza, impotencia pero también la expectativa y esperanza. Sé que puedo conseguir trabajo pronto y que probablemente así sea, pero tener que dejar la enseñanza, aunque sea por un tiempo, es frenar un poco los latidos de mi corazón.

En la educación encontré un rumbo para mi vida, una vocación, una razón por la cual levantarme y sentir que estaba siendo útil para mi comunidad, para la sociedad, para mi patria. No me gusta hablar de mis logros, porque siento que mis logros no son míos sino son colectivos. Siempre pensé, sostuve y afirmé que en lo individual nada valgo, en lo colectivo me sumerjo y potencio. Y el aula, la escuela, los espacios educativos, siempre fueron eso para mi, un lugar donde potenciarme, pero fundamentalmente, un lugar donde devolverle a mi país, a mi sociedad, a mi patria todo lo que ella me dio. En medio de todo el descalabro, de la crisis, la miseria generalizada, la tristeza como bandera, el enojo como denominador común, sumergido en todo eso, el aula, la educación, fue un lugar de logros eternos, logros colectivos, claro. Porque que varios chicos de 6to grado de una escuela pública post pandemia, que apenas sabían leer y escribir, pudieran luego de un año de laburo escolar, escribir bellos cuentos y leer para todos sus compañeros, no es un logro mio, es un logro del grupo, es una construcción colectiva. Que un pibe de Posadas, que nunca había tocado una computadora, que apenas podía escribir, pudiese en un par de encuentros en el Conectar Lab animar un personaje y darle vida mediante código usando Godot Engine, es un logro colectivo de los pibes y de los talleristas que formamos parte del espacio.

Hay gente que me conoce y sabe de mi pasión por la educación. Yo no soy más que uno de los tantos maestros de la Patria que busca torcer los destinos de sus alumnos y alumnas mediante la educación. En este quehacer, le debo mucho a muchas personas que la vida, el destino o el universo tuvo la suerte de poner en mi camino para que pudiera aprender de ellas. Principalmente a algunos de mis docentes del Mariano Acosta, ellos saben quienes son; luego a mi última directora, Pia, con la cuál aprendí muchísimo. De hecho, también lo he dicho, de las cosas que más me costó dejar cuando decidí mudarme a Misiones fue el Colegio Septiembre. Allí aprendí muchísimo, fue un gran laboratorio de experimentación para mi. Y si bien era un colegio privado, eso a mi poco me importa: los niños y niñas son iguales en cualquier lugar. Porque, además, así como trabajaba en Septiembre, así me iba a trabajar a la escuela pública, con la misma impronta, el mismo empuje, la misma garra y ganas. ¿Había más dificultades en la pública? Si, claro, las realidades son distintas pero, ¿qué sería la vida sin dificultades? Un embole. Las dificultades de la vida son formas de buscar la autosuperación y la autosuperación es un camino necesario para poder formarse.

No quiero que se malinterprete, porque quizás algún futuro empleador me lea: no es que laburar en IT sea para mi algo tedioso. Claramente es una búsqueda que me interesa. Pero simplemente necesito un poco de catarsis en el cyberespacio. Porque si bien he estado en la trinchera del aula unos 7 años, que no es mucho, siento que fueron de los años más provechosos de mi todavía corta vida. Cuando uno está en el aula, o al menos a mi me pasaba, siente que hay esperanzas en el mundo, que todo puede mejorar, incluso estando en los “peores” cursos, incluso “bailando con la más fea”. A veces, sí, es cierto, parece que el aula es una batalla que ya perdimos, pero, ¿quién decide cuando se pierde una batalla? Jamás me he rendido, mi formación de karateka no me lo permite. Retroceder nunca, rendirse jamás. Recuerdo por ejemplo otro alumno, con tremendas dificultades para la lectoescritura, con claros síntomas de dislexia jamás diagnosticada los cuales le dificultaba horrores el aprendizaje. Pero aun así, insistiendo, preocupándome (y claro, enviando los informes correspondientes al Ministerio, totalmente al pedo porque nadie jamás se acercó a dar una mano) y trabajando durante 2 ciclos lectivos seguidos con él casi uno a uno, lograr que ese pibe pudiera ENTENDER lo que lee, pudiese escribir oraciones y textos coherentes...nunca me sentí tan orgulloso en mi vida como cuando sentí que con ese pibe pudimos construir aprendizaje.

De nuevo, no me gusta hablar de logros porque los logros son individuales, pero siento que en estos pocos años en el aula tuve la oportunidad de sembrar mucho. La buena siembra no depende en exclusividad del agricultor, hay muchos factores, como la tierra, el agua, las semillas, las plagas, etc. Siempre traté de generar las condiciones para que todo florezca y creo que siempre algo creció en las aulas donde anduve. Obviamente, hay cosas que se escapan de lo que uno pueda manejar pero mi corazón siempre está orgulloso de haber dado todo y más de mi en pos de la educación, que, creo yo, es uno de los motores para el crecimiento de nuestra Patria. Por supuesto, no es el único, la educación no va a arreglar todos los problemas del país como muchas veces quieren vendernos. Además, si fuera así cómo dicen, ¿por qué no asignan recursos, dinero, personal capacitado, etc?

Lamentablemente nos toca vivir una etapa muy jodida del país y puntualmente en esta bella provincia, una situación tremendamente injusta. ¿Cómo se puede odiar tanto a la docencia como para no solo recortarnos el sueldo sino además luego ofrecer porcentajes miserables de aumento? Para peor de todos los funcionarios responsables hacen la vista gorda, se la pasan subiendo pelotudeces en instagram y repitiendo slogans vacíos como “educación disruptiva” y estupideces varias. Peor aun son los colegas que fingen demencia, piden esperar, mientras al mismo tiempo hacen fila en las casas de usureros, venden electrodomésticos u otros bienes en Marketplace y revientan la tarjeta de crédito porque no hay forma de llegar al día 15 del mes. ¿Qué esperan esos colegas? Ni hablar de los sindicatos entreguistas que ya están viendo cómo tranzar con la patronal y dicen “entender la situación de la provincia”.

Sé que la escuela y los espacios educativos estarán siempre ahí. Nunca fue mi intención en la vida hacer mucho dinero. Siempre apunté a vivir tranquilo. Solo me interesa que al apoyar la cabeza en la cama pueda dormir en paz sabiendo que nunca cagué a nadie y que además aporté para la construcción de la patria que tanto amo. Ahora me toca arrancar otra aventura, una nueva. Una vez mi hermano me dijo que yo siempre puedo salir adelante en lo que me proponga porque cada vez que tengo que reinventarme lo hago sin problemas. Y creo que tiene algo de razón. También sé que siempre estarán allí esos maravillosos compañeros y compañeras docentes que me tocó cruzarme en la vida, sobretodo a mis colegas de Septiembre, desde las docentes hasta las secretarias y no docentes. Algunos, ni siquiera en la vida, sino en el cyberespacio, como la amiga Riky, Larvis, Rosendo, y otros tantos más, docentes completamente comprometidos con la educación, con la construcción de la Patria. A todos ellos y ellas, vayan mis respetos.

Finalmente para cerrar está catarsis que puede ser tan soporífera como emotiva, agradezco a la vida, al universo o a quién sea, ya que no soy un hombre que crea en entidades judeo-cristianas, el haberme encontrado con todos los alumnos y alumnas que me crucé en estos primeros años de docencia. Sin lugar a dudas no sería la persona que soy hoy, mejor que la que era hace 7 años cuando me inicié en la docencia, sino fuera gracias a lo que aprendí de ellos y ellas. Gracias a ustedes, crecí, aprendí, mejoré en tantos aspectos que sería imposible enumerarlos a todos. A ustedes, mis respetos, mi agradecimiento incondicional. En el mientras tanto, seguiremos en la lucha docente, porque como dije, nadie me va a decir cuando se termina una batalla. Retroceder nunca, rendirse jamás. Viva la patria, viva la docencia y vivan nuestros pibes y pibas.

 
Leer más...

from Un hombre lobo madrileño en Toledo

Nada

Cuando la humanidad despertó aquel día, el Sol no apareció en el horizonte.

Durante los primeros minutos nadie le dio demasiada importancia. Todos estaban muy ocupados preparándose para sus trabajos y sus vidas, pero las horas pasaban y el cielo no se iluminaba. Entonces comenzaron a preocuparse. La gente miraba sus relojes y los agitaban junto a su oído, pensando si acaso estarían estropeados, pero el Sol continuaba sin salir.

Científicos de todo el mundo estudiaron el fenómeno, y cuando obtuvieron las imágenes de los satélites que circundaban la Tierra advirtieron con estupor que el Sol había desaparecido. No había rastro de él por ninguna parte. Se registró hasta el último rincón del sistema solar recurriendo a los telescopios más potentes, pero el resultado siempre fue el mismo.

El Sol, sencillamente, se había esfumado.

Los primeros signos de la falta de luz y calor fueron visibles muy pronto. Las personas estaban más irritables. Los animales comenzaron a alterar su comportamiento, y las cosechas se resintieron. En los países más septentrionales la gente que no tenía recursos comenzó a morir de frío.

Pero la humanidad era fuerte, y luchó por sobreponerse a la adversidad. Las mentes más brillantes del planeta colaboraron entre sí para tratar de revertir la situación. Se dejaron a un lado las diferencias, las guerras y conflictos se olvidaron. En solo unos meses crearon un ingenio nuclear capaz de emular al Sol mediante una batería atómica de larga duración. Lo llamaron Sol-1. El lanzamiento, coordinado entre varios países, fue un éxito. Cuando el artefacto alcanzó una órbita estable alrededor de la Tierra entró en funcionamiento, y comenzó a proporcionar luz y calor a los seres humanos, creando un ciclo similar al del Sol. La humanidad lo había conseguido.

Una semana después, la Luna desapareció del cielo.

Después de la experiencia anterior los científicos ya no intentaron averiguar lo que ocurría. No había tiempo. Las mareas, privada la Tierra también de la gravedad del Sol, desaparecieron, y con ellas el transporte de nutrientes y microorganismos del que dependían las formas de vida marinas. Sin la Luna actuando como estabilizador, la Tierra comenzó a inclinarse perezosamente sobre su eje, lo que acabaría teniendo resultados catastróficos.

Pero la humanidad, una vez más, respondió con determinación. Habían superado la desaparición del Sol, y sin duda también lo harían con la de la Luna. En distintas factorías del planeta comenzaron a construirse módulos independientes, que al unirse formarían un satélite artificial que generase una atracción gravitatoria equivalente a la de la vieja Luna. Las distintas partes se construyeron en tiempo récord, y fueron enviadas al espacio por separado. Allí, un equipo de astronautas de varias naciones ensamblaron Luna-1. El proceso fue un éxito, y una vez que el nuevo satélite comenzó a orbitar alrededor de la Tierra, en perfecta sincronía con Sol-1, la situación en el planeta volvió a estabilizarse.

El tiempo transcurrió, y los humanos olvidaron lo que había ocurrido. Tenían un nuevo Sol y una nueva Luna que les permitían seguir con sus apacibles vidas. Pero la ciencia, una vez superada la crisis, continuó buscando respuestas. Se utilizaron los telescopios más avanzados de la Tierra para otear el espacio exterior, y los científicos observaron con pasmo que se estaba empezando a encoger. A encoger no, pensaron después. A desaparecer. Las constelaciones se esfumaban una tras otra, dejando solo un espacio negro en su lugar. Los planetas, las estrellas y los cometas eran reemplazados por la oscuridad.

Cuando se hizo público el descubrimiento la humanidad entró en pánico. Habían superado la desaparición del Sol y la Luna, pero esto era demasiado. El extraño fenómeno alcanzó el borde del sistema solar. Plutón, Neptuno y Urano dejaron de existir de un día para otro. El resto de los compañeros de la Tierra durante eones siguió pronto su camino. Solo quedó la Tierra, esta vez sí en el centro del universo. Cuando desaparecieron los satélites de comunicaciones estalló el caos. La gente comenzó a reunirse en grupos aleatorios, buscando compañía y refugio ante el incierto desenlace que se abría ante ellos. Luna-1 fue engullida por la oscuridad, seguida por Sol-1, lo que dejó al planeta sumido en una opresiva oscuridad. La Estación Espacial Internacional se evaporó, llevándose consigo las primeras vidas humanas que el extraño fenómeno se cobraba. En la esfera azul que había sido hogar de la humanidad durante tanto tiempo ahora se guardaba un silencio expectante. Todos miraban al cielo, pensando qué habrían hecho mal, en qué se habrían equivocado. Rezando por tener otra oportunidad para hacer las cosas de otra manera, para tratar al planeta como el hogar que siempre fue.

Y entonces desapareció la Tierra, y solo quedó la nada más absoluta.

 
Leer más...

from El blog de un Absolute Beginner

El blog de un Absolute Beginner. Episodio 008

008: Migración de iOS a Android (1). Antecedentes

El pasado 4 de enero de 2024, tras la escucha de un episodio especial del pódcast Applelianos titulado Apple controla tu iPhone, tuve una gran revelación: de pronto sentí que me encontraba en un punto de no retorno en mi relación con Apple.

Todos sabemos que el ecosistema de Apple es uno de los engranajes más perfectos que existen en el mundillo tecnológico. Gracias a una minuciosa integración de sus dispositivos y su software con iCloud (su servicio de almacenamiento en la nube), Apple ofrece una comodidad y una productividad soñadas por muchas personas que, cuando emplean un dispositivo electrónico, quieren que todo funcione y que nada les arruine su experiencia de entretenimiento o de trabajo. Desde los tiempos de Steve Jobs y del primer Macintosh (enero de 1984), los productos y servicios de Apple siempre han estado dirigidos a dar la mejor experiencia de usuario, de manera que este no tenga la necesidad de saber cómo funcionan por dentro el hardware o el software de una computadora o de cualquier otro dispositivo electrónico, desde el Macintosh hasta las Vision Pro.

Apple cuida (o más bien, monitorea) la experiencia del usuario hasta el punto de anular su capacidad de decidir lo que es mejor para él: la compañía decide por él y se adelanta a sus necesidades, y en verdad el usuario se suele sentir satisfecho con las decisiones que Apple toma por él. En tiempos de Steve Jobs (anterior CEO de Apple), se decía que él sabía de antemano lo que el usuario necesitaba y, por eso, los nuevos productos de Apple siempre eran un éxito de ventas. De hecho, muchos de esos usuarios son conscientes de ello y aceptan de buen grado que Apple imponga sus propias normas en el uso de los dispositivos de su marca. Es lo más parecido a lo que coloquialmente se llama pactar con el diablo.

Mi primer contacto con Apple se remonta a principios del año 2016. Por aquel entonces, yo era usuario de un Samsung Galaxy S3, y un buen día la batería del móvil empezó a fallar estrepitosamente. Un dato curioso es que la batería de ese modelo de Samsung aún se podía extraer y sustituir por otra. Ante la posibilidad de comprar una nueva batería, decidí que era hora de cambiar de móvil y dar el gran salto a iPhone. La diferencia de precio era considerable, pero había echado el ojo a un modelo antiguo que vendían en la tienda k-tuin a precio rebajado: un iPhone 5S de 2013, con un procesador de 64 bits, 32GB de almacenamiento y, en mi opinión, uno de los mejores diseños históricos del iPhone.

Al adquirir un iPhone y entrar en el mundillo de Apple, sentí como que estaba jugando en una liga más avanzada, que estaba en otro nivel muy por encima de los demás dispositivos móviles de Android. Los podía mirar por encima del hombro y quedarme tan ancho. En esa época, la brecha entre Apple y el resto de competidores era considerable, y Android todavía era un sistema operativo claramente inferior a iOS. A partir de ese momento, como ha pasado a tantos otros usuarios de Apple, empecé a entrar poco a poco en su ecosistema: en 2018 me compré un iPhone Xr; en 2019, un iPad de 6a generación (2018); en 2020, unos AirPods de 2a generación (2019); en 2021, el Apple Watch SE; y en 2022, el MacBook Air con M1 (2020). En 2022 ya estaba metido de lleno en el ecosistema de Apple, aunque me faltaban algunos productos minoritarios como el Apple TV, el HomePod o los AirTags.

Durante estos 8 años como propietario de productos de Apple he podido descubrir cómo es la política de la compañía en muchos aspectos de la producción, venta y posventa. El punto más importante ha sido la constatación de que no poseo los artículos de Apple que compré (de ahí la cursiva de la palabra “propietario”) y de que estoy en manos de las decisiones arbitrarias (cada vez lo son más) de Apple. Os pondré varios ejemplos:

a) Si compras un iPhone, un iPad o un MacBook, ten en cuenta que Apple controla todo su software y hardware a través de las actualizaciones. Apple puede hacer que cualquier elemento del hardware deje de funcionar, así como descontinuar o desinstalar cualquier aplicación que hayas instalado previamente en tu dispositivo.

b) Si compras música o películas en la tienda de Apple, puede darse el caso de que alguno de esos artículos desaparezca repentinamente del catálogo y que no puedas volver a disfrutarlo. Hace unos años Amazon hizo algo semejante al retirar ciertos libros de la tienda Kindle (su lector de libros electrónico). Además, su disfrute tiene que ser obligatoriamente en un dispositivo o plataforma de Apple. Ya no es como comprar un disco de música o una película en cedé y reproducirlo donde quieras y cuando quieras. Por supuesto,

c) Si tu dispositivo se estropea y debes repararlo, no puedes ir libremente a cualquier tienda de reparaciones sin perder instantáneamente la garantía de reparación de Apple. Si decides ir a un técnico autorizado, cualquier mínima reparación te puede costar un ojo de la cara. Para que las reparaciones te cuesten menos, debes contratar un seguro llamado Apple Care cuando compras el dispositivo. Gran parte de la seguridad que brinda Apple a sus usuarios está basada en hacerte pagar más por todo, a veces sin razón aparente.

d) Los productos de Apple son el ejemplo más claro de obsolescencia programada porque todo está preparado para que el nuevo modelo de iPhone, de iPad o de MacBook sea más deseable y atractivo, a pesar de que sus capacidades sean similares a las del que ya tienes. En muchas ocasiones los usuarios de Apple se ven obligados a comprar un nuevo dispositivo porque uno de los componentes de hardware no funciona y el servicio técnico no está dispuesto a repararlo o sustituirlo, o bien te ofrece hacerlo por un precio excesivo.

e) Los dispositivos de Apple están diseñados para que sea muy difícil (si no imposible) repararlos sin pasar por un servicio técnico oficial, lo cual implica un sobrecoste a veces inasumible o simplemente superior al del precio del propio dispositivo. Además, todos los componentes de Apple tienen su número de serie que es analizado por el software cada vez que arranca, de manera que, si se detecta un componente nuevo que no sea oficial, el dispositivo puede dejar de funcionar total o parcialmente. La reparabilidad de estos dispositivos es casi nula, salvo que solicites a la compañía el préstamo de un kit de reparación de Apple que, para más inri, te supone adelantar una suma de dinero considerable para asegurar su devolución una vez finalizado el plazo de tiempo que dure la reparación. Todo ello, a pesar del compromiso oficial de Apple de reducir a la mínima expresión para 2030 su huella de carbono en el proceso de producción, venta y posventa de sus productos. Ellos son los que deciden si un producto es reparable, o si no lo es y tienes que cambiarlo por uno nuevo. Incluso te ofrecen una pequeña suma de dinero por tu viejo dispositivo para así poder reciclar sus piezas y reutilizar los materiales en la fabricación de nuevos productos. Todo ello conforma una curiosa manera de cuidar del medio ambiente.

Esa política de Apple de cara a la sostenibilidad, la privacidad y el ecologismo (entendido de una manera muy particular) al final te hace reflexionar sobre tu forma de pensar y de actuar cuando empleas productos de Apple, sobre aquellas decisiones con las que no estás de acuerdo y sobre si vale la pena seguir en el ecosistema pagando un precio tan alto económica y éticamente. Entonces, un día decides que la solución no es esquivar esas incongruencias, sino apartarlas de tu camino para siempre. Es por eso que he decidido romper con el ecosistema de Apple y pasarme a Android como primer paso. No obstante, no me quiero pasar a Android de la mano de Google, lo cual sería una metedura de pata. Quiero pasarme a una variante de Android que no emplee y no dependa de los servicios de Google, es decir, un Android desgoogleizado (ungoogled Android), como puede ser el sistema operativo /e/OS de la e Foundation. Además, el móvil elegido sería el Fairphone 5, de la marca Fairphone, que fabrica los teléfonos móviles más reparables del mundo, con una nota de 10/10 en reparabilidad según iFixit, empresa estadounidense especialista en la reparación de dispositivos.

Espero que os haya gustado el aperitivo. Esto no ha hecho más que comenzar.

Written by human, not by AI Licencia Creative Commons "Attribution-Share Alike"

 
Leer más...

from Joshi - Bitácora de aprendizajes

Sufriendo con POO

El paradigma de POO (Programación Orientada a Objetos) siempre ha sido un problema para mí, debido la instrucción desordenada que recibí y que yo he continuado en programación. En la escuela aprendí a moverme con soltura en PHP pero siempre desde el paradigma procedimental, declarando y guardando variables... pero el POO solo lo vi de manera abstracta (mejor dicho conceptual; exposiciones de clase) lo que siempre ha sido para mi un reto, porque en programación se aprende practicando.

En internet también encontrar material para ejercitarse como el que yo requería es difícil. Los ejemplos siempre son muy ¿Simples? ¿No aplicables? Soy un cabeza dura, lo reconozco, aprendo a base de equivocarme una y otra vez. Así que se me ocurrió que ya que estoy aprendiendo Ruby, resolver los problemas clásicos de programación pero siguiendo en la medida que pueda los lineamientos de POO.

¿Que haremos hoy?

Sistemita que devuelve cambio

Un usuario ingresa una cantidad en el prompt y el programa se encarga de devolverle esa cantidad en billetes y monedas de distintas denominaciones

Le tengo cariño a este ejercicio porque fue el primer ejercicio donde en verdad me entretuve mentalmente en la escuela y no en mi casa con libros de la biblioteca.

Planteomoslo en paradigma POO

NOTA No tengo formación académica que me respalde, todo lo que hago es lo que creo que es y luego a base de golpes y metidas de pata me voy corrigiendo, así que no duda de mi, lector anónimo.

En POO debemos pensar primero en crear un molde genérico del programa, del que después iremos creando objetos específicos.

*Ese molde se llama CLASE*

class DarEfectivo
	# Aquí todo el código del molde 

end

En Ruby, siempre que se crea un objeto nuevo, busca un método llamado initialize y lo ejecuta.

initialize vendría siendo lo que en otros lenguajes conocen como constructor citando a Wikipedia:

En Programación Orientada a Objetos (POO), un constructor es una subrutina cuya misión es inicializar un objeto de una clase. En el constructor se asignan los valores iniciales del nuevo objeto.

Entonces, hagamos nuestro constructor, en este caso las variables que inicializaré serán dos arrays donde estarán almacenados las denominaciones de billetes y monedas.

Repito, fue la forma en que yo resolví el ejercicio y la forma en la que, de momento, he entendido el concepto.

Quedaría de esta forma:

class DarEfectivo

	def initialize
		@billetes =[1000,500,200,100,50,20]
		@monedas = [10,5,2,1]
	end

end

¡Ya tenemos nuestro molde! Pero aun está incompleto. debemos darle métodos.

Yo lo entendí de esta forma:

Un objeto tiene atributos y métodos. los atributos son como sus características, los métodos, en cambio, son las acciones que el objeto puede realizar.

En este caso, ¿Que acciones debe realizar nuestra clase para poder ayudarle al usuario con su cambio?

  • recibir datos del usuario.
  • devolver esos datos en billetes y monedas de distinta denominacion.

Por tanto, esos serán los dos métodos que crearemos:

Método 1: recibir datos del usuario


class DarEfectivo

#constructor
	def initialize
		@billetes =[1000,500,200,100,50,20]
		@monedas = [10,5,2,1]
	end

	# recibir datos del usuario
	def cantidad
		print "Dame un cantidad: "
		gets.chomp.to_i
	end

end

Método 2: Devolver el resultado

Esta parte ya es mas familiar para mí ^^' y es que debemos resolver el ejercicio en sí. Le dí un par de vueltas (En la prepa lo resolvimos a bese de puro if y else anidado pues era el tema de la clase) y se me ocurrió usar each do que usamos con los números primos (NOTA MENTAL: convertir el programita de numeros primos a POO)

Lo que vamos a hacer es:

  1. Recorrer el array elemento por elemento (Comenzando con los de mayor denominación)
  2. Si la cantidad que ingresó el usuario es mayor o igual a la denominación del billete (elemento del array):
    1. obtener la cantidad de billetes de esa denominación que pueden acompletar la cantidad (una división entera)
    2. Si el resultado de esa división entera es mayor que uno, se imprimirá el texto “billetes de” (mas de un billete), de lo contrario se imprimirá el texto “billete de” (para ser mas agradable y natural al usuario)
  3. La variable cantidad se actualiza al resultado de la división modular entre el billete con el que se le aplicó la división entera. Es decir, obtener el sobrante, el cual se reutilizará con el siguiente elemento del array.
  4. Si la cantidad no es mayor o igual al elemento del array en el que se encuentre, se pasa al siguiente elemento.
  5. Cuando termine el array de @billetes, nos seguimos con el array de @monedas, que tendrá exactamente el mismo comportamiento que el anterior array.

Quizá en código se entienda mejor mi soliloquio ^^'

class DarEfectivo
# Constructor
def initialize
	@billetes =[1000,500,200,100,50,20]
	@monedas = [10,5,2,1]
end

# Recibir datos del usuario
def cantidad
	print "Dame un cantidad: "
	gets.chomp.to_i
end

# Devolver la cantidad en billetes y monedas de distinta denominación.
def cambio(cantidad)
	
	@billetes.each do |billete|
		if cantidad >= billete 
		print "#{cantidad.div(billete)} " 
		unless cantidad.div(billete) != 1 then puts "billete de #{billete}" else puts "billetes de #{billete}" end
		cantidad=cantidad % billete
		end
	end
	
	@monedas.each do |moneda|
		if cantidad >= moneda 
		print "#{cantidad.div(moneda)} " 
		unless cantidad.div(moneda) != 1 then puts "moneda de #{moneda}" else puts "monedas de #{moneda}" end
		
		end
	end
	
end



end

Podemos notar algo interesante a diferencia del anterior método, y es que en def cantidad no pasamos ningún parámetro, a diferencia de def cambio(cantidad). Esto de pasar parámetros significa que hay métodos que necesitan un parámetro externo para trabajar.

Ahora sí, hemos terminado nuestro molde. Hora de crear un objeto para que nuestro usuario interactué con él.

# Creamos un objeto llamado mi_efectivo, a partir de la clase DarEfectivo.new
mi_efectivo = DarEfectivo.new

# La variable cantidad_ingresada guardará el valor que el usuario escriba en el método cantidad, que mandamos a llamar desde nuestro objeto creado.
cantidad_ingresada = mi_efectivo.cantidad


# ejecutamos el método cambio pasándole el valor de la variable cantidad_ingresada
mi_efectivo.cambio(cantidad_ingresada)	

y ¡voila! nuestro programa funciona.

 
Read more...

from Artilugios

Estimada A:

Volví a soñarte. Como te aferrras al mundo de mis sueños y como apareces en momentos en los que creo haberte soltado por completo.

En aquel sueño yo no era más que una persona común. Trataba de encontrar mi camino entre los mares de gente y darle un poco de sentido a mi existencia, un poco como en esta vida real. Estaba tratando de conseguir una clase en la universidad y convenciendo a la encargada de que me diera más horas. Me planté fuera de su oficina esperando encontrarla hasta que por fin me informó que se habían abierto algunas horas.

Tomé el colectivo de regreso a casa y fue cuando te vi. Venías caminando con un par de tus amigas con mucho entusiasmo, haciéndolas reír mucho. Siempre has sido una persona muy carismática, como un imán de personas que sabes ganártelas de inmediato. Pero noté, desde el colectivo, que cuando tus amigas se habían ido tú te quedaste llorando, con mucha tristeza. Sabía que ya no era mi obligación bajarme para consolarte, que tú ya tienes tu vida y yo la mía, y que si acaso nos comunicamos de repente es por pura cortesía.

Pero sucedió algo inesperado. Una vez que te limpiaste tus lágrimas mudaste de ropa gracias a la magia de los sueños. Te veías incréible, con un gran vestido colorido y tu peinado era una cola de caballo bastante elegante. Te dijiste a tí misma, pues no habías advertido que yo te miraba desde lejos, que irías a una cita con A.M. Fue ahí cuando un poco sentí los celos corroerme de nuevo, a pesar de los años que han pasado.

El colectivo aceleró de nuevo y yo me quedé llorando. La gente me miraba con un poco de lástima.

Siempre he pensado que los duelos de pareja tardan, tienen sus matices, van y vienen. A veces las personas se nos aparecen en sueños, en pensamientos, en una canción, no siempre de la misma manera. Yo siempre te recordaré con el mayor de los cariños, pues realmente nunca me hiciste algún mal que viniera desde la malicia.

Creo que hay una parte de mí que le gustaría bajarse de ese colectivo imaginario para seguirte ayudando y sanando tus heridas, por las personas que te han lastimado en estos años, las que se han alejado, las que te han confundido y por las malas decisiones que has tomado. Pero mi colectivo llamado vida debe seguir, y aunque sienta toda la tristeza del mundo cuando sé que algo malo te ha pasado, ya no me corresponde resolver nada.

Hemos intercambiado algunos correos en meses recientes. Estos correos para mí han sido sanadoras, parte de nuestro proceso de duelo y de sanación. Pero hay que entender los límites. Mandar un correo no es lo mismo que resolver ni querer volverse a colar en la vida de alguien más. Me gusta tu manera de escribir, a ti te gusta la mía. Nos gusta compartir algunas vivencias y algunos consejos de vida. Pero ahí el límite, el límite que nos separa y nos seguirá separando. Nuestro viaje de vida tuvo su fin, y a veces, queda la nostalgia de algo que ya no es y que se cuela en mis sueños recién comienza febrero.

 
Read more...

from Joshi - Bitácora de aprendizajes

Programita para identificar números primos.

Se me está haciendo tedioso aprender por temas, empezaré a probar por retos. Es decir, hoy quiero crear un programita que me siga si un número es primo o no. Es obvio que usaré condicionales, A partir de ahí, no sé. Veamos como lo soluciono.


Condicional 1

Crear programa donde de acuerdo al número que nos escriba el usuario, el programa nos diga is este número es menor, igual o mayor a 10

print "Ingresa un número: "
num = gets.chomp.to_i  #Ruby lee el número, le quitamos los caracteres ocultos y lo convertimos a entero.

if num < 10 # Si num es menor que diez..
	puts "El numero es menor a 10" # imprimes esto
elsif num == 10 # De lo contrario, si num es identico a 10
	puts "El número es igual a 10" # imprimes esto
else # De lo contrario
	puts "el número es mayor a 10" # Haces esto
end

Muy simple ¿No?

Intentemos hacer los siguiente:

EJERCICIO Identificando números primos con lo aprendido.

Recuerdo la criba de Eratostónes como una forma de identificar números primos. Lo que quiero hacer es un programa donde yo inserte un número y me diga si es primo o no, para deducirlo iré dividiendo el número entre los primeros 10 números primos, si no es divisible entre ninguno de ellos, daremos por hecho que es primo (Solo para practicar)

Intento de Solución 1
# EJERCICIO-3-Condicionales-2.rb
# IDENTIFICANDO NÚMEROS PRIMOS

print "Dame un número: "
num = gets.chomp.to_i

#Haremos uso de la divisińn modular.

if num.modulo(2) != 0 && num.modulo(3) != 0 && num.modulo(5) != 0 && num.modulo(7) != 0 && num.modulo(11) != 0 && num.modulo(13) != 0 && num.modulo(17) != 0 && num.modulo(19) != 0 && num.modulo(23) != 0 && num.modulo(29) != 0 && num.modulo(31) != 0
puts "El número #{num} es primo." 
else
puts "El número #{num} NO es primo." 
# Hasta aqui todo bien, sin embargo, en caso de que no sea primo, quiero que me diga entre que números es divisible.

unless num.modulo(2) != 0 then puts "Porque es divisible entre 2" end
unless num.modulo(3) != 0 then puts "Porque es divisible entre 3" end
unless num.modulo(5) != 0 then puts "Porque es divisible entre 5" end
unless num.modulo(7) != 0 then puts "Porque es divisible entre 7" end
unless num.modulo(11) != 0 then puts "Porque es divisible entre 11" end
unless num.modulo(13) != 0 then puts "Porque es divisible entre 13" end
unless num.modulo(17) != 0 then puts "Porque es divisible entre 17" end
unless num.modulo(19) != 0 then puts "Porque es divisible entre 19" end
unless num.modulo(23) != 0 then puts "Porque es divisible entre 23" end
unless num.modulo(29) != 0 then puts "Porque es divisible entre 29" end
unless num.modulo(31) != 0 then puts "Porque es divisible entre 31" end



end

Funciona genial!!!! Pero no me gustan las ultimas lineas es repetitivo y aburrido, siento que debe haber otra forma “Mas elegante de resolverlo”. Se me ocurre hacerlo con arrays.

*Un arreglo o array es una lista ordenada de elementos de cualquier tipo.*

Se me ocurre guardar todos los elementos a dividir en un arreglo y después que solo se opere con todos sus elementos internos.

el arreglo tendría la siguiente forma:

divisores = [2,3,5,7,11,13,17,19,23,29,31]

Intento de Solución 2

# IDENTIFICANDO NÚMEROS PRIMOS

print "Dame un número: "
num = gets.chomp.to_i

#Haremos uso de la divisińn modular.

if num.modulo(2) != 0 && num.modulo(3) != 0 && num.modulo(5) != 0 && num.modulo(7) != 0 && num.modulo(11) != 0 && num.modulo(13) != 0 && num.modulo(17) != 0 && num.modulo(19) != 0 && num.modulo(23) != 0 && num.modulo(29) != 0 && num.modulo(31) != 0
puts "El número #{num} es primo." 
else
puts "El número #{num} NO es primo." 
# Hasta aqui todo bien, sin embargo, en caso de que no sea primo, quiero que me diga entre que números es divisible.

# Haré un array para hacer el recorrido de divisiones
divisores = [2,3,5,7,11,13,17,19,23,29,31]

divisores.each do |divisor|
	if num.modulo(divisor) == 0 then puts "Porque es divisible entre #{divisor}" end
end

Ahora funciona con menos líneas de código ^^'... ¡ Y hemos hecho nuestra primeras iteraciones!

El método each acepta un bloque de código y lo ejecuta por cada elemento de la lista que se ira mandando a llamar con la variable definida entre los || (algunos les dicen pipes, no sé como se llaman realmente estos símbolos)

es decir: Por cada elemento en la lista, divisor va tomando su valor y se ejecuta la expresión > if num.modulo(divisor) == 0 then puts “Porque es divisible entre #{divisor}” end

Me ha entrado la curiosidad ¿Podría usar el array, y el método each para hacer mas elegante el if?

Intento de Solución 3

Conseguí esto:

# IDENTIFICANDO NÚMEROS PRIMOS

print "Dame un número: "
num = gets.chomp.to_i

#Haremos uso de la divisińn modular.

# Haré un array para hacer el recorrido de divisiones
divisores = [2,3,5,7,11,13,17,19,23,29,31]
variableContador = 0
divisores.each do |divisor|
	if num.modulo(divisor) == 0 then puts "Es divisible entre #{divisor}" else variableContador += 1 end
end

if variableContador != divisores.count then puts "Por lo tanto el número #{num} NO es primo" else puts "El número #{num} es primo" end

Estoy seguro que debe haber soluciones mas elegantes, pero como un tipo al que la programación siempre le ha dado quebraderos de cabeza, me siento muy a gusto con el resultado ^^'

 
Read more...

from Un hombre lobo madrileño en Toledo

Rose

Rose vigilaba la entrada del supermercado con atención. Llevaba allí varios minutos y todo parecía estar en calma, pero aún no se decidía.

Había dejado a su hijo escondido detrás de uno de los coches que bloqueaban la calle desde hacía unos días, llorando y hambriento. Ella misma también deseaba más que nada echarse algo a la boca. ¿Cuándo era la última vez que habían comido? Ya ni lo recordaba. Desde que había estallado la guerra la humanidad casi se había exterminado entre sí, y los pocos supervivientes que quedaban luchaban con desesperación por los últimos víveres.

Con paso rápido avanzó hacia la puerta. El cartel que había sobre ella rezaba «The Fresh Market». Rose recordaba haber estado allí antes, en lo que ahora le parecía otra vida, pero jamás se había atrevido a pasar. Ahora, con su hijo dependiendo solo de ella, no le quedaba otra alternativa.

La tienda había sido saqueada, como todos los sitios que había comprobado hasta ahora. En los lineales apenas quedaban unos pocos artículos, pero no había entre ellos nada comestible. Rose recorrió los pasillos dos veces, maldiciendo su suerte. Desde allí podía oír el llanto quejumbroso de su hijo. Le partía el corazón. Se disponía a salir de la tienda cuando reparó en una puerta metálica entreabierta, escondida detrás de un cartel que anunciaba unas ofertas que nadie volvería a comprar.

Dentro estaba oscuro, pero al cruzar el umbral unos halógenos se encendieron. Rose se sorprendió. El suministro eléctrico se había suspendido hacía ya una semana, así que supuso que en la tienda habría un generador de gasolina para prevenir los apagones. Se encontraba en una cámara frigorífica. Estaba vacía, a excepción de un pedazo de lo que parecía carne de ternera sobre una mesa, al fondo de la sala. Rose comenzó a salivar. No entendía cómo era posible que nadie lo hubiese encontrado hasta ahora. Olió la carne, recelosa. Parecía en buen estado. La cogió y salió de allí a toda prisa.

Al volver a pisar la calle respiró con alivio. Nunca le habían gustado los lugares cerrados. Localizó a su hijo y dejó la carne frente a él. Su hijo (no tenía nombre, su dueño había muerto antes de ponérselo) comenzó a lamer la carne con fruición. Rose esperó paciente a que se saciase. Miró alrededor, al maravilloso mundo que los humanos se habían encargado de destruir, y los maldijo. A ellos y a sus estúpidas guerras.

Después aulló al cielo y comenzó a comer.

 
Leer más...

from Joshi - Bitácora de aprendizajes

Convirtiendo cadenas de texto a números

Todo bien hasta ahora, sin embargo lo único que estamos haciendo es imprimir los valores que recibimos. Aún no operamos con ellos.

Supongamos que queremos crear un programa dónde nosotros le demos el precio neto de un producto, y el programa nos devuelva el precio con IVA (Impuesto de Valor Agregado), sabiendo que el IVA equivale al 16%... ¿Cómo podríamos hacerlo?

EJERCICIO-2-CalculadoradeIVA-v1-rb

print "CALCULADORA DE IVA\n"
IVA = 0.16

print "Dame un precio: "
precio = gets.to_f
# El método to_f es el que se encarga de transformar el string en un número flotante.

#imprimimos el precio neto
puts "PRECIO: $#{precio}"

#calculamos el impuesto
puts "IVA: $#{precio*IVA}"

#calculamos el precio final o precio al público
puts "PRECIO AL PÚBLICO: $#{precio + (precio*IVA)}"

Como podemos ver, gets por defecto lo que recibe del usuario los usa como una cadena, pero si mandamos a llamar to_f (to float. convertir a flotante) hace la conversión correspondiente, obvio, si es un número, si fuera un texto, por ejemplo “oso”, el valor generado de la conversión sería 0.

 
Read more...