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 Mensajes
Páginas: 1 ... 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 [37] 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 ... 137
361  Programación / Java / Re: Como cambiar el fondo de un JTable en: 30 Agosto 2013, 20:04 pm
Dudo que no funcione, es el blog de Leyer el moderador de este subforo... algo debes hacer mal.

Edito:
Acabo de probar el código y funciona a la perfección.
Puede que sea el formato de imagen, el tamaño o la ruta lo que tienes incorrecto.

Saludos.
362  Programación / Java / [Aporte] Shutdown en diferentes Plataformas. en: 30 Agosto 2013, 19:58 pm
JDShutdown v1
Descripción: Aplicación que permite establecer una hora y apagar el sistema una vez transcurrido el tiempo.
Autor: 1mpuls0

Entorno de desarrollo
IDE: Netbeans 7.01
JDK: 1.7.0
SO: Windows 7

Plataformas de prueba
Windows
Linux
Mac

Estoy tratando de mejorar y optimizar el código, solo se utilizan librerías propias de java.
Cualquier sugerencia o recomendación es bienvenida, así como también si tienen dudas pueden consultarlo.

Clase: JDShutdown
Código
  1. /*
  2.  * Autor: 1mpuls0
  3.  */
  4. package projects;
  5.  
  6. import javax.swing.JFrame;
  7. import javax.swing.JPanel;
  8. import javax.swing.WindowConstants;
  9. import javax.swing.JOptionPane;
  10. import javax.swing.JLabel;
  11. import javax.swing.JButton;
  12. import javax.swing.JTextField;
  13. import java.awt.event.ActionListener;
  14. import java.awt.event.ActionEvent;
  15. import javax.swing.BorderFactory;
  16. import java.awt.Font;
  17. import java.awt.FlowLayout;
  18. import java.awt.BorderLayout;
  19. import java.awt.event.WindowAdapter;
  20. import java.awt.event.WindowEvent;
  21. import java.util.logging.Level;
  22. import java.util.logging.Logger;
  23. import java.awt.event.KeyListener;
  24. import java.awt.event.KeyEvent;
  25. import java.util.Date;
  26.  
  27. import projects.date.DateTime;
  28. import projects.actions.Shutdown;
  29.  
  30. import java.util.regex.Matcher;
  31. import java.util.regex.Pattern;
  32.  
  33. public class JDShutdown extends JFrame implements KeyListener, ActionListener  {
  34.  
  35.    private JPanel panelPrincipal;
  36.    private JPanel panelCurrentDate;
  37.    private JLabel labelCurrentDate;
  38.    private JPanel panelLastDate;
  39.    private JTextField textFieldDate;
  40.    private JTextField textFieldTime;
  41.    private JButton buttonStart;
  42.    private JButton buttonCancel;
  43.    private JPanel panelActions;
  44.    private DateTime date;
  45.    private Shutdown threadShutdown;
  46.  
  47.  
  48.    public static void main(String args[]) {
  49.        JDShutdown jds = new JDShutdown();
  50.        jds.setVisible(true);
  51.        jds.setLocationRelativeTo(null);
  52.    }
  53.  
  54.    public JDShutdown() {
  55.        panelPrincipal = new JPanel();
  56.        panelCurrentDate = new JPanel();
  57.        labelCurrentDate = new JLabel();
  58.        panelLastDate = new JPanel();
  59.        textFieldDate = new JTextField();
  60.        textFieldTime = new JTextField();
  61.        panelActions = new JPanel();
  62.        buttonStart = new JButton();
  63.        buttonCancel = new JButton();
  64.        date = new DateTime();
  65.  
  66.  
  67.        setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
  68.        setTitle("JDShutdown V1");
  69.        getContentPane().setLayout(new FlowLayout());
  70.        setResizable(false);
  71.  
  72.        panelPrincipal.setLayout(new BorderLayout());
  73.  
  74.        panelCurrentDate.setBorder(BorderFactory.createTitledBorder("Fecha y hora de inicio"));
  75.  
  76.        labelCurrentDate.setFont(new Font("Tahoma", 0, 24));
  77.        panelCurrentDate.add(labelCurrentDate);
  78.  
  79.        panelPrincipal.add(panelCurrentDate, BorderLayout.PAGE_START);
  80.  
  81.        panelLastDate.setBorder(BorderFactory.createTitledBorder("Fecha y hora de apagado"));
  82.  
  83.        textFieldDate.setColumns(10);
  84.        textFieldDate.setText(date.getCurrentDate().substring(0, 10));
  85.        textFieldDate.addKeyListener(this);
  86.  
  87.        textFieldTime.setColumns(10);
  88.        labelCurrentDate.setText("--/--/---- --:--");
  89.        textFieldTime.addKeyListener(this);
  90.  
  91.        panelLastDate.add(textFieldDate);
  92.        panelLastDate.add(textFieldTime);
  93.        //addDateMask();
  94.  
  95.        panelPrincipal.add(panelLastDate, BorderLayout.CENTER);
  96.  
  97.        panelActions.setBorder(BorderFactory.createTitledBorder("Acciones"));
  98.  
  99.        buttonStart.setText("Iniciar");
  100.        buttonStart.addActionListener(this);
  101.        panelActions.add(buttonStart);
  102.  
  103.        buttonCancel.setText("Cancelar");
  104.        buttonCancel.addActionListener(this);
  105.        buttonCancel.setEnabled(false);
  106.        panelActions.add(buttonCancel);
  107.  
  108.        panelPrincipal.add(panelActions, BorderLayout.PAGE_END);
  109.  
  110.        getContentPane().add(panelPrincipal);
  111.  
  112.        addWindowListener(new AppAdapter());
  113.  
  114.        pack();
  115.    }
  116.  
  117.    private void exit() {
  118.        try {
  119.            int salida = JOptionPane.showConfirmDialog(null, (char)191+"Desea salir?", "Salida", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
  120.            if(salida == JOptionPane.YES_OPTION) {
  121.                setVisible( false );
  122.                dispose();
  123.                System.exit(0);
  124.            }
  125.        } catch(NullPointerException npe) {
  126.            Logger.getLogger(getClass().getName()).log(
  127.            Level.ALL, "Error...", npe);
  128.        }
  129.    }
  130.  
  131.    public void actionPerformed(ActionEvent evt) {
  132.        Object src = evt.getSource();
  133.        if (src == buttonStart) {
  134.            String lastDate = textFieldDate.getText();
  135.            textFieldTime.setText(date.completeTime(textFieldTime.getText()));
  136.            String lastTime = textFieldTime.getText();
  137.  
  138.            if(date.isDateValid(lastDate)) {
  139.                if(date.isTimeValid(lastTime)) {
  140.                    Date currentDateTime = date.getCurrentDateTime();
  141.                    Date lastDateTime = date.stringToDate(lastDate + " " + lastTime);
  142.                    long milisecondsOfDifference = date.differenceTime(currentDateTime, lastDateTime);
  143.                    if(milisecondsOfDifference > 6000 ) {
  144.                        labelCurrentDate.setText(String.valueOf(date.getCurrentDate()));
  145.                        buttonStart.setEnabled(false);
  146.                        buttonCancel.setEnabled(true);
  147.                        textFieldTime.setEditable(false);
  148.                        threadShutdown = new Shutdown(milisecondsOfDifference);
  149.                    } else {
  150.                        labelCurrentDate.setText("--/--/---- --:--");
  151.                        JOptionPane.showMessageDialog(null, "Verifica la hora.\n Coloca una hora con minimo un minuto de diferencia mas a la hora actual.", "Hora no valida", JOptionPane.WARNING_MESSAGE);
  152.                    }
  153.                }else {
  154.                    labelCurrentDate.setText("--/--/---- --:--");
  155.                    JOptionPane.showMessageDialog(null, "Verifica la hora", "Hora no valida", JOptionPane.ERROR_MESSAGE);
  156.                }
  157.            } else {
  158.                labelCurrentDate.setText("--/--/---- --:--");
  159.                JOptionPane.showMessageDialog(null, "Verifica la fecha", "Fecha no valida", JOptionPane.ERROR_MESSAGE);
  160.            }
  161.  
  162.        } else if (src == buttonCancel) {
  163.            threadShutdown.stop();
  164.            buttonStart.setEnabled(true);
  165.            buttonCancel.setEnabled(false);
  166.            textFieldTime.setEditable(true);
  167.        }
  168.    }
  169.  
  170.    public void keyTyped(KeyEvent evt) {
  171.        Object src = evt.getSource();
  172.        char caracter = evt.getKeyChar();
  173.        if (src == textFieldDate) {
  174.            if( ((caracter < '0') ||(caracter > '9')) && (caracter != '/') || textFieldDate.getText().length()== 10 )
  175.                evt.consume();
  176.            if((textFieldDate.getText().length()==2 || textFieldDate.getText().length()==5) && (caracter != '/'))
  177.                evt.consume();
  178.        } else if(src == textFieldTime) {
  179.            if( ((caracter < '0') ||(caracter > '9')) && (caracter != ':') || textFieldTime.getText().length()== 8 )
  180.                evt.consume();
  181.            if((textFieldTime.getText().length()==2 || textFieldTime.getText().length()==5) && (caracter != ':'))
  182.                evt.consume();
  183.        }
  184.    }
  185.  
  186.    public void keyPressed(KeyEvent evt) {      
  187.    }
  188.  
  189.    public void keyReleased(KeyEvent evt) {      
  190.    }
  191.  
  192.    class AppAdapter extends WindowAdapter {
  193.        public void windowClosing(WindowEvent event) {
  194.            exit();
  195.        }
  196.    }
  197. }
  198.  

Clase: DateTime
Código
  1. /*
  2.  * Autor: 1mpuls0
  3.  */
  4. package projects.date;
  5.  
  6. import java.text.SimpleDateFormat;
  7. import java.util.Date;
  8. import java.text.DateFormat;
  9. import java.text.ParseException;
  10. import java.util.logging.Level;
  11. import java.util.logging.Logger;
  12.  
  13. public class DateTime {
  14.  
  15.    private final String FORMAT = "dd/MM/yyyy HH:mm:ss";
  16.  
  17.    public long differenceTime(Date currentDate, Date lastDate) {
  18.        long msDifference = 0;
  19.        long msCurrentDate = currentDate.getTime();
  20.        long msLastDate = lastDate.getTime();
  21.        if(msLastDate>msCurrentDate)
  22.            msDifference = Math.abs(msCurrentDate - msLastDate);
  23.        return msDifference;
  24.    }
  25.  
  26.    public Date getCurrentDateTime() {
  27.        String currentDate;
  28.        SimpleDateFormat dateFormat = new SimpleDateFormat(FORMAT);
  29.        Date date = new Date();
  30.        currentDate = dateFormat.format(date);
  31.        try {
  32.            dateFormat.parse(currentDate);
  33.        } catch (ParseException ex) {
  34.            Logger.getLogger(getClass().getName()).log(
  35.            Level.ALL, "Error...", ex);
  36.        }
  37.        return date;
  38.    }
  39.  
  40.    public String getCurrentDate() {
  41.        String currentDate = "";
  42.        SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
  43.        Date date = new Date();
  44.        try {
  45.            currentDate = dateFormat.format(date);
  46.  
  47.        } catch(NullPointerException npe) {
  48.            Logger.getLogger(getClass().getName()).log(
  49.            Level.ALL, "Error...", npe);
  50.        }
  51.        return currentDate;
  52.    }
  53.  
  54.    public Date stringToDate(String strDate) {
  55.        SimpleDateFormat format = new SimpleDateFormat(FORMAT);
  56.        Date date = null;
  57.        try {
  58.            date = format.parse(strDate);
  59.        } catch (ParseException pe) {
  60.            Logger.getLogger(getClass().getName()).log(
  61.            Level.ALL, "Error...", pe);
  62.        }
  63.        return date;
  64.    }
  65.  
  66.    public boolean isDateValid(String strDate) {
  67.         try {
  68.            DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
  69.            df.setLenient(false);
  70.            df.parse(strDate);
  71.            return true;
  72.        } catch (ParseException pe) {
  73.            Logger.getLogger(getClass().getName()).log(
  74.            Level.ALL, "Error...", pe);
  75.            return false;
  76.        }
  77.    }
  78.  
  79.    public boolean isTimeValid(String strDate) {
  80.        try {
  81.            DateFormat df = new SimpleDateFormat("HH:mm:ss");
  82.            df.setLenient(false);
  83.            df.parse(strDate);
  84.            return true;
  85.        } catch (ParseException pe) {
  86.            Logger.getLogger(getClass().getName()).log(
  87.            Level.ALL, "Error...", pe);
  88.            return false;
  89.        }
  90.    }
  91.  
  92.    public String completeTime(String strTime) {
  93.        if(strTime.length()==4 && strTime.charAt(3)<'9') {
  94.            strTime = strTime.substring(0, 3) + "0" + strTime.substring(3) + ":00";
  95.        }
  96.  
  97.        if(strTime.length()==5) {
  98.            strTime+=":00";
  99.        }
  100.  
  101.        if(strTime.length()==7 && strTime.charAt(6)<'9') {
  102.            strTime = strTime.substring(0, 6) + "0" + strTime.substring(6);
  103.        }
  104.        return strTime;
  105.    }
  106. }
  107.  

Clase: OperatingSystem
Código
  1. package projects.information;
  2.  
  3. public class OperatingSystem {
  4.    //The prefix String for all Windows OS.
  5.    private static final String OS_NAME_WINDOWS_PREFIX = "Windows";
  6.  
  7.    //The {@code os.name} System Property. Operating system name.
  8.    public static final String OS_NAME = getSystemProperty("os.name");
  9.    //The {@code os.version} System Property. Operating system version.
  10.    public static final String OS_VERSION = getSystemProperty("os.version");
  11.  
  12.    //Is {@code true} if this is AIX.
  13.    public static final boolean IS_OS_AIX = getOSMatchesName("AIX");
  14.    //Is {@code true} if this is HP-UX.
  15.    public static final boolean IS_OS_HP_UX = getOSMatchesName("HP-UX");
  16.    //Is {@code true} if this is Irix.
  17.    public static final boolean IS_OS_IRIX = getOSMatchesName("Irix");
  18.    //Is {@code true} if this is Linux.
  19.    public static final boolean IS_OS_LINUX = getOSMatchesName("Linux") || getOSMatchesName("LINUX");
  20.    //Is {@code true} if this is Mac.
  21.    public static final boolean IS_OS_MAC = getOSMatchesName("Mac");
  22.    //Is {@code true} if this is Mac.
  23.    public static final boolean IS_OS_MAC_OSX = getOSMatchesName("Mac OS X");
  24.    //Is {@code true} if this is FreeBSD.
  25.    public static final boolean IS_OS_FREE_BSD = getOSMatchesName("FreeBSD");
  26.    //Is {@code true} if this is OpenBSD.
  27.    public static final boolean IS_OS_OPEN_BSD = getOSMatchesName("OpenBSD");
  28.    //Is {@code true} if this is NetBSD.
  29.    public static final boolean IS_OS_NET_BSD = getOSMatchesName("NetBSD");
  30.    //Is {@code true} if this is OS/2.
  31.    public static final boolean IS_OS_OS2 = getOSMatchesName("OS/2");
  32.    //Is {@code true} if this is Solaris.
  33.    public static final boolean IS_OS_SOLARIS = getOSMatchesName("Solaris");
  34.    //Is {@code true} if this is SunOS.
  35.    public static final boolean IS_OS_SUN_OS = getOSMatchesName("SunOS");
  36.  
  37.    //Is {@code true} if this is a UNIX like system, as in any of AIX, HP-UX, Irix, Linux, MacOSX, Solaris or SUN OS.
  38.    public static final boolean IS_OS_UNIX = IS_OS_AIX || IS_OS_HP_UX || IS_OS_IRIX || IS_OS_LINUX || IS_OS_MAC_OSX
  39.            || IS_OS_SOLARIS || IS_OS_SUN_OS || IS_OS_FREE_BSD || IS_OS_OPEN_BSD || IS_OS_NET_BSD;
  40.  
  41.  
  42.    //Is {@code true} if this is Windows.
  43.    public static final boolean IS_OS_WINDOWS = getOSMatchesName(OS_NAME_WINDOWS_PREFIX);
  44.  
  45.    //Gets a System property, defaulting to {@code null} if the property cannot be read.
  46.    private static String getSystemProperty(String property) {
  47.        try {
  48.            return System.getProperty(property);
  49.        } catch (SecurityException ex) {
  50.            // we are not allowed to look at this property
  51.            System.err.println("Caught a SecurityException reading the system property '" + property
  52.                    + "'; the SystemUtils property value will default to null.");
  53.            return null;
  54.        }
  55.    }
  56.  
  57.    //Decides if the operating system matches.
  58.    private static boolean getOSMatchesName(String osNamePrefix) {
  59.        return isOSNameMatch(OS_NAME, osNamePrefix);
  60.    }
  61.  
  62.    //Decides if the operating system matches.
  63.    static boolean isOSNameMatch(String osName, String osNamePrefix) {
  64.        if (osName == null) {
  65.            return false;
  66.        }
  67.        return osName.startsWith(osNamePrefix);
  68.    }
  69.  
  70.    static boolean isOSMatch(String osName, String osVersion, String osNamePrefix, String osVersionPrefix) {
  71.        if (osName == null || osVersion == null) {
  72.            return false;
  73.        }
  74.        return osName.startsWith(osNamePrefix) && osVersion.startsWith(osVersionPrefix);
  75.    }    
  76. }
  77.  
  78.  

Clase: Shutdown
Código
  1. /*
  2.  * Autor: 1mpuls0
  3.  */
  4. package projects.actions;
  5.  
  6. import java.io.IOException;
  7. import java.util.logging.Level;
  8. import java.util.logging.Logger;
  9.  
  10. import projects.information.OperatingSystem;
  11.  
  12. public class Shutdown implements Runnable {
  13.  
  14.    private final Thread thread;
  15.    private long timeDifference = 0;
  16.    private OperatingSystem sys;
  17.  
  18.    public Shutdown(long timeDifference) {
  19.        this.timeDifference = timeDifference;
  20.        thread = new Thread(this);
  21.        thread.start();
  22.    }
  23.  
  24.    private void process(long time) {
  25.        System.out.println("APAGATE!!!");
  26.        String shutdownCommand = null;
  27.  
  28.        if(sys.IS_OS_AIX)
  29.            shutdownCommand = "shutdown -Fh " + time;
  30.        else if(sys.IS_OS_FREE_BSD || sys.IS_OS_LINUX || sys.IS_OS_MAC|| sys.IS_OS_MAC_OSX || sys.IS_OS_NET_BSD || sys.IS_OS_OPEN_BSD || sys.IS_OS_UNIX)
  31.            shutdownCommand = "shutdown -h " + time;
  32.        else if(sys.IS_OS_HP_UX)
  33.            shutdownCommand = "shutdown -hy " + time;
  34.        else if(sys.IS_OS_IRIX)
  35.            shutdownCommand = "shutdown -y -g " + time;
  36.        else if(sys.IS_OS_SOLARIS || sys.IS_OS_SUN_OS)
  37.            shutdownCommand = "shutdown -y -i5 -g" + time;
  38.        else if(sys.IS_OS_WINDOWS)
  39.            shutdownCommand = "shutdown.exe -s -t " + time;
  40.  
  41.        try {
  42.            Runtime.getRuntime().exec(shutdownCommand);
  43.        }catch(IOException ioe) {
  44.            Logger.getLogger(getClass().getName()).log(
  45.            Level.ALL, "Error...", ioe);
  46.            javax.swing.JOptionPane.showMessageDialog(null, "No se pudo apagar", "Comando no aceptado", javax.swing.JOptionPane.ERROR_MESSAGE);
  47.        }
  48.    }
  49.  
  50.    public void run() {
  51.        try {
  52.            thread.sleep(timeDifference);
  53.            process(0);
  54.        }
  55.        catch (InterruptedException ie) {
  56.            Logger.getLogger(getClass().getName()).log(
  57.            Level.ALL, "Error...", ie);
  58.        }
  59.    }
  60.  
  61.    public void stop() {
  62.        thread.stop();
  63.    }
  64. }
  65.  
363  Programación / Bases de Datos / Re: Programa para windows en: 30 Agosto 2013, 16:13 pm
Sí, exacto, era eso, muchas gracias :-)

¿Recomendáis uno de todos esos?

Bueno ya te mencionó Carloswaldo, depende para que sistema de gestión de bases de datos necesites:
MySQL
SQL Server
Oracle
364  Programación / Bases de Datos / Re: Programa para windows en: 30 Agosto 2013, 05:05 am
Creo que se refiere a una GUI de base de datos para permitir conexiones remotas a otro servidor.

Dentro de las que conozco estan SQLYog, Toad For Oracle, Toad For SQL, Navicat, Sql Server Management Studio, Mysql workbench.

Saludos.
365  Programación / Desarrollo Web / Re: comprobar si usuario existe al tabular campo en: 30 Agosto 2013, 04:49 am
y si no hace tabulaciòn?  ;D ya no valida :p
pero puedes hacer la combinacion de las 2, una seria para detectar el evento de teclado y otra para el evento del mouse.

Saludos.
366  Programación / Desarrollo Web / Re: Una sola funcion de ajax en: 30 Agosto 2013, 04:45 am
Asì como lo tienes es lo mejor.
Recuerda la programaciòn orientada a objetos.

No quieras que a una funcion le pases dos parametros por ejemplo y dependiendo de eso te regrese el resultado de acuerdo a la operación.
367  Programación / Bases de Datos / Re: Duda: Vistas en Oracle seguras? en: 29 Agosto 2013, 22:03 pm
Pero por qué debería de fallar una vista?, si solo está "referenciando" a otras tablas, en todo caso son las tablas en donde hay inconsistencia.

Yo utilizo mucho  Trigger y Stored Procedure, Functions, Views y nunca he tenido problemas.
368  Programación / Bases de Datos / Re: ¿Ayudita con Base de Datos? en: 29 Agosto 2013, 07:17 am
 :¬¬ y cómo quieres que se te ayude si no defines bien el problema?.
Así sea de ofertas de otro tipo la diferencia entre las bases de datos puede ser abismal.

Saludos.
369  Foros Generales / Dudas Generales / Re: Diferencia entre KB/s y KBps? en: 29 Agosto 2013, 04:57 am
@topomanuel
Conozco todo eso, gracias por tomarte la molestia. Tampoco es que sea un sabelotodo solo digo que ya lo había considerado.

Aquí mi duda mas en especifico era entre bits y bytes en transferencia de datos.

Ya comprendí mejor esa parte.

Pero ahora...

Código:
PD: Lo de los discos duros no fue mas que un timo de las empresas para poder timar a la gente ofreciendo por ejemplo 80GB cuando en realidad son 78.12GB...

Eso si lo sabía pero pasa igual con las velocidades de conexión a internet? (independientemente de que disminuya por el uso de otros protocolos)

Por ejemplo la velocidad de conexion de internet está asi.



Sabemos que:
1 Mbps = 1000 Kbps = 0.125 MB/s

Entonces:
100 Mbps = 100000 Kbps = 12.5 MB/s?

:¬¬
370  Foros Generales / Dudas Generales / Re: Diferencia entre KB/s y KBps? en: 29 Agosto 2013, 01:58 am
Me refiero a que es mas común expresar los kilobits por segundo con ps en vez de /s. Precisamente para no confundirlos con los kilobytes. Igual que con los MB.

Pero entonces si yo escribo digamos en una tesis o algún documento 128 kb/s para referirme (sin mencionarlo en el documento) a 128 kilobits por segundos está mal?.

Pero cuál es la razón?, solo evitar confusión?

Bueno esto en cuanto a transferencia, pero entonces para la unidad si se puede decir:
1 kb (1 kilobit)
1 KB (1 kilobyte)

Pero para transferencia de información tiene que ser:
1 kbps (1 kilobit por segundo)
1 kb/s (1 kilobyte por segundo)

Entonces no es lo correcto hacer:
1 KBps (1 kilobyte por segundo) <- MAL

1 KB/s <- Si escribo esto que se supone que estoy dando a entender? (además de que soy un ignorante?)

Pensaba que por colocar la "B" como mayúscula (para el caso de transferencia) hacía la distinción para referirse a bit o byte.
Páginas: 1 ... 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 [37] 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 ... 137
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines