Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - SamML

Páginas: [1]
1
Si empiezas a programar empieza por lenguajes que exijan y no empiezes por lenguajes orientados a objetos hasta que no tengas conocimientos en metodología. Ada o Pascal son buenos lenguajes que exijen mucho de forma que luego al avanzar a lenguajes mas permisivos te sera mas fácil. Y si quieres tener la mejor base de como funciona en si la programación empieza aprendiendo lenguaje ensamblador, que es casi la raíz de todo y te da  los conceptos de como luego funciones de lenguajes de alto nivel funcionan de forma interna.

2
Creo, y digo creo, que debes usar return para entregar el objeto creado al asignar la clase PanelArriba cuando quieras usarlo fuera de esa función. Si no simplemente creas un objeto de caracter local, entiendo.

Saludos.

3
No creo sea tu caso pues en principio entiendo que tienes ciertos estudios que al menos por relación te han acercado al mundo de la programación. Ahora bien si doy mi opinión considero que quien aprende a programar si de verdad quiere aprender debe empezar a hacerlo desde la base y seguir una progresión. Yo no creo que quien aprende a programar debe hacerlo por un lenguaje de alto nivel o lenguajes modulares o concretos como la programación web.. Para mi existe una progresión clara de esto y es partiendo de los sistemas lógicos a la maquina sencilla, conocer el lenguaje ensamblador y a partir de ahi profundizar en un lenguaje de funciones y procedimientos a alto nivel, tipo Pascal o Ada. Seguido de eso empezar con la programación orientada a objetos y a partir de ahí elegir nuestro ámbito y desarrollarlo. Eso va a crearte unos buenos fundamentos, tantos como en el nivel en que llegues tu mismo a profundizar pues todo nunca vas a saberlo.

El programador que dice conocer todos los lenguajes miente pero los programadores que asientan sus fundamentos si son capaces de analizarlos todos CUANDO LO NECESITAN.

Si algo puedo decirte es que los estudios son lo de menos en la programación, aunque los buenos tutores si ayudan también es cierto, pero al final es algo que puedes aprender a dia de hoy por muchos medios y practicar tu mismo observando resultados.
Igualmente eso no te asegura un puesto de trabajo con ello, yo mismo busco empleo, y hasta hace poco aun conociendo los fundamentos de programación y gustandome programar y habiendo pasado las etapas que te comento ni me planteaba buscar trabajo de eso porque no me considero ni de lejos un profesional aun habiendo tocado muchos lenguajes.
 Al final si te gusta puedes hacerlo y no creo que debas verlo únicamente por la parte de cambiar de empleo, al final tus estudios realmente no son tan distantes al mundo de la programación, que engloba mucho, y si de repente ves que la programación web te gusta simplemente aplica tus conocimientos sobre fundamentos para aprender nuevos lenguajes.

Un profesional de la la programación se hace profesional profundizando en un ámbito realmente, con una buena base. Es como aprender un idioma. Primero aprendes a oir, luego  a imitar sonidos, luego a decir palabras luego aprendes tu idioma, luego conoces palabras de otros idiomas y si decides dedicarte a ser profesional de un idioma lo eliges y lo profundizas. Asi mismo veo yo la programación. Creo que el tiempo es un factor en juego. Considera que si no has profundizado en ningún lenguaje concreto vas a requerir de tiempo para aprenderlo, y no es poco. Nombras Html, css3 y js pero realmente, por mi experiencia, aun conociendo esos 3 lenguajes en su base no te va a hacer profesional de la programación web pues es un entorno que esta en continua evolución. Quien aprendió/dimos js tuvo que aprender Jquery despues que al final es un metodo nuevo, o Angular JS...Quien sabe HTML o maquetación aun le es nuevo el uso de Frameworks, rejillas.. etc..Igual con las bases de datos que utilices..SQL..MONGODB.. Por nombrar de lo mas usado pero asi mismo puedes aplicarlo a cientos de metodos o aplicaciones del propio lenguaje. Al final es adaptarse y saber el que usar y lo que necesitas. Y para eso volviendo al principio lo que hace falta y de verdad sirve y te facilita todo para comprenderlo son los fundamentos.

Un profesor mio de estudios que luego dejé me dijo que el buen programador con fundamentos nunca dirá que no sabe utilizar un lenguaje, dirá que hoy no sabe, pero en semanas podrá estar utilizandolo, quien mas quien menos, y es cierto.
Yo mismo por ejemplo he resuelto dudas y problemas de este foro en lo poco que llevo de lenguajes como Java que no he utilizado en mi puta vida  :o y aun soy un mindundi que me queda TODO por aprender...

Si puedo decirte algo es que si te gusta con esfuerzo aprenderás y no deberías entonces solo verlo por que sea un trabajo.
Saludos

4
Compañero, no es un problema de formato o de que no pueda mostrar caracteres acentuados si no un problema en el entendimiento de un string en si y el metodo substr. Tienes que ver los strings como si se trataran de un array, porque lo son internamente.
Y como te digo un caracter especial ocupa 2 posiciones de dicho array, y no una.

No obstante el código que te puse funciona bien, si no entiendes algo de ahí podemos comentarlo.

Como te dije un caracter con tilde ocupa dos posiciones, no una. Si mi cadena es simplemente.

cadena = "ó"

Y quiero mostrarla por el metodo substr haré, substr(0,2) no substr(0,1).

Si entiendes los metodos de codificación de caracteres te explico que tiene que ver en el tamaño de bytes que utiliza para almacenarl. Si un caracter normal ocupa 4 bytes un caracter acentuado ocupa 8 bytes, por ejemplo. Por eso te muestra el signo de interrogacion porque tomarias solo 4 bytes de tu letra con tilde que ocupa 8 y eso decodificado no sabe lo que es.

Saludos

5
De todo un poco... / Re:Se puede burlar un anti speedhack?
« en: 17 de Agosto 2015, 20:12 »
Solo tienes que capturar los paquetes de entrada y salida del servidor, desencriptarlos via intuicion, localizar los paquetes que contienen las llamadas que te interesan forzando esa situación, parsearlos, entender el paquete, hacer un defour de la función que envía y la que recibe los paquetes via dll e inyectar tu código.
No obstante, si localizas la función que te saca del juego y parcheas el propio ejecutable quizá también pueda funcionar.  :-X :-X
No obstante 2, si haces todo eso el speed hack te va dar un poco igual pues básicamente puedes tener el control del juego.
No obstante 3, puedes empezar por manuales de ensamblador seguido de C++ y sistemas operativos ¿windows?


Espero ser de ayuda, saludos.

Edito:
No obstante 4, Lo raro es que el speedhack de cheatengine haya funcionado en algún sitio alguna vez, creo que es la primera vez que oigo eso :D
No obstante 5, si ha funcionado el cheatengine prueba no hayan sido tan cutres y hayan capado solo por procesos activos en cuyo caso desde el mismo cheatengine puedes buscar la lista de software que detectan que estará en texto plano, probablemente.

6
Código: [Seleccionar]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>

</head>
<body>
<?php 


$frase 
"Didáctica y divulgación de la programación";
$did substr($frase,0,10);

$div substr($frase,13,12);

$pro substr($frase,-13);
echo 
"Las palabras primera, tercera y sexta son: $did$div$pro <br/>";
echo 
"La palabra primera es $did y tiene ";
echo 
strlen($did)-1;
echo 
" caracteres, la palabra tercera es $div y tiene ";
echo 
strlen($div)-1;
echo 
" caracteres. La palabra sexta es $pro y tiene ";
echo 
strlen($pro)-1;
echo 
" caracteres";
?>

</body>
</html>

Los caracteres especiales y acentuados utilizan 2 posiciones del array que compone el string y por eso te daba fallo y no entiendes porque esta fallando si las longitudes que aplicas están bien.
Imagínate que cuando es un carácter especial o acentuado suma 2 en vez de 1 sería algo así:
Código: [Seleccionar]
0   1  2  3       4       5
[C, O, J, O, (acentuada), N]

PD: Sublime Text >> Notepad ++ :D

7
Hola tata,

Te dejo unas formas de hacer lo que te propones para ver si logras entenderlo. Si no entiendes algo lo comentamos.
Saludos.

Una es simplemente:
Código: [Seleccionar]
<script>
 $(document).ready(function(){
     $("#micapa").on("click",function(){
      $("#micapa").css("color", "#FF8800");
     });
 });
</script>
Y la otra:
Código: [Seleccionar]
<script>
 function cambiacolor () {

$("#micapa").css("color", "#FF8800");
};
 </script>
Poniendo en tu div
Código: [Seleccionar]
<div id="micapa" onclick="javascript:cambiacolor();">Hola Mundo!!!</div>

Y si quieres el archivo externo:
Código: [Seleccionar]
//Contenido de ensayo.js
$(document).ready(function() {

$('#micapa').bind('click', function () {
$(this).css("color","blue");
});
});

Edito: No obstante creo que tu código solo falla en que llamas a la función antes de declararla y ademas se te ha olvidado los paréntesis en la llamada, compruébalo

8
Bueno, aunque lo que te escrito es cierto para cuando utilices array, el metodo substring estoy viendo que fuciona con la longitud de la cadena. substring (0,9) por ejemplo, por lo que comenté en otro post que es una función de intervalo abierto. Internamente el mostrara la posición del array desde el 0 hasta el 8, es decir nos simplifica pensar XD

Ahora bien, para no liarte con lo anterior quería decirte que tu fallo no se debe a que el bucle hace demasiadas reiteraciones. Asique intenta buscar el fallo de cuando le estas pidiendo a tu programa que obtenga la letra que esta en una posición superior a la maxima longitud y por que :P.

Si ves que no lo entiendes comenta.

9
Hola niurkafer, voy a darte mi opinión sin ser ningún experto.
El fallo que tienes es el típico fallo que se suele tener a la hora de visualizar un array.
Un string es un array, es decir, almacena cada carácter en una de sus celdas, de la forma por ejemplo:

[N,I,U,R,K,A,F,E,R]

¿Como accedemos a un caracter entonces?
Simplemente tenemos que saber que la primera posición corresponde a la posicion numero 0 y asi podremos acceder a cada una de ellas. En el ejemplo:

Posición 0 -> N
Posición 1 -> I
Posición 2 -> U
Posición 3 -> R
Posición 4 -> K
Posición 5 -> A
Posición 6 -> F
Posición 7 -> E
Posición 8 -> R

Fíjate que la ultima posición entonces corresponde a la posicion numero 8.

¿Que sucede entonces cuando usas la función .length?

Al aplicar la función length() a una cadena devuelve la longitud de la cadena, no devuelve la posicion del ultimo caracter. Imagina que aplico dicha función al ejemplo, obtendre un 9 pues hay 9 letras.

¿En que concluye esto?

Cuando recorremos un array o un string mediante un bucle no "iremos" desde el 0 hasta su longitud, si no desde el 0 hasta (su longitud -1) y de este modo recorreremos la cadena entera.
Aunque el metodo substring nos evita esta cuenta y nos permite indicarle el numero de caracter en vez de su posición interna.


El error que te da se debe a que el indice que recorre el array toma un valor superior al maximo indice que tiene este y por eso no puede obtener ningún dato, digamos.

Quiero comentarte también que para sentencias while simples como es el caso no es conveniente en absoluto el uso de break. Tu condicion para while es simplemente "true" con lo que creas un bucle que se ejecuta siempre excepto cuando cumples un if que colocas en el interior en cuyo caso hace un break.
Bien, este mismo funcionamiento lo consigues simplemente colocando la condicion de ese IF como condicion del bucle while. Te ahorras tiempo y quebraderos de cabeza y el unico handicap es que la condición es la contraria. Es decir si le dirás que se salga del bucle y haga break cuando sea 10 mejor que le digas al while que se ejecute mientras sea menor que 10 y asi lo hará.
Si añades al while la condicion NOT puedes conseguir el efecto de decirle "mientras no seas 10" haz esto { ... }
Yo por ejemplo aplico el not al while normalmente por manías de un buen profesor que tuve al final son costumbres pero romper la condición mediante un IF como en tu ejercicio no es la manera correcta, aunque se pueda.

Me explico:
FORMA CORRECTA
Código: [Seleccionar]
while (indice < 10) {
//Hago lo que tenga que hacer 10 veces//
indice ++ //incremento indice//
}

o si no

while !(indice >= 10) {
//Hago lo que tenga que hacer 10 veces//
indice ++ //incremento indice//
}
y por tanto no es necesario anidar un IF

INCORRECTO:
Código: [Seleccionar]
i=0
while (1=1) {
//Haces algo//
i++;
if (i >=10) {break;}
}

Te sugiero repetir el ejercicio teniendo lo que te he comentado en cuenta y verás que incluso resulta mas fácil entenderlo.
Saludos!

10
Me alegro mucho si va a servirte :) te sugiero que eches un vistazo al @media ya que lo fijé simplemente para una única variación en 500px de resolución y quizá te interese que sea de otra forma para tu propósito.

Saludos!

11
Hola Tata, quizá me equivoque y no sea el fallo, pero la función exec() en Javascript no devuelve un boleano sino un array con el resultado de la comparación. En caso de no haber coincidencias devuelve el valor "null".

Prueba con eso no se si sea pero por probar.. :D Supongo que quedaría algo asi.

if (loquesea.exec(loquesea2) != "null")

Saludos!

12
A donde vamos, de donde venimos y como lo he hecho. Las grandes incertidumbres del ser humano  :D

Has iniciado la clase con el constructor vacio. El constructor se identifica porque tiene el mismo nombre que la clase y es la función que inicia esa clase, digamos.

public class Pra1{
       
    public Pra1 () {
       
    }
Has creado una función dentro de la clase a la que le llegan 3 parámetros

String Pra1 (String valor_Texto1, String Valor_Texto2, String valor_Texto3){
        String Combinacion = valor_Texto1.substring (0,2)+" "+Valor_Texto2.substring (0,4) +"-"+valor_Texto3.substring (0,6);
        return Combinacion ;
       
        }

Has usado el operador "+" para concatenar o unir cadenas para almacenar en la variable Combinacion, que pones que será un string como deberá serlo, el resultado de extraer fragmentos de otras cadenas de texto mediante el uso de la función substring.

La función substring devuelve un fragmento de un string conocido. El modo de utilizarlo es como ves. StringQueQuieras.substring(A,B) donde A y B marcan el intervalo donde empezara y donde acabara de contar. Siempre sabiendo que el primer caracter del string será el 0. Si conoces los array identificarás este método.

Asi pues valor_Texto1.substring (0,2) corresponde a las 2 primeras letras del string que contiene la variable o el parametro valor_Texto1 y asi con las tres.

Lo único a entender si quieres es que el intervalo es un intervalo abierto por la derecha es decir en teoría es [0,2) donde el 2 se excluye y pues internamente esa función funciona como un bucle for que trata a los strings como si fueran arrays (que lo son) y en este caso toma los valores contenidos en el indice 0 y 1. Si no conoces los arrays en cuanto los entiendas te será mas fácil ver esto. Salud!

Salud!

13
Estoy totalmente de acuerdo contigo y creo que has dado en el kit de la cuestión en cuanto al sistema responsive.
Hay que tener en cuenta que no es algo que se haya "estandarizado" todavia ni éxiste digamos un método, o el mejor. Y la tecnología base mas usada HTML5 y CSS3 no tenía como propósito el modelo responsive. Asi como tampoco las librerías Javascript mas usadas lo eran.
Por ello tanto estas como los propios programadores hace un tiempo que van buscando un modo de aplicarlo.

Como dices los primeros desarrollos fueron el crear paginas independientes que redirigían en función de la resolución del dispositivo. No es un mal método, realmente es la forma de "cargar lo que necesitas", pero si es el mas costoso a mi punto de verlo.
Luego se empezó a encajar diseños mediante CSS, utilizando el archiconocido @media que ya supuso un cambio y en principio estaba bien visto el adaptar paginas para resoluciones grandes a tamaños pequeños.

Con la práctica creo que la mayoría coincidimos en que el planteamiento inverso resulta mas simple partiendo del diseño para pequeños dispositivos, que cada vez se utilizan mas, y progresando hacia lo que sería la pagina en un tamaño mas amplio. Dejando al aire tamaños gigantes que es lo que vendrá en un futuro, también.

Para entender esto no hay mas que ver el modo práctico. Si creamos una página a vista media por ejemplo vamos a observar como al dismunuir el tamaño los bloques pierden sentido pues suelen acabar siendo demasiado pequeños. En el caso contrario encontraremos siempre menos dificultades o "arreglos" a realizar, en principio uno de los motivos. "Lo pequeño se adapta mejor a un espacio grande que lo grande lo hace a un tamaño pequeño". Así lo veo yo al menos y me resulta mas útil partir del 0 que de una resolución conocida hacia el 0.

Ahora bien, una vez parece esta surgiendo el metodo de clases para redimensionar los bloques a nuestro antojo en funcion de la resolución de forma simple mediante el uso de rejillas que a su vez se adaptan a la resolución creo que es un buen camino para lo que venga. Pero como dices habrá que ver como librerías JS por ejemplo se comportan a la hora de añadir dinamismo y referirse a estos "nuevos objetos" y también a los propios navegadores de cada dispositivo. Ya que aunque Jquery por ejemplo esta en continuo desarrollo y revisión seguro que con los nuevos métodos surje algún problema y también seguro nuevos métodos.

Como resumen decir que el método responsive a dia de hoy para mi se resume en aplicar un <meta> para que el navegador "bloquee" el zoom y crear la página en un contenedor que se adapta. A partir de ahi redirigir por estilos CSS los cambios que harán los elementos, si los tienen que hacer, en cada resolución. Pero no supone realmente crear páginas para cada una en sí ya que una buena estructura va a requerir pocos cambios. Yo  espero que el futuro sea sistemas que autogestionen bloques, que sería un buen proyecto, hasta ahora no nos quedará mas que definirlos.
Habrá que ver :D

14
Buenos dias!,
gracias por la respuesta César. Como bien dices bootstrap 3 a dia de hoy esta en el top como front-end framework. A mi parecer un puesto merecido por varios motivos.
Para mi gusto aunque el uso de interfaces visuales tipo Dreamweaver, resulta mas visual e intuitivo al final llega a resultar tedioso el echo de colocar elementos y muchos recurrimos al código, para lo cual dreamweaver deja de ser la mejor herramienta a mi parecer.

Y aquí bootstrap es donde se convierte en "magia" una vez lo empezamos a entender pues nos permite maquetaciones rápidas utilizando sus propias clases, que no son feas aunque empiezan a repetirse bastante. Podemos hacer nuestras modificaciones sencillas de los elementos(colores, espacios...). Crear elementos propios..  Y siempre podremos eliminar del código finalmente elementos que no usemos sin comernos mucho el coco ya que no contiene un código extenso. Recibe muchos aportes de la comunidad de programadores, via GitHub, por lo que realmente para mi gusto acaba por fuerza adaptandose a nuestras verdaderas necesidades y, ademas de aportarnos herramientas y elementos, indagando nos aporta métodos y fundamentos que para mi es lo mas interesante.

No lo recomendaría si no hay conocimientos previos de HTML y CSS pues sin conocer el método nuestras maquetaciones acaban resultando copias, pero cualquiera con conocimientos medios debería echarle un vistazo y conocerlo pues yo creo que sobre todo con el tema "responsive" va a dar para largo como opinión personal.

Salud!


15
Dejo un intento de aporte, para mi tambien, de como centrar contenedores de forma absoluta a modo de "prompt" o alerta al entrar a una página por ejemplo. Este método parece que es compatible con la mayoría de navegadores. Y en pequeños dispositivos se adapta al 100% del ancho de la pantalla.

Si hay algo mal comentarlo please.

Saludos!

Código: [Seleccionar]
<!DOCTYPE html>
<html lang=en> <head><meta name=viewport content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"><meta charset=UTF-8><title>Centrar contenedor verticalmente de forma absoluta, SamML</title><style>
        @charset "utf-8";*{margin:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}/*SamML para aprendeaprogramar.com*/
        .contenedor:after, .contenedor:before {
        display:table;
        content:" ";
        zoom:1;
        }
        .contenedor {
        position:fixed;
        width:100%;
        height:100%;
        padding:15px
        }
        .contenedor:after {clear:both;}
        .absolute-v-center {
       
        background-color: #444;
        color:white;
        position: fixed;
        width:100%;height:100%;top:0%;left:0%;
        margin: 0;
        z-index:1000;
        }
        @media (min-width:500px){
        .absolute-v-center {top: 50%;left: 50%;height: 50%;width: 50%;margin: -15% 0 0 -25%;}
        }
        </style></head> <body> <div class=contenedor> <div class=absolute-v-center> <p>Lorem ipsum dolor sit amet.</p> <p>Lorem ipsum dolor sit amet.</p> <p>Lorem ipsum dolor sit amet.</p> <p>Lorem ipsum dolor sit amet.</p> </div> </div> <div> <h1>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptatum reiciendis at facilis earum reprehenderit, qui fugiat error tenetur voluptas veritatis, recusandae doloremque provident fugit sequi nam nemo sapiente odio eius.</h1> <h1>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptatum reiciendis at facilis earum reprehenderit, qui fugiat error tenetur voluptas veritatis, recusandae doloremque provident fugit sequi nam nemo sapiente odio eius.</h1> <h1>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptatum reiciendis at facilis earum reprehenderit, qui fugiat error tenetur voluptas veritatis, recusandae doloremque provident fugit sequi nam nemo sapiente odio eius.</h1> <h1>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptatum reiciendis at facilis earum reprehenderit, qui fugiat error tenetur voluptas veritatis, recusandae doloremque provident fugit sequi nam nemo sapiente odio eius.</h1> </div> <div class=container> <div> <h1>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptatum reiciendis at facilis earum reprehenderit, qui fugiat error tenetur voluptas veritatis, recusandae doloremque provident fugit sequi nam nemo sapiente odio eius.</h1> <h1>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptatum reiciendis at facilis earum reprehenderit, qui fugiat error tenetur voluptas veritatis, recusandae doloremque provident fugit sequi nam nemo sapiente odio eius.</h1> <h1>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptatum reiciendis at facilis earum reprehenderit, qui fugiat error tenetur voluptas veritatis, recusandae doloremque provident fugit sequi nam nemo sapiente odio eius.</h1> <h1>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptatum reiciendis at facilis earum reprehenderit, qui fugiat error tenetur voluptas veritatis, recusandae doloremque provident fugit sequi nam nemo sapiente odio eius.</h1> </div> </div> </body>

</html>

16
Hola a todos,

Quería tratar de dejar un aporte acerca de  el método de la rejilla, aunque sea ya bastante antiguo sigue evolucionando y se sigue utilizando en la mayoría de maquetaciones.

Muchos frameworks lo utilizan. Por ejemplo Bootstrap 3 ha adaptado un modelo de rejillas para maquetación adaptable (responsive) que funciona de maravilla y hace que la colocación de items deje de ser tediosa a la hora de programar una página. Basado en su método viene este aporte a modo de profundizar en el funcionamiento yo y el que lo necesite.

La teoría del uso de la rejilla o grid consiste en visualizar en entorno como si fuera una cuadricula donde se nos permite colocar columnas flotantes de un ancho determinado sin necesidad de recurrir a medidas si no a porcentajes, para facilitarnos trabajo.

Contaremos entonces con un elemento row y un elemento column. Y añadimos un elemento container que englobará el conjunto.

Lo primero a conocer, pues ha resultado el método mas eficaz a la hora de colocar elementos flotantes de esta forma, es la trampa del clearfix o "Clearfix hack".
Antes se utilizaba de modo que se añadía una clase CSS llamada clearfix y se aplicaba al selector :after para hacer un "clear:both" a continuación del elemento con dicha clase.
Esto ha evolucionado y ahora se considera que el método mas compatible es el de aplicar a los elementos anteriores y posteriores al elemento que vamos a utilizar como contenedor los atributos {display:table; content: " ";zoom:1;}

Se añade content porque es necesario al especificar display table. Y se añade Zoom:1 para navegadores IE6 e IE7. Esta acción digamos que genera un nuevo bloque "delante y detras" en todos los navegadores.  Es el que nos permite generar las filas o los "saltos de linea" utilizando clear:both en ellas.
Con todo esto pues las primeras clases que definiremos serán:
Código: [Seleccionar]
.container {
padding-right: 15px;
padding-left: 15px;
margin-right: auto;
margin-left: auto;
}
.row {
margin-right: -15px;
margin-left: -15px;
}
.row:before, .row:after {
display: table;
content: " ";
zoom:1;
}
.column {
position: relative;
float:left;
min-height: 1px;
padding-right: 15px;
padding-left: 15px;
}
.container:before, .container:after {
display: table;
content: " ";
zoom:1;
}
.row:after {
clear:both;
}

Decir que el padding y el margin(negativo) de el contenedor y la fila son "de amarre" por compatibilidades y las columnas pues quedan, como se ve, con un padding de 15px. Esto es visual y nos puede interesar adaptarlo o no.

Añadimos también las propiedades al principio
Código: [Seleccionar]
* {
  margin:0px;
  -webkit-box-sizing: border-box;
     -moz-box-sizing: border-box;
          box-sizing: border-box;
}
*:before,
*:after {
  -webkit-box-sizing: border-box;
     -moz-box-sizing: border-box;
          box-sizing: border-box;
}
Para el dimensionamiento de bloques de contenido adaptable.  :o y un margin:0 ; a modo de reset cutre.  :-X

Asi pues ya tenemos el núcleo del sistema y nos falta definir las columnas.
Aquí es donde decidimos el diseño responsive y aplicamos tamaños. Para simplificar vamos a suponer que solo dispondremos de dos tamaños de columna de 50% y 20% del ancho y adaptamos el contenedor para 3 resoluciones.

Decir que no es el sistema exacto que utiliza Bootstrap que mencioné al principio pero si la metodología. Donde especificamos en la clase de la columna el tamaño del dispositivo. Usaré small, medium y large.
Y definimos en primer lugar los atributos en dispositivos pequeños por lo que usamos min-width para especificarlos dejando la que clase "global" (que definimos antes) sea la que afecte a los pequeños dispositivos.
Como dato ya que se ha hablado de este tema bastante, este metodo a mi forma de verlo  es el "partir desde el 0" en las resoluciones y no desde una resolución conocida (método también utilizado) personalmente considero que esta es la forma mas correcta por muchos motivos y al final a mi parecer la mas simple.


Y al grano colocamos:
Código: [Seleccionar]

.column.smallscreen-20{
    width:20%;
}
.column.smallscreen-50{
    width:50%;
}

@media (min-width:518px) {
    .container {
        width:500px;}
    .column.mediumscreen-20 {
    width:20%;}
    .column.medium-50 {
    width:50%;}
   
}
@media (min-width:922px) {
    .container {
        width:900px;}
    .column.largescreen-20 {
    width:20%;}
     .column.largescreen-50 {
    width:50%;}
   
}

Y de esta forma podemos especificar mediante la clase que tamaño tomara la columna en cada resolución. Si queremos que en resolucion pequeña sea el grande class="column smallscreen-50" por ejemplo y podemos ir anidando si queremos que cambie el tamaño porcentual de una resolución a otra.

Quizá esté algo mal si eso comentar y espero a alguien le sirva

A modo de ejemplo y resumen dejo la siguiente página.
Código: [Seleccionar]
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
        <title>Grid Responsive, SamML para aprenderaprogramar.com</title>
        <style>
        @charset "utf-8";*{margin:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.row:before,.row:after{display:table;content:" ";zoom:1}.column{position:relative;float:left;min-height:1px;padding-right:15px;padding-left:15px}.container:before,.container:after{display:table;content:" ";zoom:1}.row:after{clear:both}.column.smallscreen-20{width:20%}.column.smallscreen-50{width:50%}@media(min-width:518px){.container{width:500px}.column.mediumscreen-20{width:20%}.column.medium-50{width:50%}}@media(min-width:922px){.container{width:900px}.column.largescreen-20{width:20%}.column.largescreen-50{width:50%}}h1{padding:10px;color:#393}.column:nth-child(2n+1) p{padding:15px 15px;color:white;background-color:#333}.column:nth-child(2n) p{padding:15px 15px;color:black;background-color:#EEE}/*SamML para aprenderaprogramar.com*/
        </style>
    </head>
    <body>
        <h1>Podemos insertar elementos de ancho porcentual que habiamos definido, en una fila, y cambian de linea si sobrepasa el tamaño </h1>
        <div class="container">
            <div class="row">
                <div class="column smallscreen-50 mediumscreen-20 largescreen-20">
                    <p>Lorem ipsum dolor sit amet.</p>
                </div>
                <div class="column smallscreen-50 mediumscreen-20 largescreen-20">
                    <p>Lorem ipsum dolor sit amet.</p>
                </div>
                <div class="column smallscreen-50 mediumscreen-50 largescreen-20">
                    <p>Lorem ipsum dolor sit amet.</p>
                </div>
               
            </div>
            <h1>O podemos insertar una fila nueva</h1>
            <div class="row">
                <div class="column smallscreen-50 mediumscreen-50 largescreen-20">
                    <p>Lorem ipsum dolor sit amet.</p>
                </div>
                <div class="column">
                    <p>Lorem ipsum dolor sit amet.</p>
                    <p>Lorem ipsum dolor sit amet.</p>
                    <p>Lorem ipsum dolor sit amet.</p>
                </div>
                <div class="column smallscreen-50 mediumscreen-50 largescreen-50">
                    <p>Lorem ipsum dolor sit amet.</p>
                    <p>Lorem ipsum dolor sit amet.</p>
                    <p>Lorem ipsum dolor sit amet.</p>
                    <p>Lorem ipsum dolor sit amet.</p>
                    <p>Lorem ipsum dolor sit amet.</p>
                </div>
                <div class="column">
                    <p>Lorem ipsum dolor sit amet.</p>
                    <p>Lorem ipsum dolor sit amet.</p>
                    <p>Lorem ipsum dolor sit amet.</p>
                </div>
                <div class="column smallscreen-50 mediumscreen-50 largescreen-20">
                    <p>Lorem ipsum dolor sit amet.</p>
                </div>
            </div>
        </div>
    </body>
</html>

¡Saludos!

17
Como podria declarar el array para que acepte mas de 1?

Declarar arrays multidimensionales consiste en "meter un array dentro de otro array", a modo general.  Es decir, cada posición de un array correspondería a otro array y por eso para referirse a un elemento concreto habría tantos indices como arrays anidados.

Existen diferentes maneras de hacerlo como te indica mastermind, hay muchas formas de declarar un array. Puedes declarar un array vacio, es decir puedes inicializarlo o no.

Código: [Seleccionar]
$mi_array_vacio = array();
$mi_array = array (dato1,dato2,dato3...);

Cuando usas arrays multidimensionales normalmente se hace uso del método de asociación o asociativo para declararlos, ya que suelen ser casos en los que vas a querer referirte a "sub-arrays" concretos y es digamos una buena manera de saber a que te estas refiriendo en vez de usar indices numéricos. Me explico.
El método asociativo consiste en usar como indices palabras o algo que asocie a ese indice lo que contiene. Es la forma mas "legible" digamos de utilizarlos. Por ejemplo para un array unidimensional:
Código: [Seleccionar]

<?php
$datos 
= array(
    
'edad' => 25,
    
'nombre' => 'Samuel',
    
'ID' => 4536323,
);
var_dump($datos);
echo 
"<hr>";
?>


Si lo que quieres es simplemente un array multidimensional:
Código: [Seleccionar]
$array_1 = array();
$array_2 = array();
$mi_array_de_arrays = array($array_1, $array_2);
o
Código: [Seleccionar]
$mi_array_de_arrays = array(array(), array());

Y te referiras a los elementos como:

Código: [Seleccionar]
$mi_array_de_arrays [a][b]donde a y b son los indices de cada array que tu quieras. Por ejemplo
Código: [Seleccionar]
<?php
$array_1 
= array(1,2,3);
$array_2 = array(4,5,6);
$mi_array_de_arrays = array($array_1$array_2);

echo  
$mi_array_de_arrays [0,0] . "hace referencia al 1";
?>


Por ultimo te dejo un codigo de cómo poder usar ambos conceptos para crear arrays multidimensionales de modo asociativo así como el uso de la función count(); para luego poder recorrer arrays de los que desconoces el tamaño.  Puedes hacer copia y pega de este codigo y observas su funcionamiento.

Código: [Seleccionar]
<?php

$talla 
= array ("S","M","L","XL");
$color = array ("azul","rojo","verde","blanco","negro");
$camiseta = array();

$camiseta = array (
'talla' => $talla,
'color' => $color,
);
   

var_dump($camiseta);
echo 
'count($talla) result = ' count($talla) . '<br />';
echo 
'count($color) result = ' count($color) . '<br />';
echo 
'count($camiseta) result = ' count($camiseta);

echo 
"<hr>";
?>

En referencia a tu código si almacenas un único tipo de dato y lo que quieres es realizar la ordenación de un array existen funciones para ello.
Como dato, de forma interna los algoritmos de ordenación son un tema muy interesante en cuanto a los recursos que utilizan ya que a simple vista parece "una chorrada" pero cuando profundizas no lo es para nada y por ello han ido surgiendo métodos que recurren a las matemáticas y la recursividad y resuelven este tipo de algoritmos. El mas simple es comparar cada valor con el resto e ir intercambiando uno con otro en función de si es mayor o menor.  Este método en comparación a otros es costoso en recursos y reiteraciones.

No obstante lo que te interesa, si lo que necesitas es ordenar una tabla, es conocer funciones tipo asort(); o arsort(); que ordenan valores númericos por ejemplo de menor a mayor y de mayor a menor respectivamente. O funciones tipo array_multisort(); ksort(); krsort(); que tienen en cuenta si utilizas el método asociativo.

Hay cantidad de funciones para ordenar y unas van bien para unos casos y otras para otros, puedes visitar: http://php.net/manual/es/array.sorting.php

Saludos

18
Hola, no tengo claro de que pueda ser el error y no puedo verlo con detenimiento o probarlo (ando con prisas en este momento).
Pero me parece ver, a bote pronto, que cuando declaras el array indicas (size = 1) para los "subelementos" quizá este ahí el problema, no se si es lo que buscabas.
A mi entender el algoritmo para el push parece ser el correcto.

Un saludo.

Páginas: [1]

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".