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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


  Mostrar Temas
Páginas: [1] 2 3
1  Programación / Java / NullPointerException al abrir ventana en: 6 Diciembre 2015, 04:23 am
Hola, buen día.

He buscado un poco acerca del error y todo apunta a que en alguna parte del código deberia haber un objeto pero se encuentra con un null y la aplicación truena.

La aplicación es muy sencilla y se pueden agregar autores a una base de datos en Derby, hay un boton que abre una ventana para dar de alta un Folder, y cada folder tiene asociado un Autor. Para poder dar de alta un Folder es necesario escribir el nombre del folder y despues el usuario da click en un boton que dice buscar, el boton debería abrir una ventana donde despliega la lista de autores que previamente hemos agregado, entonces se selecciona uno y se puede dar de alta un Folder.

El problema es que al dar click en buscar autor la aplicación falla y aparece el siguiente mensaje:
Código:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at mx.uam.ayd.negocio.ControlAgregarFolder.buscarAutor(ControlAgregarFolder.java:31)
at mx.uam.ayd.presentacion.VentanaAltaFolder$1.actionPerformed(VentanaAltaFolder.java:114)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6525)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6290)
at java.awt.Container.processEvent(Container.java:2234)
at java.awt.Component.dispatchEventImpl(Component.java:4881)
at java.awt.Container.dispatchEventImpl(Container.java:2292)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
at java.awt.Container.dispatchEventImpl(Container.java:2278)
at java.awt.Window.dispatchEventImpl(Window.java:2750)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Anteriormente teniamos la misma aplicacion pero las clases se llamaban Libros, solamente ajustamos los nombre y quitamos un campo que no necesitamos y al correr la aplicación esta fallando. El flujo es mas o menos el siguiente:

EL boton que dispara la accion para desplegarla ventana con autores es el siguiente:
Código
  1. /**
  2. * This method initializes jButtonBuscarAutor
  3. *
  4. * @return javax.swing.JButton
  5. */
  6. private JButton getJButtonBuscarAutor() {
  7.    if (jButtonBuscarAutor == null) {
  8.        jButtonBuscarAutor = new JButton();
  9.        jButtonBuscarAutor.setBounds(new Rectangle(347, 120, 86, 40));
  10.        jButtonBuscarAutor.setText("Buscar");
  11.        jButtonBuscarAutor.addActionListener(new java.awt.event.ActionListener() {
  12.            public void actionPerformed(java.awt.event.ActionEvent e) {
  13.                autor = control.buscarAutor();
  14.                if(autor != null) {
  15.                jLabelNombreAutor.setText(autor.toString()); //Muestra el nombre del autor actualmente seleccionado
  16.                }
  17.            }
  18.        });
  19.    }
  20.    return jButtonBuscarAutor;
  21. }

Y la clase control tiene el siguiente código:
Código
  1. public class ControlAgregarFolder {
  2. private DAOFolder DAOFolders;//libreria
  3. private DAOAutor DAOautores;
  4. private VentanaAltaFolder VentanaFolder;
  5.  
  6. public ControlAgregarFolder(DAOFolder DAOFolders, DAOAutor autores) {
  7.    this.DAOFolders = DAOFolders;
  8.    this.DAOautores = autores;
  9. }
  10.  
  11. public void inicia() {
  12.    VentanaFolder = new VentanaAltaFolder(this);
  13.    VentanaFolder.setVisible(true);
  14. }
  15.  
  16. public Autor buscarAutor() {
  17. //En la siguiente linea el programa esta fallando, cuando ejecuta DAOautores.dameAutores()
  18.    Autor arregloAutores[] = DAOautores.dameAutores(); // Obtiene lista de autores
  19.    DialogoSeleccionAutor dialogo = new DialogoSeleccionAutor(new JFrame(),arregloAutores);
  20. // Crea el dialogo con la lista de autores
  21.    dialogo.setVisible(true); // Muestra el dialogo
  22.    return dialogo.getAutorSeleccionado(); // Regresa el autor seleccionado en el dialogo
  23. }
  24.  
  25. public void agregarFolder(String nombre, Autor autor, String ruta) {
  26.    DAOFolders.agregaFolder(new Folder(nombre,autor,ruta));
  27. }
  28. }

Y donde se supone que esta fallando es en la linea que hace referencia al DAOAutor cuyo codigo es:
Código
  1. public Autor[] dameAutores() {
  2. ArrayList <Autor> autoresTemp = new ArrayList <Autor>();
  3. try {
  4. // Crea el statement
  5. Statement statement = ManejadorBD.dameConnection().createStatement();
  6. // Recibe los resutados
  7. ResultSet rs = statement.executeQuery("SELECT * FROM Autores");
  8. while(rs.next())
  9. {
  10. // Crea una nueva instancia del objeto
  11. Autor autor = new Autor(rs.getString("nombre"),rs.getString("apellido"));
  12. autoresTemp.add(autor);
  13. }
  14. Autor autoresTempArreglo[]=new Autor[autoresTemp.size()];
  15. autoresTemp.toArray(autoresTempArreglo);
  16. return autoresTempArreglo;
  17. } catch (SQLException e) {
  18. // TODO Auto-generated catch block
  19. e.printStackTrace();
  20. return null;
  21. }
  22. }

edito: conseguimos resolver el problema comenzando desde cero, no supe porque daba el error.  En los DAO algunos métodos regresaban null si fallaba algo en la conexion o las sentencias de SQL, imaginé que por ahi estaba el problema.

Saludos
2  Sistemas Operativos / GNU/Linux / Ayuda al instalar SPICE Opus en: 21 Junio 2015, 00:28 am
Hola, quiero instalar SPICE Opus en ubuntu y en el sitio oficial dice cómo hacerlo, he seguido los pasos pero estoy atorado en la ultima parte que dice así:

Citar
Setting up the environment
We shall assume that you are using BASH. Add the following two lines to /etc/profile
(you must be root in order to be able to do it).
OPUSHOME=INSTALL_PREFIX
export OPUSHOME
where INSTALL_PREFIX is the tree where you installed Spice Opus.
It is also convenient if you add INSTALL_PREFIX/bin to your path.
Add the following two lines at the end of /etc/profile
PATH=$PATH:$OPUSHOME/bin
export PATH
Log out and log in again for the changes to take effect.

No tengo idea de como hacer eso, como tal no tengo el directorio etc/profile mas bien dice etc/profile.d y en la carpeta hay dos archivos bash_completion.sh, vte.sh, esas dos lineas que indica el tutorial no se donde agregarlas.

En usr/local me aparecen las carpetas bin, lib, src donde hay archivos de SPICE que instaló previamente pero en la parte final no se que hacer.

Alguien me podria ayudar?
3  Programación / Java / Programa no entra a ciclo for en: 6 Junio 2015, 22:17 pm
Hola a todos tengo dos ciclos anidados pero al compilar, el ciclo con el indice j no lo esta ejecutando. Error es una variable booleana y mientras la matricula coincida con otro registro sera true.
Lo mas extraño de todo es que sí permite ingresar la matricula pero nunca entra al ciclo
. Estuve imprimiendo las variables e incluso mensajes aleatorios para ver hasta donde sí corre el programa y el ciclo for con índice j nunca lo hace.

Me podrian dar alguna pista?? :huh:
Código
  1. for(i=0;i<10;i++) {
  2.  
  3.            carros[i] = new Barato();
  4.            //El usuario ingresa varios datos... lo importante es validar que ningun automovil tiene la misma matricula.
  5.  
  6.            System.out.print("Matricula: ");
  7.            do {
  8.                error = false;
  9.                carros[i].setMatricula(scanStr.nextLine());
  10.                for(j=0; j<(i-1); j++) {
  11.                    if( carros[i].getMatricula().equals(carros[j].toString() ) ) {
  12.                        error = true;
  13.                        j = i;
  14.                    }
  15.                }
  16.            } while(error);  
  17.            System.out.println("Usted ha ingresado:\n" + carros[i].getMarca() +" "+ carros[i].getModelo()+ " color " + carros[i].getColor() +  ", precio: " + carros[i].getPrecio() + ", matricula: " + carros[i].getMatricula());
  18.        }
4  Informática / Electrónica / Circuito Electrico y comportamiento de Fuentes en: 31 Mayo 2015, 02:24 am
Hola que tal, estuvimos probando el esquema de circuito de la figura pero no logramos medir los valores que arroja la simulacion en SPICE. Los voltajes medidos no cumplen la ley de Kirchhoff para un lazo cerrado. Armamos en la tablilla de acuerdo al diagrama y las fuentes constantemente modificaban sus valores, al querer reajustar por ejemplo la fuente de 3v se modificaba la de 4v y viceversa. ¿Alguien sabe por qué ocurre esto?

Si aumentamos la corriente tambien lo hace el voltaje y este fenomeno ya no ocurre, pero si conservamos los valores originales de 5v, 4v y 3v para cada una de las fuentes el circuito se comporta muy raro. No tenemos posibilidad de cambiar algun elemento, debemos medir las tensiones y corrientes  como lo indica el diagrama. Sospechaba que debiamos cambiar la polaridad de alguna fuente pero ya no pudimos probarlo



HIPOTESIS 1: La fuente de 5v alimenta a la de 3v por la manera en que están conectadas, la corriente que entra en el nodo 4 proveniente de la fuente de 5v se divide en dos caminos, el primero con una resistencia de 1.2k y el otro con una resistencia de 0 Ohms, entonces la corriente tiene mayor libertar de flujo si se va por la terminal de la fuente de 3 Volts

Les dejo la simulación en Spice Opus, no medi las corrientes, preferí aplicar Ley de Ohm para encontrar los valores, creo que con esos voltajes basta. Sigo pensando si es posible medir los valores de la simulación sin modificar las fuentes.

Código:
Practica Circuitos Electricos

v1 1 0 dc=4
r1 2 1 1.2k
r2 1 3 330
r3 0 3 1.2k
r4 2 0 330
v2 2 4 dc=5
r5 0 4 1.2k
v3 3 4 dc=3
.control
op

print v(1),v(2),v(3),v(4)

.endc
.end
5  Programación / Scripting / [Bash Script] Imprimir información de PC en: 15 Mayo 2015, 05:25 am
Hola, en esta ocasión inicio con Bash Script en Ubuntu y estoy teniendo problemas para filtrar información e imprimir solo ciertos datos relativos al CPU, cores, memoria cache, ram, etc. La información está en los comandos:

Código
  1. cat /proc/cpuinfo
  2. lscpu

Para eso utilizo la siguiente sentencia y funciona:

Código
  1. cat /proc/cpuinfo | grep "processor" | awk '{print $1 $3}'

Pero cuando quiero hacer lo mismo para el comando lscpu imprime información extra "NUMAnode0"

Código
  1. lscpu | grep "CPU(s):" | awk '{print $1 $2}'

Código:
CPU(s):4
NUMAnode0


man lscpu hace referencia a la opción -p,--parse [=LIST], ¿Cómo puedo personalizar con una lista pero en formato normal, es decir imprimir del renglon CPU(s) hasta el renglon Socket(s)?
Encontre en la red que anteriormente se usaba -e,--extended [=LIST] pero esa opción ya no es valida no me la acepta. Saludos  :huh:
6  Programación / PHP / Agregar entradas a base de datos en: 7 Abril 2015, 06:47 am
Hola, estoy trabajando con unas plantillas y  necesito modificarlas pero mi conocimiento de php es nulo. La página despliega una tabla con distintos productos, entonces hay un checkbox para comprar, al hacer click redirecciona a otra página.

Me gustaria que cuando alguien de click en comprar se ejecutara un INSERT into TABLA values(...).
Tengo otro archivo con un formulario y quise copiar la parte donde hace los inserts into pero las estructuras de ambos archivos son diferentes y no se aquí como introducir las sentencias para que se agreguen entradas a la base de datos.

Si alguien me puede orientar al respecto se los agradeceré.
Código
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>Articulos</title>
  6. <style type="text/css">
  7. .titulo {
  8. font-family: Tahoma, Geneva, sans-serif;
  9. font-size: 24pt;
  10. color: #09F;
  11. }
  12. .titulo {
  13. color: #C00;
  14. }
  15. .encabezado1 {
  16. font-family: Georgia, "Times New Roman", Times, serif;
  17. font-weight: bold;
  18. font-size: 16pt;
  19. }
  20. .bienvenida {
  21. font-family: "Palatino Linotype", "Book Antiqua", Palatino, serif;
  22. font-style: italic;
  23. color: #933;
  24. }
  25. </style>
  26. <script src="SpryAssets/SpryValidationCheckbox.js" type="text/javascript"></script>
  27. <link href="SpryAssets/SpryValidationCheckbox.css" rel="stylesheet" type="text/css" />
  28. </head>
  29.  
  30. <body>
  31. <h1 align="center" class="titulo"><img src="images/header-object.png" width="879" height="88" alt="logo" /> </h1>
  32. <h1 align="center" class="titulo">Itianguis</h1>
  33. <p>&nbsp;</p>
  34. <p class="encabezado1">LISTA DE ARTICULOS</p>
  35. <p>&nbsp;</p>
  36. <p class="bienvenida">Bienvenido estos son los articulos que tenemos disponibles para ti
  37. </p>
  38. <table width="881" border="1">
  39.  <tr>
  40.    <td width="293">Imagen del articulo</td>
  41.    <td width="107">ID del articulo</td>
  42.    <td width="75">Costo</td>
  43.    <td width="255">Descripcion</td>
  44.    <td width="117">Comprar</td>
  45.  </tr>
  46.  <tr>
  47.    <th><img src="images/productos/asha 303.jpg" alt="asha" name="asha" width="225" height="225" id="asha" /></th>
  48.    <td>Asha_303</td>
  49.    <td>$1200</td>
  50.    <td>Smartphone listo para comunicarte cuenta con sistema propio. watsaap, camara de 3 megapixeles</td>
  51.    <th><label><a href="compraexitosa.php"><span id="sprycheckbox1">
  52.      <input type="checkbox" name="checkbox1" id="checkbox1" />
  53.      <span class="checkboxRequiredMsg">Realice una selección.</span></span>Comprar</a></label>
  54.    <label for="compra">      </label></th>
  55.  </tr>
  56.  <tr>
  57.    <td><img src="images/productos/galaxy s3.jpg" width="194" height="224" alt="galaxy" /></td>
  58.    <td>GalaxyS3</td>
  59.    <td>$3000</td>
  60.    <td>Nuevo samsung galaxy S3mini con android 4.2 camara de 3 megapixeles y nuevas aplicaciones</td>
  61.    <td><label><a href="compraexitosa.php"><span id="sprycheckbox2">
  62.      <input type="checkbox" name="checkbox2" id="checkbox2" />
  63.    <span class="checkboxRequiredMsg">Realice una selección.</span></span>Comprar</a></label></td>
  64.  </tr>
  65.  <tr>
  66.    <td><img src="images/productos/galaxy fame.jpg" width="275" height="183" alt="fame" /></td>
  67.    <td>Galaxy_fame</td>
  68.    <td>$1500</td>
  69.    <td>Galaxy fame cuenta con sistema android camara de 2 megapixeles</td>
  70.    <td><label><a href="compraexitosa.php"><span id="sprycheckbox4">
  71.      <input type="checkbox" name="checkbox4" id="checkbox4" />
  72.    <span class="checkboxRequiredMsg">Realice una selección.</span></span>Comprar</a></label></td>
  73.  </tr>
  74.  <tr>
  75.    <td><img src="images/productos/lumia 900.jpg" width="281" height="171" alt="lumia" /></td>
  76.    <td>Lumia</td>
  77.    <td>$3500</td>
  78.    <td>Nuevo Nokia Lumia con sistema windows Phone cuenta con whatsapp correo electronico y muchas aplicaciones mas</td>
  79.    <td><a href="compraexitosa.php"><span id="sprycheckbox5">
  80.      <input type="checkbox" name="checkbox5" id="checkbox5" />
  81.    <span class="checkboxRequiredMsg">Realice una selección.</span></span>Comprar</a></td>
  82.  </tr>
  83.  <tr>
  84.    <td><img src="images/productos/pavilon dv4.jpg" width="303" height="204" alt="pavilon" /></td>
  85.    <td>Pavilon</td>
  86.    <td>$5000</td>
  87.    <td>Lap top HP pavilon procesador core i3 ram 4GB DD 500 GB OS Windows 7 Home Basic</td>
  88.    <td><a href="compraexitosa.php"><span id="sprycheckbox6">
  89.      <input type="checkbox" name="checkbox6" id="checkbox6" />
  90.    <span class="checkboxRequiredMsg">Realice una selección.</span></span>Comprar</a></td>
  91.  </tr>
  92.  <tr>
  93.    <td><img src="images/productos/pavilon dv7.jpg" width="189" height="159" alt="pavilon1" /></td>
  94.    <td>Pavilon_dv7</td>
  95.    <td>$6000</td>
  96.    <td>Lap top HP pavilon dv7procesador core i3 ram 3GB DD 500 GB OS Windows 7 Home Premium</td>
  97.    <td><a href="compraexitosa.php"><span id="sprycheckbox7">
  98.      <input type="checkbox" name="checkbox7" id="checkbox7" />
  99.    <span class="checkboxRequiredMsg">Realice una selección.</span></span>Comprar</a></td>
  100.  </tr>
  101.  <tr>
  102.    <td><img src="images/productos/pavilon dv600.jpg" width="282" height="179" alt="pav" /></td>
  103.    <td>Pavilon_dv600</td>
  104.    <td>$5500</td>
  105.    <td>Lap top HP pavilon procesador pentium dual core ram 2GB DD 500 GB OS Windows 7 Home Premium</td>
  106.    <td><a href="compraexitosa.php"><span id="sprycheckbox8">
  107.      <input type="checkbox" name="checkbox8" id="checkbox8" />
  108.    <span class="checkboxRequiredMsg">Realice una selección.</span></span>Comprar</a></td>
  109.  </tr>
  110.  <tr>
  111.    <td><img src="images/productos/toshiba satelite.jpg" width="270" height="186" alt="toshiba" /></td>
  112.    <td>Toshiba</td>
  113.    <td>$6000</td>
  114.    <td>Lap top Toshiba Satellite procesador core i5 ram 4GB DD 500 GB OS Windows 7 Home Premium</td>
  115.    <td><a href="compraexitosa.php"><span id="sprycheckbox9">
  116.      <input type="checkbox" name="checkbox9" id="checkbox9" />
  117.    <span class="checkboxRequiredMsg">Realice una selección.</span></span>Comprar</a></td>
  118.  </tr>
  119.  <tr>
  120.    <td><img src="images/productos/toshiba.jpg" width="262" height="192" alt="toshi" /></td>
  121.    <td>Toshiba_Sate</td>
  122.    <td>$7000</td>
  123.    <td>Lap top Toshiba Satellite procesador core i5 ram 4GB DD 500 GB OS Windows 7 Profesional</td>
  124.    <td><a href="compraexitosa.php"><span id="sprycheckbox10">
  125.      <input type="checkbox" name="checkbox10" id="checkbox10" />
  126.    <span class="checkboxRequiredMsg">Realice una selección.</span></span>Comprar</a></td>
  127.  </tr>
  128.  <tr>
  129.    <td><img src="images/productos/Toshiba1.jpg" width="261" height="170" alt="tosii" /></td>
  130.    <td>Toshiba_sat</td>
  131.    <td>$9250</td>
  132.    <td>Lap top Toshiba Satellite procesador core i7 ram 4GB DD 500 GB OS Windows 7 Profesional</td>
  133.    <td><a href="compraexitosa.php"><span id="sprycheckbox11">
  134.      <input type="checkbox" name="checkbox11" id="checkbox11" />
  135.    <span class="checkboxRequiredMsg">Realice una selección.</span></span>Comprar</a></td>
  136.  </tr>
  137. </table>
  138. <p class="bienvenida">&nbsp;</p>
  139. <script type="text/javascript">
  140. var sprycheckbox1 = new Spry.Widget.ValidationCheckbox("sprycheckbox1");
  141. </script>
  142. </body>
  143. </html>
  144.  
7  Programación / Programación C/C++ / [?] OpenMP Candados y secciones en: 19 Febrero 2015, 01:23 am
Hola, tengo el siguiente programa donde servidor genera números y cliente imprime los datos recibidos, es decir, el cliente emite una petición, el servidor la lee, genera un numero y lo regresa al cliente, este ultimo lee el dato recibido.

Código
  1. #include <omp.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #define NHILOS 2
  5.  
  6. void servidor();
  7. void cliente();
  8. int produce(int pet);
  9. void lee(int prod);
  10.  
  11. int pet=0, prod=0;
  12. omp_lock_t C1; //Candado Servidor
  13. omp_lock_t C2; //Candado Cliente
  14.  
  15. int main (int argc, char *argv[])
  16. {
  17.   int id;
  18.   srand (time(NULL));
  19.   omp_init_lock(&C1);
  20.   omp_init_lock(&C2);
  21.   omp_set_lock(&C1);
  22.   omp_set_lock(&C2);  
  23.   omp_set_num_threads(NHILOS);
  24.   #pragma omp parallel sections shared(pet,prod)
  25. {
  26. #pragma omp section
  27. {
  28.  printf(" Serv_id: %d\n",omp_get_thread_num());
  29.  servidor();
  30. }
  31. #pragma omp section
  32. {
  33.  printf("Clie_id: %d\n",omp_get_thread_num());
  34.  cliente();
  35. }
  36. }
  37.  
  38.   return 0;
  39. }
  40.  
  41. void servidor()
  42. {
  43. while(1)
  44. {
  45. omp_set_lock(&C1);
  46. prod = produce(pet);
  47. omp_unset_lock(&C2);
  48. }
  49. }
  50.  
  51. void cliente()
  52. {
  53. while(1)
  54. {
  55. pet = rand()%3;
  56. printf("Cliente genera la peticion: %d\n",pet);
  57. omp_unset_lock(&C1);
  58. omp_set_lock(&C2);
  59. lee(prod);
  60. sleep(2);
  61. }
  62. }
  63.  
  64.  
  65. int produce(int pet)
  66. {
  67. printf("Procesando petición: %d\n",pet);
  68. prod++;
  69. return prod;
  70. }
  71.  
  72. void lee(int prod)
  73. {
  74. printf("El servidor envia el producto: %d\n",prod);
  75. }

¿Cómo puedo implementar N clientes y 1 servidor? Ahora se tienen N tareas cliente() y un solo servidor que queda en espera de peticiones de algún cliente.¿Cómo creo las N tareas, sin mas con N hilos?

Ahora se tienen 3 candados: Cliente, Petición y Servidor y la funcion cliente es mas o menos asi:
 
Código
  1. void cliente()
  2. {
  3. while(1)
  4. {
  5. omp_set_lock(&C3); //Peticion
  6. pet = rand()%3;
  7. printf("Cliente genera la peticion: %d\n",pet);
  8. omp_unset_lock(&C1); //Servidor
  9. omp_set_lock(&C2); //Cliente
  10. lee(prod);
  11. omp_unset_lock(&C3)
  12. sleep(2);
  13. }
  14. }

Ya tengo las partes solo que no se como conectarlas, saludos!!
8  Programación / Programación General / Conceptos de Programación Concurrente en: 25 Enero 2015, 03:17 am
Hola resumo un poco de información que he encontrado, esperando que sea leida y corregida:

Concurrencia: Varias tareas se ejecutan de forma simultanea, compartiendo los recursos disponibles segun sea el caso. Se utiliza la asignación de tiempos alternando entre distintas tareas que ocurren todas a la vez.

Un programa concurrente es un conjunto de tareas secuenciales ejecutadas en paralelismo abstracto o real y puede incrementar la velocidad, eficiencia, desempeño y tiempo de respuesta adaptándose a situaciones multitarea.

La programación concurrente  se puede clasificar por la forma en que se ejecuta en:
     - Multiprogramación (se cuenta con un solo procesador)
     - Programacion paralela (multiprocesador o multicomputadora)
     - Programación distribuida (red de estaciones de trabajo)

La asignación de tiempos se llama time-slicing.
La multiprogramación es un paralelismo abstracto porque el procesador asigna recursos a cada tarea.
En un paralelismo real el programa concurrente corre en una maquina con mas de un procesador (multicore)

saludos!
9  Programación / Programación General / Programación Concurrente (Intro) en: 26 Diciembre 2014, 22:42 pm
Hola, quisiera consultar cons ustedes algunos detalles generales sobre programación concurrente. El programa del curso abarca:

- Conceptos básicos.
- Procesos e hilos.
- Modelo de programación de memoria compartida (sincronización, candados, semaforos, barreras)
- Modelo de programación de paso de mensajes.

Para empezar tengo el libro: M. Ben-Ari, Principles of concurrent and distributed programming pero poco he entendido la verdad.

Conozco nada respecto al tema y he encontrado poco, sería bueno que alguien pudiese comentar información al respecto.

¿Es lo mismo Programación concurrente a programación en paralelo?

saludos!
10  Programación / Programación C/C++ / [C] Llenar arreglo con recursividad en: 4 Noviembre 2013, 19:31 pm
Hola, he buscado información sobre recursividad pero en su mayoria son algoritmos de busqueda y ordenamiento, debo crear un arreglo de tamaño n e imprimirlo en pantalla de modo que forme un rectangulo, es decir, si el usuario elige 4, el resultado es:

1 1 1 1
1 1 1 2
1 1 2 3
1 2 3 4


Cada elemento se guarda en el arreglo de forma recursiva, cómo funciona esto?.

Poco he hecho con recursividad y estoy mas acostumbrado a trabajar con iteraciones, en este caso se me ha ocurrido trabajar con ciclos for() para ir procesando renglon por renglon pero no es recursividad.

   1. Si la funcion se llama a si misma el arreglo se crea dentro o fuera de la funcion? es local o global?
   2. Puedo reservar espacio dinamico para el arreglo del tamaño que indica el usuario? es decir:
Código
  1. x = malloc(sizeof(int) * n);
   3. Al llamar a la función el arreglo se pasa como parametro? si es que se crea fuera de la funcion
   
Mi problema es desarrollar el algoritmo para guardar la secuencia de numeros , por favor si alguien me puede orientar se lo agradeceré.

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