Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Khala

#1
Criptomonedas / Re: Como minar Solana (SOL) paso a paso
Octubre 05, 2021, 04:15:43 PM
Desgraciadamente mi PC no es capaz de minar ETH. No me da la placa Dx Soy pobre, y voy a seguirlo siendo al parecer
#2
Criptomonedas / Re: Como minar Solana (SOL) paso a paso
Octubre 04, 2021, 12:10:11 PM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Hola No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Lo sacas de acá: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

De todas formas no recomiendo minar esta criptomoneda

Saludos!!
ANTRAX

Por que no? Si se puede saber? :D Porque no da ganancia, o hay alguna otra razon?
#3
Otros lenguajes / Rust - Es un Lenguaje Orientado a Objetos?
Septiembre 27, 2021, 04:29:19 PM
En este articulo, vamos a explorar la Programacion orientada a objetos (OOP) en Rust y cubrir temas como Objeto, Encapsulacion, Herencia, Polimorfismo y otros junto con ejemplos de codigo en Rust.

Contenidos:


  • Introduccion a la OOP
  • Que es Rust?
  • Objetos y Encapsulacion
  • Herencia y Polimorfismo


Empecemos con Programación orientada a objetos.

Introduccion a OOP.
La programación orientada a objetos es un termino que existe desde 1967, creado por Alan Key. En la arquitectura orientada a objetos, el codigo está estructurado en Objetos, que se comunnican entre ellos a traves de interfaces publicas, pero no saben como funcionan los demás internamente.

Esto hace que el programador pueda evitar preocuparse sobre como estan implementados internamente los objetos con los cuales está interactuando. E incluso si esa implementacion cambiara, o fuera totalmente desconocida, mientras las funciones de la interfaz publica no cambien, puede estar seguro que su codigo va a seguir funcionando (A menos que la implementacion esté mal, en cuyo caso.. bueno, no hay mucho que hacer!)

Qué es Rust?
Antes de seguir avanzando... Qué es Rust?



El lenguaje de programacion Rust te ayuda a escribir software que es más rapido y más seguro. En general, control de bajo nivel y facilidad de escritura suelen estar opuestas en el diseño de lenguaje de programacion. Rust desafia este problema. Balanceando  una poderosa capcidad tecnica con la experiencia del developer, Rust te da la opcion de controlar los detalles de bajo nivel (como el uso de memoria) sin los problemas tradicionalmente asociados a dicho control.

Con eso dicho, hay muchas definiciones para la Programacion orientada a objetos (OOP a partir de ahora, por su sigla en ingles), y dependiendo de cual elijas usar, Rust puede ser o no ser un lenguaje OOP. Muchos lenguajes OOP comparten ciertan caracteristicas, como Objetos, Herencia, Encapsulacion...

Veamos como Rust lidia e implementa estas cosas! (Los ejemplos de código estan sacados directamente del Libro de Rust, linkeado al final de este articulo).

Objetos y Encapsulacion

En el libro Design Patterns: Elements of Reusable Object-Oriented Software de Erich Gamma, Richard Helm, Ralph Johnson, y John Vlissides (Addison-Wesley Professional, 1994), los objetos son definidos como:

Programas OOP estan compuestos de objetos. Un objeto empaca tanto datos como los procedimientos que operan con esa data. Los procedimientos son tipicamente llamados metodos u operaciones (O funciones, más tradicionalmente hoy dia)

Usando esta definicion, Rust es un lenguaje OOP. Rust tiene structs y blowues impl que pueden ser usados para almanecar datos y formas de operar con ellos respectivamente.

Código: php
pub struct AveragedCollection {
    list: Vec<i32>,
    average: f64,
}

impl AveragedCollection {
    pub fn add(&mut self, value: i32) {
        self.list.push(value);
        self.update_average();
    }

    pub fn remove(&mut self) -> Option<i32> {
        let result = self.list.pop();
        match result {
            Some(value) => {
                self.update_average();
                Some(value)
            }
            None => None,
        }
    }

    pub fn average(&self) -> f64 {
        self.average
    }

    fn update_average(&mut self) {
        let total: i32 = self.list.iter().sum();
        self.average = total as f64 / self.list.len() as f64;
    }
}


Como se puede ver en el codigo de arriba, tenemos una estructura (el bloque struct) y un bloque de implementacion (el bloque impl). Ésta estructura es comparable a una clase en C# o cualquier otro lenguaje similar. El bloque impl es esencialmente donde las funciones que uno pondria dentro de esa clase.

La estructura esta marcada pub (publica) lo que significa que otro codigo externo a esta estructura puede usarla, pero los camps internos son privados. Esto significa que los datos están encapsulados dentro del 'Objeto' struct. Las funciones add(para agregar), remove( para remover) y promedio (average) tambien estan marcadas como pub, lo cual expone esta interfaz al mundo exterior. Mientras, update_average (actualizar el promedio) se mantiene privada, lo que significa que solo el objeto/estructura AveragedCollection puede usarla. Lo cual tiene sentido. Solo la coleccion deberia ser capaz de actualizar sus propios datos. Esto elimina el problema de terceros alterando los datos de la coleccion sin nuestro conocimiento. Lo cual nos da otro beneficio. Si algo esta mal con los datos, sabemos que el error debe estar en la estructura o en su implementacion, y no en cualquier otro lado de nuestro programa. Esto es uno de los pilares de la programacion SOLID; lo cual está fuera de los contenidos de este articulo, pero puedo explayarme mas en otro, si fuera necesario o pedido)


Herencia y Polimorfismo
La herencia es un mecanismo por el cual un objeto puede heredar parte de su definicion de la de otro objeto, lo cual le da los datos y comporatmiento de su padre, sin tener que definirlos nuevamente.

Considerando herencia, Rust no tiene forma de especficiar que una estructura hereda atributos o funcionalidad de otra. Entonces en este sentido, Rust NO es un lenguaje OOP. No obstante, hay otras soluciones que Rust ofrece que son similares a herencia, por ejemplo, Traits.

Un trait le dice al compilador de Rust sobre funcionalidad que un tipo en particular tiene y puede compartir con otros tipos. Podemos usar Traits para definir comportamiento compartido en una forma abstracta. Podemos usar Traits tambien para especificar que un tipo generico tiene que tener si o si cierta funcionalidad o comportamiento. (Si ya conocen OOP, piensen en una Interfaz. Es esencialmente lo mismo)

Código: php
pub trait Summary {
    fn summarize(&self) -> String;
}


Esto es un ejemplo de un Trait. Tal como una Interfaz en otros lenguajes, cualquier clase o estructura en el caso de Rust que use esto, DEBE OBLIGATORIAMENTE implementarlo en algun lugar de su propia definicion. Un trait puede tener multiples metodos en su cuerpo, y cualquiera que lo use deberá implementarlos todos.

La implementacion se veria algo asi...


Código: php
pub struct NewsArticle {
    pub headline: String,
    pub location: String,
    pub author: String,
    pub content: String,
}

impl Summary for NewsArticle {
    fn summarize(&self) -> String {
        format!("{}, by {} ({})", self.headline, self.author, self.location)
    }
}


A veces es util o necesario tener algun tipo de implementacion por defecto para estos, lo cual es posible:

Código: php
pub trait Summary {
    fn summarize(&self) -> String {
        String::from("(Read more...)")
    }
}


Si queremos usar la implementacion por defecto, se deja el bloque impl vacío. El compilador entenderá que la ausencia de implementacion implica que se usará la implementacion por defecto.

Para mucha gente, polimorfismo es un sinonimo de herencia. Pero en realidad es un concepto mas general que refiere a codigo que puede trabajar con datos de multiples tipos. Para Herencia, estos tipos suelen ser sub-clases.

Rust en cambio usa Generics para abastraer diferentes tipos posibles, y Traits para imponer restricciones sobre que cosas esos tipos deben proveer.

Usando structs, traits y bloques impl, uno puede codear en un estilo OOP, pero como pueden ver, es dificil decir definitivamente si Rust es o no es un lenguaje OOP. En mi opinion, Rust es un lenguaje versátil que de ser necesario, puede ser OOP. Pero si querés aprender sobre el estilo de diseño OOP, es mejor hacerlo con lenguajes más tradicionales en esto, como por ejemplo C#, Java, o incluso C++ (Si eres valiente).

Les pregunto.. Conocen Rust? Han oido hablar de este lenguaje de programacion? Cree que cumple los requisitos para ser OOP?

Link al articulo Original (Con algunos cambios, tambien en ingles, escrito por mi para OpenGenus y traducido tambien por mi para Underc0de) No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Link al libro de Rust (En ingles) No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Gracias por Leer!
#4
Otros lenguajes / Conjunto de proyectos para practicar
Septiembre 19, 2021, 05:17:15 PM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

En este link encontrarán una gran variedad de tutoriales (Y algo de código de fuente en algunos) para practicar. Desde renderers 3D, pasando por blockchain y crypto, bots, bases de datos, etc. Hay varios ejemplos en diversos lenguajes, por eso lo puse en esta sección de 'otros', en lugar de atarlo a uno.

La idea es poder comprender el concepto de lo que uno quiere construir, y luego construirlo paso a paso. (Sin copiar y pegar).

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Saludos!
#5
Buenas Gente!

Por si no sabían, está abierta la inscripción al primer módulo (Supuestamente el segundo sale cerca del 20 de Septiembre, 2021). Es acerca de Blockchain y criptomonedas! A continuacion dejo un poco de informacion y el link a la pagina!

C1b3rWall Academy es una acción formativa enmarcada dentro del proyecto C1b3rWall, que dio sus primeros pasos en 2018 y contó como materialización más importante el I Congreso de Seguridad Digital y Ciberinteligencia desarrollado en junio de 2019 en la sede de la Escuela Nacional de Policía en Ávila (España). Casi 4.000 personas asistieron a este evento procedentes del sector público de la seguridad, sector académico universitario, comunidades profesionales de hacking y empresas muy relevantes del sector de la ciberseguridad.

La edición online del C1b3rWall Academy 2020 reunió a más de 41.000 personas de 82 países diferentes. Participaron más de 130 ponentes entre los que figuraron miembros de Policía Nacional, universidades, asociaciones y empresas con reconocido prestigio en el ámbito de la ciberseguridad, así como 38 comunidades de hackers de ámbito nacional e internacional.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

#6
Presentaciones y cumpleaños / He vuelto :D
Septiembre 14, 2021, 03:15:06 PM
Buenas!

No es realmente una presentación, mas bien un anuncio de que he vuelto a lurkear por estos lugares. Mi nombre es Khala, algunos de ustedes quizás me conocen de hace muchos muchos años (Me registré en el 2013!) , vivía en el IRC básicamente.

Incursionando nuevamente y mas profundamente esta vez en el mundo de la programación, con particular interés en blockchain, criptografía, y en mejorar mis habilidades y conocimientos como programador en general.

Un saludo, y me alegra mucho estar acá de nuevo :D
#7
Off Topic / Re:Feliz cumpleaños Khala!!!
Diciembre 04, 2014, 08:18:05 PM
Muchisimas gracias a todos los que me han deseado un lindo dia! La verdad que fue genial! Y muchas gracias a los que lean y comenten luego :) (Si es que hay)

Abrazos y mucha suerte para todos! :D
#8
Noticias Informáticas / Re:Memorias WIFI SD
Diciembre 01, 2014, 04:38:25 PM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Las nuevas tarjetas tienen un precio de partida de 49 dólares para el modelo de 8 GB, y en ese precio se incluye una suscripción de tres meses al servicio EyeFi Cloud. La suscripción anual, con la posibilidad de almacenar "un número ilimitado de fotos", cuesta 49 dólares.

Ambas cuestan 49 dolares? O la anual sale el doble? (98 USD)
#9
Ideas y Sugerencias / Re:Prohibir posts de agradecimiento
Noviembre 20, 2014, 07:16:02 PM
Antrax, como harias para moderar las personas que solo spamean agradeciendo? Como sabes si realmente lo hacen por spam o por agradecer realmente? Yo estoy de acuerdo con poner una forma de dar puntos o "likes"
#10
Lei y entendi mal.. Crei que la semilla, el [1,1] no contaba dentro de los numeros pedidos, entonces si pedian 5, eran 5 luego del 1 ,1 pero bueno.. Es un cambio tonto para hacer en el codigo y ya funciona, pero bueno. Fue un gusto participar :)
#11
No hablo de manipulacion de organos.. enteros digamos xD Se podria manipular a nivel microscopico, alguna cosa.. No se, digo. :)
#12
Wargames y retos / Re:Underc0de Weekend #3
Noviembre 12, 2014, 09:06:31 AM
Deberiamos asumir que el numero X va a ser harcodeado en nuestro programa? O tomamos el numero del usuario? :)
#13
No, Pero creo que es algo que va a permitir hacer ciertas manipulaciones en organos y estructuras mas grandes sin necesidad de una cirugia invasiva.. incluso se podria selectivamente evitar el flujo de sangre a ciertas zonas(Pensando en tumores y cosas similares). Esto es un gran avance, promete mucho :)
#14
Python 3.2, esta dicho en el libro pero lo agrego en el post, gracias por notarlo :)
#15

Bueno, vengo a dejarles un libro que estoy leyendo, el cual esta MUY bueno al momento de aprender Python y Criptografia a la vez. Explica el codigo paso a paso, explica como funciona lo basico de Python (Tener una base de programacion siempre ayuda). (Utiliza Python 3.2)

Descarga: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Saludos :)
#16
Copado aporte! Sigue asi!

Saludos :)
#17
No entiendo por que poner el limite en 99 años.. Que tanto cuesta alargarlo un poco mas? Si se sabe que la gente hoy dia pasa los 100 años.. que, por ser ya anciano no se permite tener FB o no se los tiene en cuenta? =/ Gracias por la noticia!
#18
Off Topic / Re:Feliz cumple F0m3t regla!!!
Octubre 15, 2014, 10:52:11 PM
Feliz cumpleaños :D.... A-Ahi Postie D: No me juackies la PC D:
#19
C / C++ / Re:Beej's guide to Networking[PDF]
Octubre 14, 2014, 01:26:00 AM
Dale fermi, metete a C conmigo.. Ayudame que vos le metes mas garra que yo D:<
#20
C / C++ / Beej's guide to Networking[PDF]
Octubre 13, 2014, 02:51:01 PM
Les dejo el link al PDF a la guia en español de esta guia. Esta principalmente hecha para programar en linux, pero incluye las modificaciones necesarias que deberan hacer los que usen otros S.O's.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta



Tabla de contenidos(Relevantes)

  • ¿Qué es un socket?
  • structs y manipulacion de datos
  • Llamadas al sistema
  • Modelo Cliente-Servidor
  • Técnicas moderadamente avanzadas
  • Referencias adicionales

Dejo tambien el link a la guia original en ingles por si a alguien le interesa!
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta