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ú

Temas - PabloPbl

#1
Buenas estoy haciendo un sistema en el cual necesito consumir la API de Binance atravez PHP.

El sistema va a ser usado por varias personas y el problema es que Binance tiene un limite de peticiones hechas atreves de una misma IP. Por lo que se me ocurrió hacer que esas consultas a la API de Binance, se hagan del lado del cliente y no del servidor.

Se hace toda la lógica previamente desde PHP y el cliente solo hara las peticiones correspondientes a Binance desde el navegador.

Pero surge otro problema que no se como resolverlo, en el cual es que a la hora de mandar las consultas al cliente desde el servidor, este recibirá también las Api Key y Secrey Key de Binance, por lo que podrá cambiarlas y así burlar la seguridad del sistema del lado del cliente.

Hay alguna forma de que esto se pueda evitar?

Lo único que se me ocurrió es hacerlo desde el lado del servidor, pero con ese problema de que todas las peticiones se hacen de una misma IP y con el riesgo de que la puedan banear.


Ahora me pregunto, como hacen todas esas Apps, para manejar miles y miles de usuarios simultáneos desde un mismo servidor, sin riesgo de ban?

Por ejemplo:
cryptohopper
bitsgap

Otra forma que se me ocurrió es cifrar las info que va a ser consumida desde el cliente. Pero lo descarte por que la desencriptación debe hacerse del lado del cliente de todas formas y en algún lugar debo guardar la llave. Cosa que alguien fácilmente puede ver el script generado de JS y obtener la llave.

Gracias desde ya.
#2
Buenas, tengo un router TP-LINK y lo que quiero lograr es que mi PC se conecte al mismo, así cambie la contraseña nuevamente.

Intente agregando mi dirección Mac al router y funciona. Pero el problema viene cuando cambio la contraseña, me tengo que volver a autenticar en el router.

En simples palabras lo que quiero lograr es, que nunca me pida contraseña para conectarme a mi router, así la cambie mil veces.

Hay alguna forma de configurar esto en un router TP-LINK?

gracias desde ya.
#3
Hola buenas, estoy intentando obtener un JSON desde PHP, que me devuelve el resultado de una consulta (SELECT) de una base de datos.

Estoy usando GSON, para convertir el JSON obtenido a un objeto en Java.

Mi problema esta en que no me deja crear los objeto y me devuelve un Excepción.
Nose si lo que me devuelve PHP me devuelve en un formato correcto para poder ser interpretado en GSON.

Lo que si al momento de ver el JSON en consola para ver lo que me devuelve, me pone una especie de punto al inicio y otro al final, cosa que si se los saco anda perfectamente, pero me gustaría saber cual puede ser el error y que puedo estar haciendo mal.

MI PHP es el siguiente:
Código (php) [Seleccionar]

<?php
$servidor
="localhost";
$nombre_bd="test2";
$username="root";
$password="";

$conexion mysql_connect($servidor$username$password) or die ("No se ha podido conectar al servidor de Base de datos");

  
mysql_select_db($nombre_bd$conexion) or die ("xD");

$sql "SELECT * FROM usuario";

$result mysql_query($sql$conexion);

$array = array();

$i 0;

while(
$row mysql_fetch_array($result)) {
  
$array[$i] = $row;
  
$i ++;
}

$json json_encode($arrayJSON_FORCE_OBJECT);
echo 
$json;
?>



El Java de donde hago la petición:
Código (java) [Seleccionar]

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package prueba.comsumir.webservice;

import com.google.gson.Gson;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;

/**
*
* @author Pablo
*/
public class PruebaComsumirWebservice {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Usuario usuario = new Usuario(1, "User1", "123");
        System.out.println(usuario.toString());
        URL url;
        try {
            // Creando un objeto URL
            url = new URL("http://localhost:8080/Sitio%201/code.php");

            // Realizando la petición GET
            URLConnection con = url.openConnection();

            // Leyendo el resultado
            BufferedReader in = new BufferedReader(new InputStreamReader(
                    con.getInputStream()));

            String linea;
            String json = "";
            while ((linea = in.readLine()) != null) {
                System.out.println(linea);
                json += linea;
            }
            //{"id":1,"usuario":"usuario1","contrasenia":"asd"}
            Usuario usuario1 = new Gson().fromJson(json, Usuario.class);
            System.out.println(usuario.getUsuario());
           
        } catch (IOException e) {
            System.out.println(e.getMessage());
        }
    }
   


Y la clase Usuario:
Código (java) [Seleccionar]

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package prueba.comsumir.webservice;

/**
*
* @author Pablo
*/
public class Usuario {
    private int id;
    private String usuario;
    private String contrasenia;

    public Usuario(int id, String usuario, String contrasenia) {
        this.id = id;
        this.usuario = usuario;
        this.contrasenia = contrasenia;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsuario() {
        return usuario;
    }

    public void setUsuario(String usuario) {
        this.usuario = usuario;
    }

    public String getContrasenia() {
        return contrasenia;
    }

    public void setContrasenia(String contrasenia) {
        this.contrasenia = contrasenia;
    }

    @Override
    public String toString() {
        return String.format("id:%s, usuario:%s, contrasenia:%s", id, usuario, contrasenia);
    }
}



Cuando ejecuto el código desde Netbeans, me devuelve el siguiente JSON: y me da la siguiente Excepción:

{"0":{"0":"1","id":"1","1":"user1","usuario":"user1","2":"asd","contrasenia":"asd"},"1":{"0":"2","id":"2","1":"user2","usuario":"user2","2":"dsa","contrasenia":"dsa"}}
Exception in thread "main" com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 169 path $
   at com.google.gson.Gson.assertFullConsumption(Gson.java:855)
   at com.google.gson.Gson.fromJson(Gson.java:845)
   at com.google.gson.Gson.fromJson(Gson.java:793)
   at com.google.gson.Gson.fromJson(Gson.java:765)
   at prueba.comsumir.webservice.PruebaComsumirWebservice.main(PruebaComsumirWebservice.java:48)
Caused by: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 169 path $
   at com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1567)
   at com.google.gson.stream.JsonReader.checkLenient(JsonReader.java:1416)
   at com.google.gson.stream.JsonReader.doPeek(JsonReader.java:546)
   at com.google.gson.stream.JsonReader.peek(JsonReader.java:429)
   at com.google.gson.Gson.assertFullConsumption(Gson.java:851)
   ... 4 more
C:\Users\Pablo\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 1 second)


Un saludo y gracias desde ya.
#4
Hola buenos llevo rato haciendo un ejercicio de Haskell que no puedo lograr hacerlo.
En si el ejercicio creo que esta perfecto, pero Haskell no me lo toma y me da error.

Esto es lo que llevo:
Código (java) [Seleccionar]

pesoLiviano altura = max(0, (altura*100)-300)
pesoPesado altura = min(300, altura*100)

pesoPino altura  = (pesoPesado altura + pesoLiviano altura) * 3

esPesoUtil peso = peso >= 400 && peso <= 1000

sirvePino  = esPesoUtil.pesoPino


La lógica del codigo se que esta bien, en otros lenguajes lo hice bien, pero acá parece un error de sintaxis o algo asi:

pesoPino altura  = (pesoPesado altura + pesoLiviano altura) * 3

El error creo que esta cuando llamo al mismo parametro dentro de la funcion 2 veces, nose si sea eso:



Y este es el erro que me da:


Non type-variable argument
      in the constraint: Num ((t, t) -> (t, t))
    (Use FlexibleContexts to permit this)
    When checking that 'pesoPino' has the inferred type
      pesoPino :: forall t t1.
                  (Num t, Num t1, Num ((t, t1) -> (t, t1)), Ord t, Ord t1) =>
                  t1 -> (t, t1) -> (t, t1)
#5
Hola a todos tengo un problema con mi app, resulta que tengo 1 DrawerLayout con 1 listView lateral, que tiene 3 opciones, cada una al hacerle un click me carga un Fragment diferente en la pantalla central de mi Activity ocupando todo el espacio disponible.

El problema es que cuando cargo un fragment por primera vez, sea cual sea(Pulsando en el listView lateral), lo hace perfecto, pero luego al intentar cargar otro Fragment por segunda vez no puedo hacerlo, ya que el listView al darle click a otra opción este se vuelve a ocultar, y no puedo hacer el click para mostrar mi otro Fragment  :-\

Este es mi código del MainActivity:

Código (java) [Seleccionar]

package com.funcioneslineales2.funcioneslineales2;

import android.app.FragmentManager;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    ListView listView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.asd);
        drawer.closeDrawer(GravityCompat.START);
        String[] opciones = {"Pendiente y ordenada", "Ecuación punto pendiente", "Pasa por (x1,y1) y (x2,y2)"};

        listView = (ListView) findViewById(R.id.listView);
        ArrayAdapter<String> adapterListView = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, opciones);
        listView.setAdapter(adapterListView);
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                if(position == 0) {
                    setFragment(0);
                }
                if(position == 1) {
                    setFragment(1);
                }
                if(position == 2) {
                    setFragment(1);
                }
            }
        });

    }

    public void setFragment(int position) {
        android.support.v4.app.FragmentManager fragmentManager;
        FragmentTransaction fragmentTransaction;
        switch (position) {
            case 0:
                fragmentManager = getSupportFragmentManager();
                fragmentTransaction = fragmentManager.beginTransaction();
                FuncionLinealPendienteOrdenada funcionLinealPendienteOrdenada = new FuncionLinealPendienteOrdenada();
                fragmentTransaction.replace(R.id.asd, funcionLinealPendienteOrdenada);
                fragmentTransaction.commit();
                break;
            case 1:
                fragmentManager = getSupportFragmentManager();
                fragmentTransaction = fragmentManager.beginTransaction();
                FuncionLinealPendiente1Punto funcionLinealPendiente1Punto = new FuncionLinealPendiente1Punto();
                fragmentTransaction.replace(R.id.asd, funcionLinealPendiente1Punto);
                fragmentTransaction.commit();
                break;
        }
    }
}



Y este es el Layout del MainActivity:

Código (xml) [Seleccionar]

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.funcioneslineales2.funcioneslineales2.MainActivity"
    android:id="@+id/asd">

    <include
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        layout="@layout/drawer_layout"
        android:layout_gravity="start"/>
</android.support.v4.widget.DrawerLayout>



Layout cabezera:

Código (xml) [Seleccionar]

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#92ea17">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/imageView"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:src="@android:drawable/sym_def_app_icon"
        android:padding="20dp"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="Funciones lineales"
        android:id="@+id/textView"
        android:layout_centerVertical="true"
        android:layout_toRightOf="@+id/imageView"
        android:layout_toEndOf="@+id/imageView"
        android:textStyle="bold"
        android:layout_marginLeft="10dp" />
</RelativeLayout>


Layout del ListView:

Código (xml) [Seleccionar]

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ListView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:id="@+id/listView"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />
</RelativeLayout>


Y el layout DrawerLayout(Donde uno la cabezera y el listview):

Código (xml) [Seleccionar]

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#cfc4c4">

    <include
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        layout="@layout/cabezera"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:id="@+id/include" />

    <include
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        layout="@layout/lista_drawer"
        android:layout_below="@+id/include"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />
</RelativeLayout>


Y las clases de los fragments:

Código (java) [Seleccionar]

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.app.AlertDialog;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;

import java.util.zip.Inflater;


/**
* A simple {@link Fragment} subclass.
*/
public class FuncionLinealPendienteOrdenada extends Fragment {


    EditText etPendiente, etOrdenadaAlOrigen;
    Button btnCalcular;
    public FuncionLinealPendienteOrdenada() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment

        View view = inflater.inflate(R.layout.fragment_funcion_lineal_pendiente_ordenada, container, false);
        etPendiente = (EditText)view.findViewById(R.id.editText);
        etOrdenadaAlOrigen = (EditText)view.findViewById(R.id.editText2);
        btnCalcular = (Button)view.findViewById(R.id.button);
        btnCalcular.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                calcularPuntos();
            }
        });

        return view;
    }

    public void calcularPuntos() {
        AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
        builder.setTitle("Resultado");
        builder.setMessage(new FuncionLineal().calcularPuntos2(Double.parseDouble(etPendiente.getText().toString()), Double.parseDouble(etOrdenadaAlOrigen.getText().toString())));
        builder.setPositiveButton("OK",null);
        builder.create();
        builder.show();
    }

}




Código (java) [Seleccionar]

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.app.AlertDialog;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;


/**
* A simple {@link Fragment} subclass.
*/
public class FuncionLinealPendiente1Punto extends Fragment {

    EditText etPendiente, x1, y1;
    Button btnCalcular;
    public FuncionLinealPendiente1Punto() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_funcion_lineal_pendiente1_punto, container, false);
        etPendiente = (EditText)view.findViewById(R.id.editText3);
        x1 = (EditText)view.findViewById(R.id.editText4);
        y1 = (EditText)view.findViewById(R.id.editText5);
        btnCalcular = (Button)view.findViewById(R.id.button2);
        btnCalcular.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                calcularPuntos();
            }
        });

        return view;
    }

    public void calcularPuntos() {
        AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
        builder.setTitle("Resultado");
        builder.setMessage(new FuncionLineal().calcularPuntosSinOrdenada(Double.parseDouble(etPendiente.getText().toString()), Double.parseDouble(x1.getText().toString()), Double.parseDouble(y1.getText().toString())));
        builder.setPositiveButton("OK",null);
        builder.create();
        builder.show();
    }

}



Gracias de antemano.
#6
Hola a todos, ¿como puedo pasar parametros de una funcion javascript al parametro "action" la etiqueta form de la siguiente linea de código?:

Código (html4strict) [Seleccionar]

<form method="POST" action="javascript:editarPost();">

</form>


Ya intente de estas formas:
Código (html4strict) [Seleccionar]

<form method="POST" action="javascript:editarPost();">

</form>


Código (html4strict) [Seleccionar]

<form method="POST" action="editarPost();">

</form>


Código (html4strict) [Seleccionar]

<form method="POST" action="editarPost()">

</form>


Pero ninguna me sirve, el codigo javascript es el siguiente, el cual funciona perfectamente, ya lo he probado:

Código (javascript) [Seleccionar]

<script type="text/javascript">

function editarPost() {
tituloPost = "<?php echo $_GET['titulo']; ?>";

palabras = tituloPost.split(" ");
cadenaLista = "";
for (var i = 0; i < palabras.length; i++) {
cadenaLista += palabras[i]+"%20";
}
pagina = "editarPost.php?titulo="+cadenaLista;
return pagina;
}

</script>

Este código js esta al principio de las etiquetas body.

Esto me funciona perfecto con el onClick, pero con el action no me sirve, y si o si lo necesito con ese parámetro, con el onClick no me sirve, alguna sugerencia?
#7
Hola gente, tengo una duda, ¿Cómo puedo hacer para que mi programa echo en Java, salga en la lista de programas instalados en Windows?

Alguna clase que me permita hacer esto?

Gracias desde ya.
#8
En otros lenguajes de programación se puede hacer.

Por ejemplo, así se vería en Unity(C#):

while(true) {
    if (Input.GetKeyDown(KeyCode.W)){x+=1}
}

Un ciclo que se ejecuta a velocidad de maquina y en cada ejecución la función se fija si tal tecla esta presionada o no, esto me vendría de perlas para un juego que haga una comprobación cada frame antes de hacer algo, y no estar usando el KeyListener de Java, ya que se ejecuta a otros velocidades, y me hace desastres dentro del juego.
Habra alguna forma de regular la velocidad de chequeo de teclas o alguna función para saber si hay alguna tecla presionada o no?

Muchas gracias desde ya.




RESUMIENDO:
QUIERO LOGRAR HACER ALGO COMO ESTO:
Código (java) [Seleccionar]
if(keypressed("W") == true){
      //CODE
}


Sin tener que usar el KeyListener.
#9
Programación C/C++ / Pequeña duda sobre punteros
13 Diciembre 2015, 19:37 PM
Se que si yo hago esto:
Código (cpp) [Seleccionar]
char *cadena = "Hola";
Se reserva una determinada cantidad de bytes en alguna parte de la memoria, en este caso, 4 bytes, por que son 4 caracteres.

Pero si ahora yo hago esto:
Código (cpp) [Seleccionar]
char *cadena = "Sol";
Se reservara 3 bytes mas para esta cadena, y acá mi pregunta:
¿Que pasa con los otros 4 bytes que reserve para la cadena "Hola", se reemplaza por estos?
Supongamos que se reemplaza, entonces, quedaría un byte libre, con la letra "a", ¿como haría para liberar ese espacio inútil? Ya que esta cadena solo ocupa 3 letras y sobraría 1, que había reservado anteriormente.
Espero me haya dado a explicar.

Mil gracias y espero me disculpen por molestar tanto, estoy estudiando C++ y me surgieron un montón de dudas y no las encontré en la web  :-\
#10
Quiero conseguir cambiar el valor de un puntero de char mediante una función, pasandole por parámetro un puntero, pero no funciona, la función no me cambia el valor.


Esto es lo que tengo echo:
Código (cpp) [Seleccionar]

#include <iostream>

using namespace std;

void hacerIgualAChauMundo(char *cadena) {
   cadena = "Chau mundo";
}

int main() {
   char *cadena = "Hola mundo";

   hacerIgualAChauMundo(cadena);

   cout << cadena << endl;

   return 0;
}


Agradecería si me echan una mano.
#11
Estoy trabajando con el portapapeles en c++ y estuve viendo ejemplos en la web y he implementado el metodo.

Pero resulta que cuando uso este método para copiar texto al portapapeles, me lo copia, pero cuando hago la prueba, me queda faltando el ultimo carácter del string que le pase el metodo.

Si yo copio:
Codigo --> me copia --> Codig

Este el método que utilizo en mi programa:

Código (cpp) [Seleccionar]

void toClipboard(const std::string &s){
OpenClipboard(0);
EmptyClipboard();
HGLOBAL hg=GlobalAlloc(GMEM_MOVEABLE,s.size());
if (!hg){
CloseClipboard();
return;
}
memcpy(GlobalLock(hg),s.c_str(),s.size());
GlobalUnlock(hg);
SetClipboardData(CF_TEXT,hg);
CloseClipboard();
GlobalFree(hg);
}


Gracias de antemano.
#12
Hola gente, bueno hoy quiero aportar mi granito de arena a esta comunidad que me ayudado bastante a resolver mis problemas  ;-) En este tutorial explicare como funciona la POO en Java.

Antes que nada quiero decir que este tutorial va dirigido a personas que ya tienen conocimientos de programación, en especial si vienes de otro lenguaje orientado a objetos. No me voy a poner a explicar a fondo para que funciona cada cosa, simplemente explicare como es la estructura de la POO en Java.

Creando clases:
NOTA: Cuando creas una clase, dicha clase tiene que ser almacenada en un archivo de texto con la extensión ".java", y ese archivo tiene que tener el mismo nombre de la clase.
Ya dentro del archivo creas la clase de la siguiente manera:

Código (java) [Seleccionar]
public class NombreDeLaClase {}

Como vemos, en Java es recomendable que sigamos en siguiente formato para el nombre de las clases, empezamos con mayúsculas y cuando empieza otra palabra, la primera letra en mayúscula, a esta forma de escribir se denomina UpperCamelCase.

Y entre las llaves de la clase definiremos, los atributos, métodos, y todas las características que queremos que tenga la clase.

Creando métodos:
La estructura de un método en Java es la siguiente:
Código (java) [Seleccionar]
public void nombreDelMetodo() {}

Como vemos, en Java es recomendable que sigamos en siguiente formato para el nombre de los métodos, empezamos con minúscula y cuando empieza otra palabra, la primera letra en mayúscula, a esta forma de escribir se denomina lowerCamelCase.

Y dentro de las llaves del método, implementaremos nuestro código.

En Java podemos tener varios métodos con el mismo nombre, pero con la diferencia que deben recibir diferentes parámetros.

Recibir parámetros:
Para que un método reciba parámetros, debemos especificarlos entre los paréntesis, así:
Código (java) [Seleccionar]
public void nombreDelMetodo(String cadena) {}

Devolviendo valores:
En Java para que un método devuelva un valor, primeros debemos especificar que va devolver ese método, no podemos devolver cualquier valor que nosotros queramos, como se haría en Python por ejemplo, en Java primero se define que es lo que se va a devolver, si es un String, un entero, etc. Y eso lo definimos de la siguiente manera:
Cuando un método tiene la palabra "void", significa que no va a devolver nada:
Código (java) [Seleccionar]
public void nombreDelMetodo() {}
Si queremos que devuelva algo, simplemente cambiamos el "void", por el valor que queremos devolver, si qusieramos devolver una cadena, lo haríamos de la siguiente forma:
Código (java) [Seleccionar]
public String nombreDelMetodo() {}
También es posible devolver, arreglos y hasta objetos, solo es cuestión de especificar que devolver.

Atributos y ámbitos:
Con ámbito, me refiero al alcance que tienen las variables para que se puedan llamar unas a otras dentro de la clase.
En Java tenemos básicamente 2 ámbitos de las variables, ellas pueden ser:
Variables de clase:
Estas variables son visibles para toda la clase, es decir que pueden ser accedida por todos los métodos de la misma.
Estas se definen fuera de los métodos, es decir al mismo nivel en el que se definen los métodos de la clase:
Código (java) [Seleccionar]
public class NombreDeLaClase {
    String cadena = "Hola mundo";
}

Variables de método:
Estas variables, se definen dentro de los métodos, y solo pueden ser accedidas por el método en donde fueron declaradas:
Código (java) [Seleccionar]
public class NombreDeLaClase {
    public void nombreDelMetodo() {
         String cadena = "Hola mundo";
    }
}

Si quisiéramos llamar la variable cadena, desde otro método, simplemente no podremos, dará error y dirá que no se encuentra esa variable.

Constructor de la clase:
Como en todo lenguaje siempre tenemos el constructor, que es el primer método que se ejecuta cuando se instancia un objeto de la clase, para crear un constructor basta con crear un método con el mismo nombre de la clase y ya tendremos uno:
Código (java) [Seleccionar]
public class Animal {
    public void Animal() {
         //Código a ejecutar
    }
}


También podemos tener varios constructores con el mismo nombre, pero con la diferencia que deben recibir diferentes parámetros.

NOTA: Los constructores no pueden devolver valores, ni siquiera se pone el "void", pero si pueden contener parámetros.

Herencia:
En Java solo podemos hacer una herencia de otra clase, no se permite la herencia múltiple.
Para heredar de otra clase, simplemente debemos poner al lado del nombre de la clase lo siguiente:
Código (java) [Seleccionar]
extends NombreDeLaClaseAHeredar
Y se vería de la siguiente forma:
Código (java) [Seleccionar]
public class Perro extends Animal{
}

En este ejemplo estaríamos heredando los atributos y métodos de la clase Animal.

Llamar al constructor de la superclase:
En muchos casos necesitaremos llamar al constructor de la superclase para pasarle parámetros.
Para hacerlo, llamamos este método super() y entre los paréntesis, le pasamos los parámetros que requiere la superclase. Pero este método solo puede llamarse desde el constructor, y debe estar en la primera linea del método constructor:
Código (java) [Seleccionar]
public class Perro extends Animal{
    public Animal() {
         super("perro");
    }
}


Modificadores de acceso(Encapsulamiento):
En Java existen los modificadores de acceso, que son los permisos que le podemos poner a los atributos y métodos. Estos nos permiten determinar si los atributos o métodos, pueden ser accedidos desde un determinado lugar.
Estos modificadores se colocan al principio de la definición de un atributo o método, por ejemplo el modificador "private":
Código (java) [Seleccionar]
private String cadena = "Hola mundo";//Atributo
private void metodo() {}//Metodo


Tenemos diferentes modificadores:
public:
El método o atributo podrá ser accedido desde cualquier lugar.
protected:
El método o atributo que lo posea, solo podrá ser accedido por la misma clase o por las clases que lo hereden.
defualt:
Este "modificador" en realidad no es un modificador, y se define cuando no ponemos ningún modificador de acceso. Y el método o atributo que lo posea solo podrá ser accedido por clases que estén en el mismo paquete.
private:
El método o atributo que lo posea, solo podrá ser accedido por la misma clase.

Creando objetos:
Para crear objetos es tan sencillo como hacer esto:
Código (java) [Seleccionar]
Perro perro1 = new Perro("Toby");
Como ven primero especificamos de que tipo sera nuestra variable, en este caso sera una clase, de tipo "Perro", luego le ponemos un nombre, y después del signo ponemos la palabra reservada "new", para indicar que estamos creando un nuevo objeto, después volvemos a escribir el nombre de la clase("Perro") y entre los paréntesis le pasamos los parámetros al constructor del objeto, si es que lo requiere.

Accediendo a los atributos y métodos del objeto:
Luego que tengamos nuestro objeto creado, podremos acceder a los atributos y métodos que posea el objeto. Para ello debemos poner el nombre del objeto y luego un punto y después podremos llamar atributos y ejecutar funciones de ese objeto:
Código (java) [Seleccionar]

Perro perro1 = new Perro("Toby");
perro1.ladrar();
String nombrePerro1 = perro1.getName();



Hasta ahí lo mas básico de la programación orientada a objetos en Java, espero que sirva de ayuda para la gente que quiera aprender este maravilloso lenguaje, sobre todo para los que ya tienen experiencia en otros lenguajes y no quieran empezar un curso de cero.

Un saludo a todos!  ;D
#13
Estoy haciendo un compilador en Python, para compilar archivos.java
Pero quería saber si al arrastrar un archivo.java encima de mi script.py, este ultimo tome la ruta de ese archivo.java, y después compilar el archivo y ejecutarlo. Bueno lo de compilar y ejecutar ya lo tengo controlado.

Gracias de antemano.
#14
Scripting / [Python-POO]Necesito ayuda con un script
15 Noviembre 2015, 19:50 PM
Instancio 2 objetos de la clase Guerrero, uno para la PC y otro para el jugador, ambos objetos son de la misma clase.

En el constructor de esta clase, hace que la lista "guerreros" tome un valor aleatorio por cada indice.

Primero creo un objeto llamado guerreroPlayer y luego imprimo su lista con los números aleatorios que me genero. Luego lo mismo hago pero con el objeto guerreroPC, hasta ahí todo bien, cada lista con valores diferentes.

Pero el error esta en cuando vuelvo a imprimir los valores de la lista del objeto guerreroPlayer. Me muestra los mismos valores que tiene el objeto guerreroPC  :-\ y no los mismos de antes.

Alguien sabe por que sucede esto? gracias de antemano

Código (python) [Seleccionar]

import random

class Guerrero():
    nombre = "";
    guerreros = [0,0,0,0,0,0,0,0,0,0];

    def __init__(self, nombre):
        self.nombre = nombre;
        for numero in range(0, 10):
            numeroRandom = random.randint(1,1000);
            self.guerreros[numero] = numeroRandom;

    def imprimirNumeros(self):
        for i in self.guerreros:
            print(i);
        print("********************");

guerreroPlayer = Guerrero("Player");
guerreroPlayer.imprimirNumeros();

guerreroPc = Guerrero("PC");
guerreroPc.imprimirNumeros();

guerreroPlayer.imprimirNumeros();
#15
Scripting / [Python]Detectar teclas globalmente
8 Noviembre 2015, 03:55 AM
Hay alguna forma de detectar si se pulsa una tecla pero no estando en el programa.
Solo me detecta si pulso una tecla, pero solo cuando mi programa tiene el foco :-\ Pero lo que yo quiero es que me detecte desde cualquier lugar.
Es posible hacer esto?  :-\
#16
Estoy muy enredado con esto del paso de parámetros en Java, si es por valor o por referencia  :-\

Estuve leyendo un par de artículos por internet y según dicen que los pasos por parámetros en Java, son por valor y no por referencia.

Pero lo que no me entra en la cabeza, es cuando le paso un objeto como parámetro a un método, este supuestamente si fuera por valor, el método debería tomar una copia del objeto, pero no al contrario, el método efectúa los cambios en el objeto original que le pase  :-\ , Varios artículos que he leído afirman que Java es 100% paso de parámetros por valor, pero cuando se trata de pasar objetos por parámetros, los métodos hacen los cambios en el objeto original que le pase, es decir que no hacen una copia de dicho objeto, al contrario con los datos primitivos(int, long, short, String) que si lo hace.

¿Entonces Java es por valor y por referencia?  :-\
Java es raro :¬¬ es compilado e interpretado también  :-[ jaja pero eso no viene al caso.

¿Alguien sabe por que sucede esto, o que entendí mal?  :-\

Muchas gracias desde ya.
#17
Java / [School]Ejercicios POO en Java
26 Abril 2015, 17:26 PM
Hola gente como están?, pues he decidido abrir una especie de escuela en este foro (con los permisos adecuados por los mods claro), en el que dejare un par de ejercicios de POO para los que quieran practicar sus habilidades.

Pues daré 10 ejercicios mas o menos fáciles para principiantes en POO y otros un poco mas complicados. Y a los que se anoten, los ayudare con sus códigos si se llegan a atascar.

Pues eso, si se quieren anotar, publiquen un comment abajo diciéndolo y si hay interés, en un rato publicare el primer ejercicio.

Saludos!!
#18
Estoy siguiendo un tutorial para conectar Java con MySQL, pues me instale todo lo necesario y seguí paso a paso toda la instalación.

Este es el tutorial que estoy siguiendo:
http://www.javaya.com.ar/detalleconcepto.php?codigo=132&inicio=40

Voy en la parte que dice:
CitarEjecución del PhpMyAdmin para la creación de la base de datos.

Haciendo clic sobre el ícono de la bandeja del sistema aparece un menú que nos permite lanzar el PhpMyAdmin para crear la base de datos de MySQL:

Pues hay en el tutorial me dice que si el icono esta verde es que el programa esta funcionando bien, pues a mi no me aparece verde, me aparece naranja, y lo peor de todo es que cuando quiero entrar a "phpMyAdmim" para crear la base de datos como indican en el tutorial me sale esto:

Error HTTP 404.0 - Not Found
Se ha quitado el recurso que está buscando, se le ha cambiado el nombre o no está disponible en estos momentos.


Desde hace mucho que me quiero iniciar en esto, y hoy me anime. ¿Alguien me puede echar una mano?
#19
Java / [Duda]Uso de clases internas
14 Abril 2015, 00:05 AM
Hola gente, acá con una nueva duda.

¿Una clase interna hereda de de la clase contenedora o como es?
Código (java) [Seleccionar]

public class Prueba{
   private String texto = "Hola mundo";
   private String texto2 = "Hola mundo 2";

   private void saludar() {
       System.out.println(texto);
   }

   class ClassInterna extends javax.swing.JFrame{
       public ClassInterna() {
           saludar();
           System.out.println(texto2);
       }
   }
}


Si se fijan la clase interna hereda de JFrame, y aún así puedo seguir usando las variables y métodos de la clase contenedora, osea es como si tuviera un método mas.

O a lo mejor puede ser, por que la clase interna esta en el ambiente de la clase contenedora, nose exactamente.

¿Como funciona la clase interna, como un método?
#20
Java / [Ayuda]Timer en Android
12 Abril 2015, 05:41 AM
Pues cuando yo trabajaba en Java puro, recuerdo que usaba muchísimo la clase Timer la cual sirve para hacer correr procesos particulares o en diferentes hilos.

Pues ahora eso mismo me gustaría hacerlo en Android, me he fijado la Api de Android y si esta disponible la misma, solo que Android la ha cambiado bastante y lo encuentro un tanto complicado, nada que ver como lo hacia en Java.

He buscado por la red y he encontrado bastante material, por ejemplo este y otros:
http://stackoverflow.com/questions/4597690/android-timer-how
Trato de entenderlo, pero me es complicado, ¿alguien me podría ayudar a entender un poco de esto?

Se que hay otras formas como los Services, pero es demasiado para lo que requiero, necesito algo sencillo, por eso elige este, si alguien conoce alguna clase mejor, que la diga.
#21
Pues tengo un TextView que lo agrego desde el xml que por defecto lo dejo vacio para luego desde el código java poner algún texto como consecuencia de una acción de un botón.

Resulta que al momento de setear el texto del TextView desde el código, los caracteres especiales como las tilde por ejemplo, se muestran así <?> y no como debería ser.

He intentando metiendo una codificación UTF-8 dentro del xml donde va el TextView, pero nada, al momento de mostrarse no me reconoce esos caracteres.

¿Alguien sabe que tengo que especificar y cómo?
#22
Hoy quize probar una aplicación que estaba haciendo en Android Studio, pero no desde el emulador si no desde mi Telefono fisico, Descargue los drivers, la pc me los reconocio y todo bien hasta ahí. Entonces apreto el botón verde para ejecutar mi app y me aparece un cartel que me pregunta en donde voy a probar la aplicación pues elijo mi dispositivo fisico, resulta que cuando va a instalar mi app en mi telefono me aparece esto, en color rojo:

pkg: /data/local/tmp/com.example.aula.pruebaarchivosdetexto
Failure [INSTALL_FAILED_MEDIA_UNAVAILABLE]

He investigado por google y encontre algo en StackOverflow, pues intente hacer lo mismo pero no me da, no entiendo mucho lo que ponen, alguien me podría ayudar de esta u otra manera.

Este es link de la pregunta:
http://stackoverflow.com/questions/9273526/installation-error-install-failed-media-unavailable
#23
Java / [Duda]Subir mi App a Google Play
18 Marzo 2015, 19:22 PM
Pues estuve viendo los requisitos para subir mi App a Google Play y me saque las dudas, pero me quedo una. Si quiero subir una aplicación a Google Play que sera gratuita también tengo que pagar ¿no?. Es que que tengo una aplicación casi terminada y tenia pensado subirla a la tienda, la cual sera gratis, pero eso ¿Tengo pagar igual?.

¿Alguien que me comente su experiencia?
#24
Lo que quiero lograr es que aplicación se maximice al tocar una combinación de teclas.

Investigando por la web vi que decían que no es posible y que Java es un poco limitado en estas cosas que se hacen directamente con el SO y que se debía hacer uso de librerías de C/C++ pero no dieron mas información.

Se algo de C y C++ gracias a mis conocimientos de Java, pero muy básico.

¿Me podrían orientar un poco como hacerlo?

Y otra cosa ¿Como es posible hacer librerías con C y C++ para poder usarlas en Java?
#25
Java / [Duda]Mas de una clase en un fichero
13 Marzo 2015, 18:41 PM
Hola gente, aquí yo otra vez con una duda, esta vez acerca de clases.

Todas las veces que he hecho programas, hacia 1 clase por fichero, nunca lo he hecho con mas de 1 clase por fichero.

La duda es ¿Es lo mismo tener mas de una clase en un mismo fichero? ¿Que diferencia hay con la manera tradicional?
#26
Por ejemplo algunas clase de Java.util como ArrayList, La única librería que he usado es Java.lang pero ¿Se pueden usar otras mas? ¿Cuales son?
#27
Lo había visto en un tutorial, pero lo he vuelto a instalar y perdí las configuraciones, y me canse de buscar y no lo pude encontrar.

El Android Studio al iniciarlo me carga el ultimo projecto que estaba trabajando, lo cual me resulta cansador, ya que cuando estoy practicando creo un proyecto cada vez que lo abro, y tengo que esperar a que cargue el ultimo para recién crear otro.

¿Alguien sabe como deshabilitar eso?
#28
Pues tenia un código bastante largo y que me gustaba bastante, resulta que se corto la luz, lo bueno es que tenia guardado gran parte, quizás el 98% de todo el código ya que tengo esa costumbre de guardar al escribir cada instrucción. Enseguida vuelvo a prender la PC y me encuentro con que no tengo nada en esa clase, me dice lo siguiente:

illegal character: '\u0000'

illegal character: '\u0000'

illegal character: '\u0000'

illegal character: '\u0000'

illegal character: '\u0000'

illegal character: '\u0000'

illegal character: '\u0000'

illegal character: '\u0000'

illegal character: '\u0000'

illegal character: '\u0000'

illegal character: '\u0000'

illegal character: '\u0000'

illegal character: '\u0000'

illegal character: '\u0000'

illegal character: '\u0000'

illegal character: '\u000...


También abrí la carpeta de mi proyecto, busque la clase la abri con Notepad++ y me dice todo:
null null null null null null null null null null null null null null null null null null null null

Y así un montón de veces

Que rabia que tengo, venia tan bien, ¿A alguien le paso esto? ¿Como lo solucionaste?
#29
Hola gente, pues quería preguntarles que tan maduro esta Android Studio como para un principiante.
Durante estas semanas he venido usando el Eclipse, pero por hay he escuchado que el mismo en un futuro dejara de actualizarse para Android, por eso he decidido pasarme a Android Studio. Pero por la web escuche que los proyectos que haces, en futuras versiones del mismo no funcionan, ¿Esto es verdad, o como va esto?
#30
Tengo 2 paquetes, cada uno independiente:

->Class
  |->Clase1
->Images
  |->Imagen.png

También tengo 1 clase dentro del paquete class, en el cual intento hacer referencia a una imagen dentro del paquete Images, pero no se como volver un paso atrás, es decir, salir del paquete Class y entrar en Images para acceder a la imagen.

La referencia a la imagen la hice de esta forma, la cual me da error:

Código (java) [Seleccionar]
ImageIcon image1 = new ImageIcon(getClass().getResource("../Images/Imagen.png"))

En otros lenguajes había visto que se hacia así como muestro arriba.
#31
Hola gente, necesito obtener el contenido gráfico(Los cuadrados y esas cosas) de un JPanel y pintarlo en mi JPanel principal, es decir:
Tengo 2 clases las cuales heredan de JPanel, pues ¿Como obtendría el contenido gráfico de un JPanel, y pintarlo en otro?
Cuando digo contenido gráfico, me estoy refiero a las figuras geométricas que se pintan en pantalla como el cuadrado con fillRect(); etc.

Yo lo intente hacer de esta manera, pero no me funciono:

Este es el primer JPanel:
Código (java) [Seleccionar]
import java.awt.Dimension;
import java.awt.Graphics;

import javax.swing.JPanel;


public class GamePanel extends JPanel{
Maps mapa;

public GamePanel() {
setPreferredSize(new Dimension(640, 480));
setFocusable(true);
requestFocus();
mapa = new Maps();
}
public void paintComponent(Graphics g) {
paintComponent(mapa.getGraphics());//ESTA LINEA ME DA ERROR AL QUERER OBTENER LOS GRAFICOS DEL OTRO JPANEL
}
}



Y este es mi segundo JPanel:
Código (java) [Seleccionar]
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;

import javax.swing.JPanel;


public class Maps extends JPanel{

public Maps() {
setPreferredSize(new Dimension(640, 480));
}

public void paintComponent(Graphics g) {
g.setColor(Color.red);
g.fillRect(0, 0, 640, 480);
}
}


#32
Necesito mezclar los valores de un arreglo o de un ArrayList(con cualquiera me va).
Por ejemplo:
Tengo una arrayList, con 3 elementos
Código (java) [Seleccionar]

ArrayList array = new ArrayList();
array.add("Elemento 1");
array.add("Elemento 2");
array.add("Elemento 3");

//Algun metodo para mezclar el arrayList??
array.mezclarElementos();

Y lo que necesito, es que el arraList se vuelva a ordenar de manera aleatoria, es una de las pocas cosas que me faltan para terminar un juego que estoy haciendo  ;D.
#33
Buenas, desde que programo en Android he empezado a tener problemas al abrir mis proyectos, me salen errores y por monton. Lo que queria saber es, ¿Como mantengo actualizado para la programacion en Android? ¿Que es lo tengo que actualizar constantemente? Ya que desde que lo tengo no he actualizado nada aun.

Un saludo y feliz navidad ;D
#34
Hola gente, ¿Es posible usar un archivo de texto plano(txt) como base de datos y modificarlo desde Java?
El archivo tiene que estar en Internet, y desde java conectarme para modificar ese archivo.
Se perfectamente usar archivos en Java, pero no se si se pueda hacer lo que pido.
#35
Tengo un JFrame en el cual tiene contenido un JPanel(BoxLayout - orden vertical), en ese JPanel tengo 30 JLabels que se ordenan hacia abajo.
Esta seria la ventana:

Código (java) [Seleccionar]

ventana3 = new JFrame();
ventana3.setResizable(false);
ventana3.setLocation(200,200);
ventana3.setSize(400,400);

panel1 = new JPanel();
panel1.setLayout(new BoxLayout(panel1, BoxLayout.Y_AXIS));

//Con este ciclo agrego 30 Labels al panel.
int contador = 0;
while(contador < 30){
  JLabel label = new JLabel("Label");
  panel1.add(label);
  contador ++;
}
ventana3.add(panel1);
ventana3.setVisible(true);


Lo que quiero lograr es poner una barra de desplazamiento(JScrollPane) vertical al JPanel, para poder ver todos los JLabels contenidos en el JPanel.
#36
Entiendo que un IDE, es un programa que permite programar de forma mas sencilla, y por otro lado están las librerías y el compilador o interprete, que es lo fundamental para programar en un lenguaje en concreto.

Si me bajo la versión Profesional obviamente tendrá mas cosas, Si me bajo la Expres seguro que menos, eso lo tengo claro, pero que menos cosas trae la versión Express, es decir ¿Trae menos LIBRERÍAS o solo menos funciones del IDE?