elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


  Mostrar Temas
Páginas: 1 [2] 3
11  Programación / Programación C/C++ / Funciones de POSIX o SYSTEM V en: 2 Octubre 2019, 00:27 am
Buenas a todos, estoy profundizando en la practica de los temas de comunicación entre procesos e hilos y me tope con 2 necesidades:
  • Hacer uso de memoria compartida
  • Hacer uso de semaforos

Encontre que ambas necesidades pueden ser proporcionadas por una familia de funciones de tanto el estandar POSIX como de aquellas heredadas de SYSTEM V,por lo tanto me genera la duda  ¿  es necesario aprender las viejas funciones del SYSTEM V?, o es mas que necesario con las del estandar de POSIX.

He visto que algunas diferencias tales como que en los semaforos de SYSTEM V se tiene mas control del incremento/decremento del semaforo,etc...  ¿Pero algunas de estas cualidades de las funciones de SYSTEM V pueden ser obligatorias para un cierto problema? o puede ser completamente sustituidas con las del estandar POSIX.
12  Programación / Scripting / Escucha simultanea de dos canales en chat con modelo cliente/servidor.TCL en: 18 Septiembre 2019, 04:17 am
Buenas a todos, tengo que dar solucion a un problema de un chat grupal con el modelo cliente/servidor dentro del lenguaje TCL y he creado de manera general una estructura en donde existe un servidor central al cual se conectan todos los clientes y los va agrupando en grupos de manera que cada usuario elige:

1. A que grupo pertenecer( En caso de no existir se crea)

2. Cual va ser su identificador dentro del grupo.
Mi modelo plantea que el servidor reciba estos datos al principio de la comunicacion y despues el haga la gestion de ellos de manera que pueda existir comunicacion entre usuarios de distintos grupos con ayuda del ID del grupo y el ID del usuario al que quiere comunicarse. Mis problemas comienzan con los siguientes puntos:

1. Como hago que el cliente este a la espera de recibir un mensaje del servidor y a la vez este a la espera de que no se llame la funcion que es generada al dar click en en un boton de "Enviar" para enviar un nuevo mensaje por parte del mismo cliente.

He visto el metodo SELECT de PYTHON que me permite estar a la espera de dos flujos de datos como STDIN y el socket pero en este caso concreto seria el SOCKET y una funcion que se llama cuando se da click en un boton para enviar el mensaje.He estado viendo si hay algo relacionado eso en TCL/TK pero no he encontrado demasiado al respecto.

2. En caso de que se envie un mensaje a un grupo o cliente no existente , que tipo de caracter podria enviar al cliente que origino el mensaje para darle a entender que el usuario o grupo al cual mando el mensaje no existe. Tal vez podria enviar una combinacion de caracteres pero de que manera me aseguro que esos caracteres no pueden ser parte de un mensaje que se esten pasando entre los usuarios.

Agradeceria si me ayudaran a dar solucion a estos dos problemas, o si me podrian presentar una alternativa que se suela usar para estos casos.
13  Sistemas Operativos / Unix/Unix-Like / Ventajas y desventajas de la forma de creación de procesos en UNIX en: 16 Septiembre 2019, 21:22 pm
Buenas a todos, resulta que viendo un poco sobre la API de UNIX y la API de WINDOWS observe que la creación de UNIX de proceso se hacia en dos pasos:
1. Llamada del sistema fork. Creación de un clon del proceso padre.
2. Llamada del sistema exec. Cambiar la imagen del proceso por un nuevo programa.

Mientras que este mismo proceso WINDOWS lo hacia en unicamente una llamada al sistema. En unos de los textos se mencionaba que el hecho de que se hiciera en dos pasos daba la posibilidad de tener un punto intermedio que permitia el compartir datos entre padre-hijo pero no termino de comprender que tanto impacto puede tener esto.

¿ Hay alguna cosa que no sea posible hacer en Windows debido a que esta situacion ?
¿ Qué ejemplo practico o real podria hacer uso de esta ventaja o se podria considerar más como una desventaja por parte de UNIX ?
14  Sistemas Operativos / GNU/Linux / STATUS de los procesos en: 7 Septiembre 2019, 19:00 pm
Durante la observacion de los resultados originados por el comando 'ps', observe que habia dos casos particulares que generan incognitas en cuanto a lo que implicaban:

1. Procesos que que tenian el STAT S. S Interruptible sleep (waiting for an event to complete)
Era generado cuando dentro de un proceso utilizaba el metodo SLEEP correspondiente a la SIGALRM.Sin embargo me surge la duda de que es lo que ocurre, el proceso es retirado de la cola de procesos listos para finalmente ser activado por el SO mediante una senal cuando su tiempo de 'dormir' ha sido completado? o permanece en la cola de procesos listos y cada vez que le toca una RAFAGA DE CPU verifica si su tiempo de 'dormir' ha terminado?

2. T Procesos que que tenian el STAT T . T Stopped, either by a job control signal or because it is being traced.
Generado mientras terminaba un proceso con CTRL + Z. correspondiente a la senal SIGTSTP que al buscar sobre ella me di cuenta que podia ser ignorada por el proceso y que simplemente lo manda a este estado sin matarlo. Esto que consecuencias puede tener? he visto que mediante el comando 'top' el proceso no aparece pero entonces me hace creer que minimamente es retirado de la cola de proceso listos pero sin embargo que incoveniente puede tener el tenerlo en este estado? Simplemente mayor consumo de memoria para guardar el registro de dicho proceso? o  acaso tampoco se liberan los recursos ocupados por dicho proceso


NOTA. Una disculpa por subir la entrada incompleta, se me cerro accidentalmente el navegador y se subio el tema incompleto al principio
15  Sistemas Operativos / GNU/Linux / Procesos vs Hilos en: 3 Septiembre 2019, 06:20 am
Buenas a todos, actualmente estoy revisando el libro de Sistemas Operativos , Silberschatz Galvin Gagne y me ha surgido una duda con referencia al uso que se le pueden dar tanto a los procesos como a los hilos. Entiendo el concepto tanto de hilos y procesos sin embargo no llego a entender la finalidad de poder crear varios procesos. Tal vez suene un poco tonto pero no he encontrado un ejemplo claro en donde vea una ventaja o necesidad de crear varios procesos dentro de una misma computadora y crear una linea de comunicacion entre ellos a la contraparte de generar hilos.

En el libro se enfoca mucho en el hecho de que los hilos son mas rapidos de construir en el sentido de que se encuentran dentro de un mismo proceso y pueden compartir facilmente informacion. Ademas se explica un poco como es posible sacarle provecho para que cada hilo pueda ser ejecutado por un nucleo distinto y que cada uno tenga una actividad especifica dentro del programa. Este concepto de poder utilizar varios nucleos y ejecutar varios hilos en paralelo con ayuda de varios nucleos es posible tambien con los procesos?, he leido que en linux todo (hilo,procesos) es tomado como proceso pero el mismo concepto se ve reflejado en sistemas de windows?.

Finalmente me gustaria saber  si alguien me podria proporcionar un ejemplo claro en el que es util tener varios procesos en paralelo en contraparte de por que no se podria hacer con hilos?. Me gustaria tener alguna referencia o guia que trate estos temas de una manera mas practica a traves del lenguaje C/C++ para reforzar la teoria, si alguien conoce alguna se lo agradeceria de antemano.

16  Sistemas Operativos / GNU/Linux / Determinacion de tiempo de rafaga de CPU en planificador de procesos en: 1 Septiembre 2019, 04:51 am
Buenas a todos. He estado viendo los diversos algoritmos de planificacion de procesos y he visto que algunos como el 'shortest job first' hacen uso del tiempo de rafa de CPU requerido por cada procesos para ordenarlos en una cola sin embargo mi pregunta es sobre ¿ como y en que momento se determina el tiempo de rafaga de CPU?. En simuladores entiendo que el tiempo es inventado y se simula la construccion de PCB's pero como determina el algoritmo real ¿ cual es el tiempo de rafaga de CPU necesario para cada proceso?. ¿ Acaso tiene una tabla de equivalencia para cada instruccion posible y hace el calculo conforme al codigo por ejecutar de dicho proceso?
17  Programación / Java / Mejor diseño para implementacion en Java. en: 17 Abril 2019, 07:42 am
Hola a todos tengo un problema un tanto sencillo pero que no sè cual de mis ideas sea las mas adecuada.

El problema se reduce a una parte en donde debo tener 2 tipos de directorios.
  • Directorio Empresarial.Almacenada contactos empresariales
  • Directorio Personal.Almacena contactos personales

Practicamente ambos directorios deben realizar los mismos mètodos solo con la diferencia de el tipo de contacto que almacena y algunas consultas que se realizan dentro de los métodos..
Nota.Existe una superclase que es padrede "Contacto Empresarial" y "Contacto Personal" que lleva como nombre "Contacto"

Mi primera solución planteaba crear una interfaz "Directorio" como la siguiente(hacen falta definir un par de metodos).

Pero no sé si esta esta es la manera más correcta de hacerlo, es decir, los argumentos y retornos de los métodos ya estan definidos en la la interfaz lo cual en cierta manera me hace pensar en como tratar los casos especiales de cada clase que lo implemente, es decir, en mi clase "Directorio Empresarial" yo quiero que sus metodos solo acepten como argumentos y constructor datos de tipo "Contacto Empresarial" pero al yo implementar una interfaz esta me esta definiendo argumentos como de tipo "Contacto" que podria provocar errores en algunos metodos por lo cual entonces seria necesario lanzar una exepcion si me envian como argumento un objeto de tipo "Contacto"en vez de uno de tipo "Contacto Empresarial" .... y en ese caso me hace pensar que tal vez mi diseño es erroneo o que no sè como diseñar este tipo de problemas.

Yo necesito definir estos dos tipos de directorios por que aunque realmente tiene los mismos mètodos yo requiero que algunos mètodos hagan la misma tarea pero ademas hagan una consulta especifica a una base de datos en el caso de que sea un directorio empresarial/personal va ser distinta la consulta.

Tengo idea de un segundo planteamiento donde defino una clase abstracta "Directorio " que tiene como atributo un objeto de tipo "Contacto" y los respectivos metodos y que las clases derivadas ("Directorio Empresarial" y "Directorio Personal") solo implementa esos metodos pero caigo en la misma duda. Un Directorio Empresarial al heredar de Directorio va tener como atributo un objeto Contacto que puede almacenar por herencia un Contacto Empresarial pero ¿ Yo debo exigir que a esta clase Directorio Personal solo se le pueda pasar objetos Contacto Empresarial aún cuando los métodos que hereda y sobrescribe de la clase Directorio permiten que se la pase un objeto de Contacto?. Yo podría pasar por alto esto debido a que estoy haciendo el programa y sé como puedo controlar que esta clase de error no suceda pero me da la sensación de que como buena practica las clases no se deben prestar para dejar huecos que puedan causar errores al ser reutilizadas.
18  Sistemas Operativos / Windows / Colapso de Windows por error en memoria. en: 12 Abril 2019, 06:27 am
Buenas a todos resulta que tengo una computadora con Windows 10 en la cual hasta hace un par de días funcionaba bien hasta que por descuido un día mi unidad de memoria donde tengo almacenado el sistema operativo se lleno... No le tome mucho caso y lo único que hice fue eliminar un par de archivos  que estoy seguro que no eran nada del sistema operativo si no que eran basura que yo tenía por ahí. Posterior a esto yo continue con la descarga de vmware y de una iso de kali hasta que llego el paso en el que quise descomprimir un archivo y al yo intentar abrir el programa que lo descomprimía windows dejo de responder.. Al cabo de unos minutos empece a reiniciar la pc y me tope con una hermosa pantalla Azul que mostraba como mensaje de error "Bad Config Info", he buscado posibles soluciones como restaurar los datos de la carpeta config y seguir algunos pasos que aconsejan los foros para dar solución a este tipo de problema sin llegar a ningun resultado.

Hasta el momento he intentado apoyar la solución desde una ISO en una memoria sin siquiera lograr que se arranque el sistema desde ahí( Ojo. Estoy seguro que la memoria tiene la ISO de manera correcta y ademas puse como prioridad la USB a la hora del arranque del sistema), ademas he intentado entrar en modo seguro consiguiendo el mismo error que siempre me ha marcado. ¿ De casualidad alguien tiene algun indicio de que podria ser?, no sé si el hecho de que estuviera instalando vmware y la iso de kali influyera en el error o que solo fuera simplemente el hecho de que se lleno la unidad de memoria donde estaba el sistema operativo. Quiero recalcar que el sistema operativo mostro fallas unos 15 minutos despues de que yo libere un espacio de la unidad de memoria.

Quiero agregar que dentro de las opciones que me aparece dentro de la pantalla azul tengo acceso a la CMD y he podido comprobar que me deje navegar por mis archivos y los del sistema operativo, en caso de que sea un error dado por un daño en la unidad de memoria del sistema ¿ Como podria darme cuenta que eso ?
19  Programación / Java / Diferente color para aristas y fondo de un polygon dentro de un panel en: 23 Noviembre 2018, 01:57 am
Buenas tardes,dias o noches,estoy haciendo un programita en el cual me he topado con un detalle a la hora de intentar dibujar un polygon en una JPanel en el cual quiero que el color de sus aristas sea totalmente configurable al igual que su fondo.He realizado un intento con el siguiente segmento de codigo:

Código
  1. //Coloca color de arista y dibuja figura
  2.                g.setColor(Color.BLACK);
  3.                g.drawPolygon(figura);
  4. //Coloca color de fondo y rellena la figura
  5.                g.setColor(Color.WHITE);
  6.                g.fillPolygon(figura);
  7.  

Nota.Para no extender mas el codigo la variable figura es de tipo Polygon.

El anterior codigo tambien lo he adaptado de manera muy similar para figuras sin vertices como un circulo.

Código
  1.  
  2. g.setColor(figu.getColorArista());
  3.                g.drawOval(figu.getCentro().x-radio,figu.getCentro().y-radio,radio*2,radio*2);
  4.                g.setColor(figu.getColorFondo());
  5.                g.fillOval(figu.getCentro().x-radio,figu.getCentro().y-radio,radio*2,radio*2);
  6.  
  7.  


Sin extender aún mas el programa....Mis resultados no han sido del todo buenos consiguiendo como resultado algo como lo siguiente:



Como se puede observar realmente se ve el cambio de color solo en ciertas orillas de la figura, esto depende de la forma de la figura.He pensado en hacer toda la figura del mismo color y despues simplemente trazar unas lineas que unieran todos los vertices con el color de las aristas de manera que se sobrepongan a la orilla de la figura.Les agradeceria si me compartieran una forma mas formal u otra forma distinta a la planteada que me pudiera dar solucion a este problema,gracias.
20  Programación / Java / Alinear un JLabel en un Panel en: 14 Noviembre 2018, 05:22 am
Buenos dias,estoy realizando la parte grafica de un programa y llevo rato atorado por querer acomodar varios JLabel mediante el metodo setAlignmentX.
En sintesis mi programa cuenta con varios paneles que para ser mas precisos son ordenados mediante un esquema BorderLayout, el panel en el que tengo problemas es en el panel del borde derecho.

El panel del borde derecho esta compuesto por principalmente dos paneles(Adjunto imagenes al final), este panel ordena a sus dos paneles hijos mediante un esquema BoxLayout en el eje Y ,mi problema se encuentra en estos dos paneles hijos.Ambos paneles hijos estan construidos de la misma manera mediante un esquema BoxLayout en el eje X, en ambos paneles tengo un JLabel llamado titulo que me representa el titulo del menu respectivamente , en ambos casos los paneles contienen otros paneles hijos que por el momento no he terminado sin embargo mi problema se encuentra en estos JLabel que representan los titulos de los menus los cuales quiero que esten alineados o pegados al borde izquiero de su respectivo Panel sin embargo no lo he conseguido con el metodo setAlignmentX.Tengo mis dudas si es por la manera en que estoy creando las ventanas o que simplemente el BoxLayout no me lo permite.De antemano agradezco sus aportes y adjunto el codigo e imagen de la interfaz grafica.

Clase de Contenedor Padre(Se encuentra en un BorderLayout en el borde derecho).

Código
  1. import java.awt.*;
  2. import javax.swing.*;
  3.  
  4. public class MenuOpcionesFiguras extends JPanel{
  5.    JPanel menuCrearFiguras;
  6.    JPanel menuBorrarFiguras;
  7.    JLabel titulo;
  8.  
  9.    public MenuOpcionesFiguras(){
  10.  
  11.        setLayout(new BoxLayout(this,BoxLayout.Y_AXIS));
  12.  
  13.        //Creacion de Paneles para menu de creacion de figuras, eliminacion de figuras,etc..
  14.        menuCrearFiguras = new MenuCrearFiguras();
  15.        menuCrearFiguras.setBorder(BorderFactory.createLineBorder(Color.black));
  16.        menuCrearFiguras.setBackground(new Color(255, 153, 51));
  17.  
  18.  
  19.        menuBorrarFiguras = new MenuBorrarFiguras();
  20.        menuBorrarFiguras.setBorder(BorderFactory.createLineBorder(Color.black));
  21.        menuBorrarFiguras.setBackground(new Color(102, 153, 255));
  22.  
  23.        titulo = new JLabel("Herramientas");
  24.        titulo.setFont(new Font("Arial",Font.BOLD+Font.ITALIC,14));
  25.        titulo.setAlignmentX(SwingConstants.CENTER);
  26.  
  27.  
  28.        //Agregado de componentes al Panel
  29.        add(titulo);
  30.       add(menuCrearFiguras);
  31.       add(menuBorrarFiguras);
  32.  
  33.  
  34.  
  35.  
  36.  
  37.    }
  38.  
  39.    @Override
  40.    public Dimension getPreferredSize(){
  41.        Dimension dimensionPadre = getParent().getSize();
  42.        return new Dimension((int)(dimensionPadre.getWidth()/5),(int)(dimensionPadre.getHeight()));
  43.  
  44.    }
  45.  
  46. }
  47.  
  48.  
  49.  

Clase un panel hijo (Se encuentra contenido en el JPanel de arriba)

Código
  1. import javax.swing.*;
  2. import javax.swing.SwingConstants;
  3.  
  4.  
  5.  
  6. import java.awt.event.*;
  7. import java.awt.*;
  8.  
  9. public class MenuCrearFiguras extends JPanel{
  10.  
  11.  
  12.    JPanel subMenuCrearFigura;
  13.    JLabel titulo;
  14.    JPanel botones;
  15.  
  16.  
  17.  
  18.    public MenuCrearFiguras(){
  19.  
  20.        setLayout(new BoxLayout(this,BoxLayout.Y_AXIS));
  21.  
  22.        //Declaracion de componentes
  23.        titulo =new JLabel("Crear Figuras");
  24.        titulo.setFont(new Font("Agency FB", Font.BOLD, 14));
  25.        titulo.setAlignmentX(LEFT_ALIGNMENT);
  26.  
  27.  
  28.  
  29.        botones = new BotonesCrearFiguras();
  30.       // botones.setAlignmentX(JPanel.LEFT_ALIGNMENT);
  31.  
  32.        add(titulo);
  33.        add(botones);
  34.  
  35.        //Agregar eventos a los componentes
  36.  
  37.  
  38.  
  39.  
  40.    }
  41.    @Override
  42.    public Dimension getPreferredSize(){
  43.        Dimension dimensionPadre = getParent().getSize();
  44.        return new Dimension((int)(dimensionPadre.getWidth()),(int)(dimensionPadre.getHeight()/2));
  45.    }
  46.  
  47.  
  48.  
  49. }
  50.  
  51.  


Clase contenida en el JPanel de la primera clase.En esta clase tambien se encuentra el problema con el posicionamiento del JLabel.

Código
  1.  
  2.  
  3. import javax.swing.*;
  4. import java.awt.*;
  5. import java.awt.event.*;
  6.  
  7.  
  8. public class MenuBorrarFiguras extends JPanel{
  9.    JPanel menuBorrarID;
  10.    JButton borrarPuntero;
  11.    JLabel titulo;
  12.  
  13.    public MenuBorrarFiguras(){
  14.        setLayout(new BoxLayout(this,BoxLayout.Y_AXIS));
  15.  
  16.        //Creacion de componentes
  17.        menuBorrarID = new MenuBorrarID();
  18.        //borrarPuntero = new JButton("Borrar con puntero");
  19.  
  20.        titulo =new JLabel("Borrar Figuras");
  21.        titulo.setFont(new Font("Agency FB", Font.BOLD, 14));
  22.        titulo.setAlignmentX(LEFT_ALIGNMENT);
  23.  
  24.  
  25.  
  26.  
  27.  
  28.        //Agregado de elementos al panel
  29.        add(titulo);
  30.        add(menuBorrarID);
  31.        //add(borrarPuntero);
  32.  
  33.  
  34.        //Agregado de eventos a los componentes
  35.  
  36.    }
  37.  
  38.  
  39.    public Dimension getPreferredSize(){
  40.        Container padre =  getParent();
  41.        Dimension dimensionPadre = padre.getSize();
  42.        return new Dimension((int)dimensionPadre.getWidth(),(int)(dimensionPadre.getHeight()/2));
  43.    }
  44.  
  45. }
  46.  


Finalmente una foto de la parte de la Interfaz Grafica donde tengo problemas con los titulos


Páginas: 1 [2] 3
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines