Mostrar Mensajes

Esta sección te permite ver todos los mensajes hechos por este usuario, recuerda que solo puedes ver los mensajes en áreas en donde tu tienes acceso.


Temas - Phicar

Páginas: [1] 2
1
Comunidad / Disegnador web??
« : noviembre 08, 2010, 10:14:46 pm »
DISE

2
J2SE / J2EE / J2ME / Identador
« : noviembre 04, 2010, 08:52:12 pm »
Bueno, un ex-compagnero del colegio tenia un proyecto de programacion que era hacer un programa que identara codigo.

y pos aproveche que ustedes me joden por mis codigos..y pos la logica es sencilla...jejeje..

Código: (java) [Seleccionar]
import java.io.*;
public class Pulido{
 public static void main(String args[]) throws IOException{
  BufferedReader lector = new BufferedReader(new FileReader("Pulido.java"));
  int NumEspacios =0;
  String ex="";
  String tmp = "";
  FileOutputStream flout = new FileOutputStream("ClaseIden.java");
  while((tmp = lector.readLine())!=null){
   if(tmp.charAt(tmp.length()-1)=='{')
   NumEspacios++;
   else if(tmp.charAt(tmp.length()-1)=='}')
   NumEspacios--;
   if(NumEspacios<0)NumEspacios=0;
   for(int n =0;n<((tmp.charAt(tmp.length()-1)=='{')?(NumEspacios-1):NumEspacios);n++)
   tmp = " "+tmp;
   ex+=tmp+"\n";
  }
  flout.write(ex.getBytes());
 }
}

pd: es una huevonada, y pues falta ponerle que salte en if's y eso, pero es util y lo que falta se puede poner facil ;)

3
J2SE / J2EE / J2ME / Ocultar un JMenuBar?
« : octubre 20, 2010, 03:08:58 pm »
Buenas, toy haciendo una cosita y es que basicamente le estoy tomando una foto a un JFrame en tiempo de ejecucion..lo que hago es pintar sobre una imagen...El problema es el siguiente..en el Jframe original yo tengo un jmenuBar pero no quiero que aparezca en la foto porque no sabe sonreir..Ya he intentado poniendo su estado visible en false y sacandolo del contenedor, tomando la foto y agregandolo otra vez. Pero nada..

4
Maratones de Programación / Nada que hacer?
« : octubre 14, 2010, 09:55:05 pm »
Nada que hacer muchachos?

pos venga les digo

topcoder.com
project-euler.net
cstutoringcenter.com

dejen sus problemas aca y les podremos dar solucion entre todos :)....se le miden?

5
Matemáticas / Metodos de demostracion
« : septiembre 10, 2010, 02:05:10 pm »
Hola, no tengo nada que hacer asi que empezare del verbo empezar a hablarles sobre las demostraciones...

Bueno hay varios tipos de demostraciones...hay demostraciones por argumentacion logica, por induccion matematica, por absurdo, por equivalencias logicas etc..etc...

La primera que voy a exponer ya que es bastante poderosa en muchos casos es la induccion matematica...


La induccion matematica es un proceso de demostracion solo para el conjunto de los naturales y se basa basicamente en el hecho de tomar un primer elemento de un conjunto cualquiera S y ver que esta, suponer que se cumple para todo k y ver que se cumple para todo k+1

siendo 1 el elemento primero de los naturales(PARA MI y mis propositos)

Recordemos que son los numeros naturales pues

Los numeros naturales son los numeros que nos ayudan a contar. Eso son los numeros naturales...pero para una presentacion de ese conjunto fue necesario un analisis un poco mayor, ya que tocaba ver las propiedades del conjunto y las cualidades que estas conllevaban

Para eso hay varias construcciones pero yo me quedo con la de Peano que reza lo siguiente..

Vamos a definir dos cosas para empezar esa "e" que aparece reza un "pertenece a" puto latex!(mmm sera que podemos poner un plug de latex?) voy a buscarlo...eso le sube nivel al forro porque no creo que sea el unico que lo utiliza.

Esa "V" que ven significa "para todo"..
Esa "c" "es subconjunto de"
Ahora voy a definir(peano lo hizo definiendo la adicion en N) a S(n) =(n+1) siendo el siguiente de N..

P1)1 e N
P2)Si n e N -> S(n) e N
P3)[1 != S(n)](Vn e N) eso quiere decir que 1 al ser el primer elemento no es el sucesor de nadie ;)
P4) Si [PcN ^ (1 e P)^((Vn e P)(S(n)eN))] -> P=N

ese P4 es el principio de induccion...

Entonces demostremos alguna vaina por el principio de induccion para la cual toque hacer toda la parafernalia(despues veremos que no siempre es necesario hacerla)

Demostremos la Asociacion para la Suma...

S sera nuestro conjunto

S = {neN/ ([(p+m)+n]=[p+(m+1)])(Vm,p e N)}; p y m son fijos y la variable es n...

Entonces toca demostrar que 1 e S
Si 1 e S ->

(p+m)+1 = p+(m+1)
(p+m)+1=S(p+m); por Definicion de Siguiente de n
              = p+S(m);Por definicion de adicion
              = p+(m+1); por definicion de Siguiente

Ahora toca ver que si k e S -> S(k) e S
(p+m)+k = p+(m+k)  ---> (p+m)+S(k) = p+(m+S(k))

(p+m)+S(k) = p+(m+S(k))

(p+m)+S(k) = S((p+m)+k); definicion de adicion
                   =S(p+(m+k)); por definicion
                   =p+S(m+k); definicion de adicion
                   =p+(m+S(k)); definicion de adicion

Entonces se concluye que S = N por lo cual se demuestra la asociacion para los Naturales

----------------------------------------o--------------------o
Otro uso, un poco mas practico de la vaina es lo siguiente

1+2+3+4+5...+n = n(n+1)/2

Esa es la famosa de Gauss xDD...Quermemos demostrarla...tonces primero tenemos que ver que se cumple para 1

1 = 1(1+1)/2
1=1

ahora suponemos cierto n y vemos si se da para S(n)=n+1

1+2+3..+n+(n+1)=(n+1)(n+2)/2
pero por hipotesis de induccion  1+2+3..+n = n(n+1)/2

para lo cual

n(n+1)/2 + (n+1) = (n+1)(n+2)/2

Vamos a ver, operamos un poco al lado izquierdo

[n(n+1)+2(n+1)]/2 = (n+1)(n+2)/2 por distributiva

y queda demostrado

A que la induccion matematica es chevere, no?

Seguire la proxima con argumentacion logica, vemos ;)


6
Matemáticas / Spivak, Calculus
« : septiembre 09, 2010, 10:26:00 pm »
Pense que si alguno le interesaba la Matematica teorica...la de verdad xDDD tenia que tener este libro...pa que lo vean y lo compren...Recomendado a el enano (como le dije)

http://www.scribd.com/doc/7484719/Spivak-Calculus-Vols-I-y-II-Espanol
http://rapidshare.com/files/83794304/38197.ZIP.html

Tambien queda abierto por si alguien tiene problemas a desarrollar de este libro....si se puede se le ayudara :P

7
J2SE / J2EE / J2ME / Cambio de Base numerica
« : agosto 17, 2010, 01:36:31 pm »
Un codigo para cambio de bases numericas...

funciona asi..
donde numero es un String y enteros los otros dos parametros...

funciona con los algoritmos normales y pos tambien con numeros por debajo de 0 ;)..
changeBase(numero,baseProveniente,baseNueva)

Cualquier pregunta de una ;)

Chao  :-*
Código: (java) [Seleccionar]
public static String charset ="0123456789abcdefghijklmnopqrstuvwxyz";
public static String changeBase(String a,int b,int c){
String tmp = "";
boolean decimas = false;
String ap = "";
String anterior = a;
if(a.indexOf(".")!=-1){
decimas = true;
ap = "0."+a.substring(a.indexOf(".")+1,a.length());
a = a.substring(0,a.indexOf("."));
}
if(b==10){
BigInteger p = new BigInteger(a);
do{
tmp=charset.charAt(Integer.parseInt(String.valueOf(p.mod(new BigInteger(String.valueOf(c))))))+""+tmp;
}while((p=p.divide(new BigInteger(String.valueOf(c)))).compareTo(new BigInteger("0"))>0);
if(decimas){
tmp+=".";
BigDecimal parteDecimal = new BigDecimal(ap);
int i = 0;
while(i<10 && parteDecimal.compareTo(new BigDecimal("0.0"))>0){
parteDecimal = parteDecimal.multiply(new BigDecimal(c+".0"));
tmp+=charset.charAt(Integer.parseInt(String.valueOf(parteDecimal).substring(0,String.valueOf(parteDecimal).indexOf("."))));
parteDecimal=parteDecimal.subtract(new BigDecimal(String.valueOf(parteDecimal).substring(0,String.valueOf(parteDecimal).indexOf("."))+".0"));
i++;
}
}
}else if(c==10){
BigInteger r = new BigInteger("0");
for(int n =a.length()-1,d=0;n>-1;n--,d++)
r= r.add(new BigInteger(String.valueOf(charset.indexOf(a.charAt(n)))).multiply(new BigInteger(String.valueOf(b)).pow(d)));
tmp = String.valueOf(r);
if(decimas){
BigDecimal rr = new BigDecimal(tmp+".0");
//System.out.println(rr+"---"+ap.substring(2,ap.length()));
for(int n =2;n<ap.length();n++){
//System.out.println(new BigDecimal(charset.indexOf(ap.charAt(n))+".0")+"*"+BigDecimal.ONE.divide(new BigDecimal(new BigInteger(String.valueOf(b)).pow(n-2)))+"="+
(new BigDecimal(charset.indexOf(ap.charAt(n))+".0")).multiply(BigDecimal.ONE.divide(new BigDecimal(new BigInteger(String.valueOf(b)).pow(n-2)))));
rr=rr.add((new BigDecimal(charset.indexOf(ap.charAt(n))+".0")).multiply(BigDecimal.ONE.divide(new BigDecimal(new BigInteger(String.valueOf(b)).pow(n-1)))));
}
tmp = String.valueOf(rr);
}
}else{
tmp = changeBase(changeBase(anterior,b,10),10,c);
}
return tmp;
}

8
Matemáticas / RSA No es Magia
« : agosto 14, 2010, 05:15:49 pm »
Acabo de salir de clase de certificacion y pos escribi esto porque la verdad esa mierda es muy aburrida xDDDDDDDDDDDD

Bueno pa los que vieron mi post de RSA en el foro de Cripto o les importa un culo y conocen el algoritmo pero ni puta idea de el por que esa vaina funciona pos home les traje el recuerdo y la sorpresa ;)

pa empezar definamos concepticos

la funcion totient euler relaciona un numero y la cantidad de coprimos desde 1 hasta el numero antecedente del numero en funcion...Sabiendo pues que un numero a es coprimo con b si su

GCD(a,b)=1...osease no hay comunes divisores entre a y b ;)

resulta que un par de matematicos fermat y euler hicieron uno un teorema y el otro la generalizacion de el teorema..

Fermat inicio con un teorema asi

Sea a un numero natural cualquiera y o un numero primo ap mod p = a Siempre y pues usando la aritmetica modular se tiene lo siguiente(demostrado por induccion por Euler)

ap-1 mod p = 1

ahora euler viendo el teorema de Fermat y demostrandolo Uso solo la notacion de su funcion (PHI)

donde phi(n)= (n es primo)?n-1:mult((p-1)/p); para todo p divisor primo de n....

siendo que en el teorema de fermat p era primo entonces tenemos que p-1 era la famosa funcion

para lo cual

aPhi(p) mod p = 1

Ahora pasado esta vaina veamos lo siguiente..si recuerdan RSA tiene dos claves la publica que se compone por (e,n) y la privada que se compone por (d,n)

donde n = pq con pq primos grandes ;)....

ahora. Nosotros calculabamos a e como un numero coprimo a Phi(n) osease que GCD(Phi(n),e)=1..
y calculabamos d como que la multiplicacion de e*d al dividirla por Phi(n) nos diera 1..en otros terminos

ed mod Phi(n) = 1

ahora, nosotros cifrabamos asi

Sea C el numero a cifrar y Z el numero cifrado

Z = Ce mod n
C = Zd mod n
para lo cual teniamos que C = Ced mod n por ley de exponentes en los reales :)...

ahora podemos ver lo siguiente... por la definicion de n podemos cambiar la expresion por

C = Ced mod pq

y podemos cambiar a ed de la siguiente manera...  ed mod Phi(n)=1 -> por definicion de division
sea k un numero natural...
ed = k * Phi(n) +1

tenemos
C = Ck * Phi(n) +1 mod pq   ; pero por definicion de Phi(n) tenemos
C = Ck * (p-1)(q-1) +1 mod pq ; Pero arreglando la vaina con propiedades de los reales, tenemos
C = C(p-1)k*(q-1) * C1 mod pq  ; por propiedades distribuyo el modulo en los factores..

C = C(p-1)k*(q-1) mod pq  * C mod pq

sabemos pro congruencia que M no es 0 por modulo p para lo cual

C = C(p-1)k*(q-1) mod p  * C

pero por teorema de fermat sabemos que eso es 1 por lo cual

C = 1k*(q-1) mod p  * C

para lo cual C = C  QED...

;)...

Los dejo....nada es magia y esperen AES ;)...jejejeje

9
Dudas / Sugerencias / Aca mi sugerencia
« : julio 31, 2010, 03:34:07 pm »
Pa los que les gusta estudiar y no tuvieron la luca ni la suerte ni el intelecto de la mierda pa MIT osea todos nosotros :( que mierda de suerte :(....

aca les tengo una vaga pero poderosa herramienta ;).

http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/

ahi hay apuntes, videos, fotos de todo de esa gente...por ahi esta tambien fisica pa el enano y matematicas para condor xDD..

 :-*

10
J2SE / J2EE / J2ME / SQL Java
« : junio 23, 2010, 12:59:06 pm »
Hola Amigos, como tan?

Se que me he perdido un tiempo pero he tenido la salud un asco :(....Y pos me he puesto a leer ocio(Joder han leido Millenium? Que libro tan Aspero!!)

Bueno lo que pasa es que tengo que conectarme con SQL en java y no uso ide...baje el driver mysql-connector-java-5.1.12-bin.jar y lo trato de llamar para solamente probar de esta manera

Código: (java) [Seleccionar]
import java.sql.*;
public class PruebaSQL{
public static void main(String args[]){
try{
   Class.forName("com.mysql.jdbc.Driver");
} catch (Exception e)
{
   e.printStackTrace();
}
}
}
y lo compilo de la siguiente manera( para agregar al classpath en la compilada)

javac -classpath ./mysql-connector-java-5.1.12-bin.jar PruebaSQL.java

y a su vez lo ejecuto dandole lo mismo :( pero me echa exception NoClassDefFoundError

:( No se que hacer, aca tienen un hilo y es facil...en internet es facil...Pero joder imposible que la solucion sea Eclipse, no me trama esa mierda


PD: Monje a ustedes se les ocurrio hacer la subida de lo de clinicas en paralelo? (Threads)

11
J2SE / J2EE / J2ME / BrainFuck interprete
« : junio 01, 2010, 11:41:56 pm »
Acabo de programar esta chimbaa...creo que tengo errores con algunos pero con otros programas de muestra funca....me cago en BrainFuck....El error creo que esta en la parte de input..no se porque...solo hice lo que el algoritmo dice que debo hacer pero bueno, la vida es injusta...para que no se me olvide a mi y si les sirve de alguna mierda, Aca tienen :P

Código: (javascript) [Seleccionar]
//gresando info
import java.io.*;
import java.util.*;
public class BFuck{
public static int p = 0;
public static byte buff[] = new byte[1024];
public static String Params = "";
public static int sec = 0;
public static void main(String args[]) throws IOException{
FileInputStream flIn = new FileInputStream(args[0]);
byte ar[] = new byte[(int)(new File(args[0]).length())];
flIn.read(ar);
String stream = new String(ar,0,ar.length);
stream = stream.replaceAll("\n","");
//System.out.println(stream);
Params = args[1];
Arrays.fill(buff,(byte)0);
BF(stream);
}
public static void BF(String a) throws IOException{
for(int n = 0;n<a.length();n++){
switch(a.charAt(n)){
case '+':
buff[p]++;
break;
case '-':
buff[p]--;
break;
case '<':
p--;
break;
case '>':
p++;
break;
case '[':
int den = p;//temporal que sirve pa ver el puntero a la variable que sirve como contador de ciclo
int conta = 0;//aca no sirve anidar como en operaciones sino lineal...por eso el ciclo extragno que me sabe a mierda
for(int r=n+1;r<a.length();r++){//ciclo pa ver cuando se cierra el ciclo y poderlo invocar recursivamente
if(a.charAt(r)==']' && conta==0){
conta=r;
break;
}
if(a.charAt(r)==']' && conta>0)conta--;
if(a.charAt(r)=='[')conta++;
}
String dentro=a.substring(n+1,conta);
while(buff[den]>0)
BF(dentro);
n+=dentro.length();
break;
case '.':
if(buff[p]<0)System.out.println("PUTA!");
System.out.print((char)buff[p]);
break;
case ',':
//buff[p]=(byte)Params.charAt(sec);
//sec++;
//System.out.println("entre");
buff[p]= (byte)((new InputStreamReader(System.in)).read());
//System.out.println("pase");
break;
}
}
}
public static int Veces(String a,char b){
int conta =0,tmp=0;
while((tmp = a.indexOf(b,tmp))!=-1){
tmp++;
conta++;
}
return conta;
}
}

pd: Funca en basicamente todos los programas de prueba que vi, menos en el que necesito que funcione :(

12
Comunidad / Vendo NetBook
« : mayo 21, 2010, 11:57:36 am »
Que hubo locos?...

Bueno la historia es la siguiente....Ayer se celebro en la Universidad una vaina llamada TECNOUSA...y pos habia maraton de programacion y pos me inscribi solito y sin ninguna oportunidad...y pos resulta pasa y acontece que me gane esa mierda xDDDD...tuve 4 problemas de 4...mientras mis compagneros encorbatados e ingeniebrios tuvieron con el maximo 2 de 4....So me dieron un netbook pero es peque y a mi me gustan los laptos grandes...So toy vendiendolo Acer Aspire mini..azulito Win XP...camara...1 gb en ram e Intel atom de procesador

Lo vendo en 600...por si alguno le hace....


pd: apenas lo venda puta petaco pa RIC..

13
J2SE / J2EE / J2ME / Piano MIDI
« : mayo 11, 2010, 09:18:07 pm »
Que hubo locos? pos tengo un amigo que estudia ing de sonido y me pidio que le hiciera un Piano y pos aca ta...pero necesitan las notas en archivos .midi y no las voy a subir...:P Como pa que vean y juzguen y si les sirve de algo pos haganle...ta comentado porque mi amigo no sabe programar :P

Código: (java) [Seleccionar]
import javax.sound.midi.*;//import es pa importar la clase, ahi importa la clase que maneja archivos midi
import java.awt.*;//esto es libreria grafica
import java.awt.Color.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;//libreria donde aparece el concepto de Vector(Arreglo dinamico(que crece solito))
import java.io.*;//libreria que maneja archivos
public class Piano extends JFrame{//clase principal
public static String notas[] ={"do#","re#","fa#","sol#","si#","do","re","mi","fa","sol","la","si"};
public static Vector<teclas> TeclasPiano = new Vector<teclas>();//el arreglo donde iran las teclas..
public Piano(){//Constructor de la clase
super("Piano");
Container con = getContentPane();
con.setBackground(Color.blue);
setSize(1000,1000);
setVisible(true);
//addWindowListener(this);
//addKeyListener(this);
addMouseListener(new ElMouseMePelaElCulo(TeclasPiano));//agnadimos que puede usarse el mouse
}
/*public void mouseClicked(MouseEvent pin){
JOptionPane.showMessageDialog(null,"("+pin.getX()+","+pin.getY()+")","piano");
}*/
public void paint(Graphics g){//esta funcion es la que se encarga de pintar los objetos
super.paint(g);
int tamy=0;
for(int n =TeclasPiano.size()-1;n>-1;n--){//aca recorremos el Vector que contiene las teclas
if(TeclasPiano.get(n).esSos){//aca preguntamos si es sostenida o no es sostenida
g.setColor(Color.black);//esto define el color del objeto
tamy = 50;
}else{
g.setColor(Color.white);
tamy=100;
}
g.fillRect(TeclasPiano.get(n).pos[0],TeclasPiano.get(n).pos[1],60,tamy);//crea rectangulos con color, los parametros son las coordenadas
}
}
public static void main(String args[]){//funcion principal
Piano pipi = new Piano();//instancio el objeto pieano
//Vector<teclas> TeclasPiano = new Vector<teclas>();
for(int n=0;n<notas.length;n++){//recorro el arreglo donde tan los nombres de las notas
int posTmp[]= new int[2];
boolean sos=true;
if(notas[n].indexOf("#")!=-1){//aca le pregunto al arreglo si en su cadena tiene el caracter # que significa sostenido(pregunta si la nota es sostenida)
int t = n;
if(n>=2)t++;
if(t>n)//Asi hacemos el espacio grande entre las teclas sostenidas
posTmp[0]=260+(t*70);
else
posTmp[0]=280+(t*70);
posTmp[1]=300;
}else{
posTmp[0]=260+((n-5)*62);
posTmp[1]=300;
sos=!sos;
}
TeclasPiano.add(new teclas(notas[n]+".mid",posTmp,sos));//agnado la tecla que cree al vector
}
for(int n = 0;n<TeclasPiano.size();n++)//recorro el vector para imprimir por consola los resultados
System.out.println(notas[n]+"  "+(TeclasPiano.get(n)).arch+" ("+TeclasPiano.get(n).pos[0]+","+TeclasPiano.get(n).pos[1]+")   "+TeclasPiano.get(n).esSos);
}
}
class ElMouseMePelaElCulo extends MouseAdapter{//clase que permite interaccion con Mouse
Vector<teclas> pepe;//vector que contendra las teclas creadas en la otra clase
public ElMouseMePelaElCulo(Vector<teclas> pepe){//constructor de la clase
this.pepe = pepe;//le asigno las teclas al vector
}
public void Sonar(String a) throws IOException{//funcion que hace posible que suene el piano
try{//esto es para atrapar errores en ejecucion :)
Sequence S=MidiSystem.getSequence(new File(a));//se abre el archivo midi pasado por parametros a un secuenciador(ni puta idea que es eso)
Sequencer seq=MidiSystem.getSequencer();
seq.open();//se abre pa que suene
seq.setSequence(MidiSystem.getSequence(new File(a)));
seq.start();//empieza a sonar
try{
Thread.sleep(1000);//le digo al computador que lo deje sonar 1000 ms osea 1 segundo
}catch(Exception phicar){
System.err.println(phicar);
}
seq.stop();//paro el midi
}catch(Exception sonido){
System.err.println(sonido);
}
}
public void mouseClicked(MouseEvent pin){//funcion a la cual el programa va cuando detecta un click
int posX = pin.getX();//posicion en x del click
int posY = pin.getY();//posicion en y
for(int n = 0;n<pepe.size();n++){//recorro vector de teclas
if(posX>=(pepe.get(n)).pos[0] && posX<=((pepe.get(n)).pos[0]+60)){//le pregunto si esta en los parametros x de la tecla
if(posY>=(pepe.get(n)).pos[1] && posY<=((pepe.get(n)).pos[1]+(((pepe.get(n)).esSos)?50:100))){//le pregunto si esta en parametros y
System.out.println((pepe.get(n)).arch);//imprimo el archivo que deberia cargar
try{
Sonar((pepe.get(n)).arch);//cargo el archivo a la funcion Sonar
}catch(IOException p){
System.err.println(p);
}
return;
}
}
}
//JOptionPane.showMessageDialog(null,"("+pin.getX()+","+pin.getY()+")");
//repaint();
}
}
class teclas{//clase teclas
String arch="pipi.mid";//ruta del archivo
int pos[];//posicion x y y
boolean esSos = false;//si es sharp o no lo es
public teclas(String a,int c[],boolean p){//contructor
this.arch=a;
this.pos=c;
this.esSos=p;
}
}
pd: despues les subo las notas..
pd2: Fotico que nunca falta :P
http://img196.imageshack.us/img196/8782/pianoj.png

14
J2SE / J2EE / J2ME / Glider
« : marzo 18, 2010, 12:46:26 am »
jejejej pos vean

http://mathworld.wolfram.com/Life.html

jejeje y el resultado mio fue..

quiero saber si tengo algo mal o alguna cosa ;)

Código: (java) [Seleccionar]
import java.util.*;
import java.io.*;
public class Juego{
public static boolean grid[][] = new boolean[20][20];
public static void main(String args[]) throws IOException{
for(int n = 0;n<20;n++)
Arrays.fill(grid[n],false);
for(int n = 0;n<6;n++)
for(int m = 0;m<6;m++)
grid[n][m]=((((int)(Math.random()*100))%2)==0);
for(int n = 0;n<Integer.parseInt(args[0]);n++){
ImpGen();
ModGen();
}
}
public static void ImpGen(){
for(int n = 0;n<grid.length;n++){
for(int m = 0;m<grid[n].length;m++)
System.out.print(((grid[n][m])?"o":"x")+" ");
System.out.println("");
}
System.out.println("");
}
public static void ModGen(){
boolean tmp[][] = new boolean [20][20];
for(int n =0;n<grid.length;n++)//swap on
for(int m = 0;m<grid[0].length;m++)
tmp[n][m]=grid[n][m];
for(int n = 0;n<grid.length;n++){
for(int m = 0;m<grid[n].length;m++){
int vec = 0;
if((m+1)<grid[n].length)//derecha
if(grid[n][m+1]) vec++;

if((m-1)>-1)//izquierda
if(grid[n][m-1]) vec++;

if((n-1)>-1){//arriba
for(int x = 0;x<3;x++)
if(((m-1)>-1)&&(((m-1)+x)<grid[n-1].length))
if(grid[n-1][(m-1)+x])vec++;
}

if((n+1)<grid.length){//abajo
for(int x = 0;x<3;x++) 
if(((m-1)>-1)&&(((m-1)+x)<grid[n+1].length))
if(grid[n+1][(m-1)+x])vec++;
}
if(grid[n][m]){//esta vivo
if(vec!=2 && vec!=3){
tmp[n][m]=false;
//System.out.println("vivo a muerto ["+m+","+n+"] ");
}
}else{//esta muerto
if(vec==3){
tmp[n][m]=true;
//System.out.println("Muerto a vivo ["+m+","+n+"] ");
}
}
}
}
for(int n=0;n<tmp.length;n++)//swap off
for(int m=0;m<tmp[0].length;m++)
grid[n][m]=tmp[n][m];
return;
}
}


15
J2SE / J2EE / J2ME / Pesadilla Trivial
« : marzo 12, 2010, 12:54:54 pm »
Hola Amigos, como tan? Bueno, la cuestion es la siguiente y echo historia xDD

Habia una vez en un reino muy lejano un hermoso archivo llamado contestApplet.jnlp, ese archivo era el mas lindo del reino y era muy flaquito(no pesaba nada), entonces el mago del reino quizo transportar a cont, como le decia carignosamente, hacia el otro lado del reino, pero no queria usar ni sus pasos de SAMBA ni su Seguridad ni sus complicaciones de transferencia, queria que fuese lo mas limpio posible, usando teletransportadores magicos de datagramas (UDP), entonces el Mago se acordo de Tftp un protocolo de transferencia de archivos que soporta de 512 por paquete, necesita packetes acknowledges para seguir y esta basado en UDP...

asi que el Mago se acordo de HLSP el cual tenia una herramienta de servicio tftp, pero esta no funcionaba tan folcloricamente en el reino, asi que se dispuso a usar su varita y despues de decir "apt-cache search tftp" se le desplegaron un par de servidores para la transferencia de cont, atftpd y tftpd, ese par de hermanos locos no servian pa 3 mierdas, ya que el mago, sabio mago, no los pudo hacer correr y entonces el Mago se dijo asi mismo, tomemonos un cafe y creemoslo :), asi que el Mago fue y se tomo un JAVA y el resultado fue el siguiente

Código: (java) [Seleccionar]
import java.util.*;
import java.io.*;
import java.net.*;
public class TftpServer{
public static byte pktR[];
public static String Errores[]={"Ni idea :P","File not Found, search well ;)","Access Violation","Disk Full, desfullit","Que es eso?","ID?","File Already Exists :P","No such User"};
public static String OpcodesStr[] = {"Leer","Escribir","Data","ack","Error"};
public static void main(String args[]) throws IOException{
DatagramSocket servidor = new DatagramSocket(69);
while(true){
pktR=new byte[512];
DatagramPacket pktRe = new DatagramPacket(pktR,512);
servidor.receive(pktRe);
System.out.println("Conexion recibida de "+(pktRe.getAddress()).toString()+":"+pktRe.getPort());
byte epa[] = new String(pktRe.getData(),0,pktRe.getLength()).getBytes();
String ArchivoN = leerArchivo(epa);
String mode = leerModo(epa);
String Op = OpcodesStr[((int)epa[1])-1];
System.out.println("Accion:"+Op+"\nArchivo:"+ArchivoN+"\nModo:"+mode);
if(Op.equals(OpcodesStr[0])){//read
if(new File(ArchivoN).exists()){//Esooo...
System.out.println("Enviando..");
byte archivo[] = new byte[(int)new File(ArchivoN).length()];
FileInputStream flin = new FileInputStream(ArchivoN);
flin.read(archivo);
flin.close();
int p =0,blq =1;
int veces = ((int)new File(ArchivoN).length())/512;
System.out.println(veces+"*512+"+archivo.length%512+"=="+archivo.length);
byte ackp[]= new byte[4];
DatagramPacket ack = new DatagramPacket(ackp,ackp.length);
servidor.receive(ack);
byte fu[] = ack.getData();
byte nose[]= new byte[2];
nose[1]=(byte)4;
//---
for(;blq<=veces;blq++){
byte DtaSe[] = new byte[516];
Arrays.fill(DtaSe,(byte)0);
DtaSe[1]=(byte)3;
DtaSe[2]=(blq<256)?(byte)0:(byte)(blq%256);
DtaSe[3]=(blq>256)?(byte)0:(byte)(blq);
for(int n = 4;n<DtaSe.length;n++)
DtaSe[n]=archivo[((blq-1)*512)+(n-4)];
DatagramPacket DtaSend = new DatagramPacket(DtaSe,DtaSe.length,ack.getAddress(),ack.getPort());
servidor.send(DtaSend);
Arrays.fill(ackp,(byte)0);
ack = new DatagramPacket(ackp,ackp.length);
servidor.receive(ack);
}
//blq++;
byte DtaSe[] = new byte[(archivo.length%512)+4];
Arrays.fill(DtaSe,(byte)0);
DtaSe[1]=(byte)3;
DtaSe[2]=(blq<256)?(byte)0:(byte)(blq%256);
DtaSe[3]=(blq>256)?(byte)0:(byte)(blq);
int mod = archivo.length%512;
for(int n = 4,x=archivo.length-mod;n<DtaSe.length && x<archivo.length;n++,x++)
DtaSe[n]=archivo[x];
DatagramPacket DtaSend = new DatagramPacket(DtaSe,DtaSe.length,ack.getAddress(),ack.getPort());
servidor.send(DtaSend);
Arrays.fill(ackp,(byte)0);
ack = new DatagramPacket(ackp,ackp.length);
servidor.receive(ack);

//----
/*------------------------while((p<=archivo.length) && nose[1]==(byte)4){//problemas :S
byte DtaSe[] = new byte[516];
Arrays.fill(DtaSe,(byte)0);
DtaSe[1]=(byte)3;
DtaSe[3]=(byte)blq;
for(int n = 4;(n<DtaSe.length) && (p<archivo.length);n++,p++)
DtaSe[n]=archivo[p];
//System.out.println(DtaSe);
if((p+1)>=archivo.length){
System.out.println("Ultimo"+(archivo.length%512)+" "+blq);
int no = (archivo.length%512)+4;
byte DtaSeu[] = new byte[no];
Arrays.fill(DtaSeu,(byte)0);
DtaSeu[1]=(byte)3;
DtaSeu[3]=(byte)blq;
for(int n = 4;n<no;n++)
DtaSeu[n]= DtaSe[n];
DatagramPacket DtaSend = new DatagramPacket(DtaSeu ,DtaSeu.length,ack.getAddress(),ack.getPort());
servidor.send(DtaSend);
}else{
DatagramPacket DtaSend = new DatagramPacket(DtaSe,DtaSe.length,ack.getAddress(),ack.getPort());
servidor.send(DtaSend);
}
ack = new DatagramPacket(ackp,ackp.length);
servidor.receive(ack);
nose = ack.getData();
blq++;
-----------------------------------------}*/
System.out.println("enviado");
}else{//paila porque el archivo no existe
byte err[] = new byte[5+Errores[1].length()];
err[0]=0;
err[1]=5;
err[2]=0;
err[3]=1;//1
err[err.length-1]=0;
for(int n = 4;n<Errores[1].length();n++)
err[n]=(byte)Errores[1].charAt(n-4);
DatagramPacket PktS = new DatagramPacket(err,err.length,pktRe.getAddress(),pktRe.getPort());
servidor.send(PktS);
System.out.println("Ese archivo NO existe");
}
}else if(Op.equals(OpcodesStr[1])){//write
if(new File(ArchivoN).exists()){//paila porque no podemos reescribir
byte err[] = new byte[5+Errores[6].length()];
err[0]=0;
err[1]=5;
err[2]=0;
err[3]=6;
err[err.length-1]=0;
for(int n = 4;n<Errores[6].length();n++)
err[n]=(byte)Errores[6].charAt(n-4);
DatagramPacket PktS = new DatagramPacket(err,err.length,pktRe.getAddress(),pktRe.getPort());
servidor.send(PktS);
System.out.println("Ya tenemos ese archivo :P");
}else{//Esooo..Problemas, no se que putas pasa
byte ackp[] = new byte[4];
ackp[0]=0;
ackp[1]=4;
ackp[2]=0;
ackp[3]=0;
DatagramPacket pktAc = new DatagramPacket(ackp,ackp.length,pktRe.getAddress(),pktRe.getPort());
servidor.send(pktAc);
byte dt[] = new byte[516];
DatagramPacket DtaRe = new DatagramPacket(dt,dt.length);
int blq = 1;
servidor.receive(DtaRe);
FileOutputStream flout = new FileOutputStream(ArchivoN);
while(true){
byte tmp[] = DtaRe.getData();
//System.out.println(new String(tmp,0,tmp.length));
blq = (int)tmp[3];
int blq2=(int)tmp[2];
for(int n = 4;n<DtaRe.getLength();n++)
flout.write(tmp[n]);
ackp[2]=(byte)blq2;
ackp[3]=(byte)blq;
pktAc = new DatagramPacket(ackp,ackp.length,pktRe.getAddress(),pktRe.getPort());
servidor.send(pktAc);
if(DtaRe.getLength()<516)
break;
dt=new byte[516];
DtaRe = new DatagramPacket(dt,dt.length);
servidor.receive(DtaRe);
}
flout.close();
System.out.println(ArchivoN+" Recibida "+ new File(ArchivoN).length());
}
}
//servidor.close();
}
}
public static String leerArchivo(byte a[]){
String tmp = "";
for(int n =2;a[n]!=('0'-'0');n++)
tmp+=(char)a[n];
return tmp;
}
public static String leerModo(byte a[]){
int con = 0;
String tmp ="";
for(int n = 0;n<a.length-1;n++){
if(con==2)
tmp+=(char)a[n];
if(((int)a[n])==0)
con++;
}
return tmp;
}
}

El Mago no quedando contento ya que habia logrado pasar a cont, paso varias cosas teniendo desastrozas consecuencias ya que podia mandar todos los archivos de texto plano que podia, pero trato de mandar ejecutables y los bytes se perdian o se reorganizaban de una forma que el mago no podia tolerar ya que el marcaban su archienemigo

"Segmentation fault "

Asi que el mago confia en ustedes compagneros RIC para ver que putas le pasa a mi programita :S

pd: quise que funcara con el standar, asi que ahorrense comentarios de( paselo directo pro tcp o udp streams..)
pd2: quiero ser mago :S..
pd3: me base en esto http://tools.ietf.org/html/rfc1350

Páginas: [1] 2