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ú

Mensajes - MinusFour

#1021
GNU/Linux / Re: Ayuda con virtualización
9 Mayo 2016, 21:36 PM
¿No es un poco excesivo tener una maquina virtual por servicio? Me parece redundante tener n sistemas operativos diferentes para tener todos tus n servicios separados. Yo creo que tu mejor opción son contenedores, LXC o Docker por ejemplo.
#1022
Redes / Re: motivo subredes
9 Mayo 2016, 17:54 PM
Cita de: robofortea en  9 Mayo 2016, 10:45 AM
simplemente cuestionaba la necesidad genérica de usar subredes. Lo que viene después es un ejemplo de como sin usar subnetting puedo tener mas redes y estaciones por red que sin usar subredes. Supongo que se me escapa algo que no tengo en cuenta. Por eso pregunto.
Gracias. Un saludo.

192.168.1.0/24 es una subred tanto como 192.168.1.0/25. El espacio de direcciones que puedes utilizar para efectos de NAT es de 192.168.0.0/16, una mascará mas grande que esa es subdividir ese espacio. Ahora, suponiendo que necesitas otra subred para colocar a miembros que coexisten en la misma subred lo más lógico sería subdividir este espacio.

La composición del direccionamiento sigue siendo el mismo. Es decir, todos los equipos siguen en el espacio de direccionamiento que anteriormente tenías. Por ejemplo si subdivides 192.168.1.0/24 en 192.168.1.0/25 y 192.168.1.128/25, todos los equipos siguen estando en el espacio de 192.168.1.0/24, solo que ahora hay una división. Esto me permite tener reglas generales para ese espacio de direcciones que aplique a las dos subredes.

Sin embargo, no siempre es posible hacer esta subdivisión. Por ejemplo si tienes 150 equipos en tu subred de 192.168.1.0/24 y quieres tener 10 de estos equipos en otra subred, no puedes simplemente subdividir 192.168.1.0/24 en 192.168.1.0/25 y 192.168.1.128/25. Necesitas tener un mascará de /24 o más parar albergar 140 equipos. No puedes subdividir.
#1023
Cita de: sk1pp3r en  9 Mayo 2016, 03:38 AM
Entonces las preguntas que tengo son las siguientes:

1. Incluir esos grandes archivos .css y .js ponen lento mi servidor?
2. Cuando un visitante haga uso de index.php, el hecho de tener agregados (<link rel="...<script src="...) grandes .css y .js hace lenta la carga de la pagina al visitante?
3. Existe alguna herramienta tipo Web Developer para descartar las lineas de codigo inservibles de mis .css y .js? De ser asi cuales existen?
4. Se puede obtener unicamente el codigo .css y .js necesario en mi index desde la herramienta "inspeccionar" de google chrome?

De antemano gracias y saludos.


1. Servir un documento en tu servidor siempre tiene un costo. Entre más grande el archivo, más tarda el usuario en descargarlo, lo que significa que es posible que tengas más usuarios descargando el archivo al mismo tiempo. Consumes ancho de banda extra y posiblemente congestiones tu servidor un poquito más. Configurando bien las cabeceras para utilizar la cache correctamente ayuda bastante. También tienes servicios externos como las CDNs que te permiten ser más eficientes en cuanto a servir estos documentos estáticos.

2. Si y no. En el caso de javascript, cuando el navegador encuentra una etiqueta <script> con un atributo src, el navegador tiene que descargar, ejecutar ese código en javascript y posteriormente traducir el resto del documento (incluyendo otras etiquetas <script>). Hay nuevos atributos para la etiqueta <script> que permiten seguir trabajando en el resto del documento mientras el archivo de javascript está descargándose (async y defer). Si tu pones la etiqueta <script> hasta el final, el resto de tu documento se carga tan rápido como puede y la descarga del documento se realiza al final. Son apariencias más que nada, la etiqueta <script> no tiene ninguna representación visual en el navegador, pero los otros elementos sí. Estas técnicas le dan prioridad a los elementos que necesitan ser representados en el navegador, dando la alusión de una carga más rápida.

En el caso de CSS no estoy seguro, creo que hasta ahora siempre debería bloquear hasta que el archivo haya sido descargado (al menos para <link rel=''>. Me parece que si usas @import, el archivo se baja en paralelo, pero los estilos se aplican al final (realmente no lo he probado). Si es así, tu documento se carga sin estilos (horrible) y al final adquiere forma.

3. Lo dudo mucho. Sería un esfuerzo coordinado entre HTML, JS y CSS. Por ejemplo, considera:

Código (CSS) [Seleccionar]

elemento.clase {
 /** propiedades **/
}


¿Como puede está herramienta descartar esta declaración? Para que está herramienta considere este código inútil necesitaría revisar en tu archivo HTML por una etiqueta "elemento" con un atributo clase que contenga "clase". Hasta aquí es más que posible. Sin embargo, al meter javascript la situación se complica todavía aún más. Ahora está herramienta tiene que encontrar los scripts siendo corridos en el navegador y analizar las interacciones con el DOM para descartar que en ningún momento el elemento y la clase se presenta en el DOM. En mi opinión esto es bastante complicado. Encima, considera que diversos scripts pueden ser cargados condicionalmente a través de otros scripts.

En cuanto a quitar funciones que no utilizas de javascript, no estoy seguro si eso sea posible. Considera:

Código (javascript) [Seleccionar]

function noMeLlaman(){

}

function meLLaman(){

}

if(cond1){
 noMeLlaman(); //nunca ocurre por configuracion
} else {
 meLlaman();
}


Para que tu herramienta descarte la función "noMeLlaman()" tendría que cerciorarse que la condición nunca se cumple, lo cual es muy difícil de lograr en un lenguaje en el que permite mutaciones. Para algunas condiciones si es posible eliminar la función, inclusive eliminar el código inútil. Digamos que tu herramienta considera que ambas funciones son necesarias (porque son utilizadas en tu función) y quieres remover las funciones que no son llamadas.

Considera:

Código (javascript) [Seleccionar]

var obj = {
  handler : function(){

  },
  fn : function(){
     this.handler();
  }
}

if(cond1){
   obj.handler = function(){
   };
}


Mismo problema. ¿Que función remueves y cual no?



4. Sí, el código se puede inspeccionar fácilmente.
#1024
Cita de: lemi en  7 Mayo 2016, 22:12 PM
dig @8.8.8.8 +short google.com

Te devuelve una o más direcciones IP.

Si no te devuelve nada el origen del problema reside en el servidor DNS que tengas configurado en el equipo.


Esto solo comprueba la salida a internet. Si le regresa resultados es que si está saliendo correctamente por internet, si no obtiene resultados es que no pudo hacer la query a 8.8.8.8. No es necesario usar la notación con @ si quieres hacer la query a los servidores DNS locales y es ahí cuando descartas (o no) la configuración del servidor DNS.

Alternativamente, solo es necesario utilizar:

Código (bash) [Seleccionar]

nslookup google.com


Si resuelve, no tienes problemas con el servidor DNS. Si no resuelve tienes problemas con el servidor DNS. Aunque claro, primero debes revisar tu salida a internet (si no, es probable que no puedas resolver el dominio, en especial cuando no usas los DNS de tu ISP). Por lo general hago ping a los servidores DNS de google para comprobar esto:

Código (bash) [Seleccionar]

ping 8.8.8.8


¿Que herramienta estás utilizando para configurar tu conexión wireless? ¿Network Manager? ¿Seguro que no has configurado tu red manualmente? Sinceramente, me extrañaría bastante que el servidor DHCP de tu router empieze a repartir IPs en otro segmento IP de la nada. ¿Tienes configurado semejante comportamiento? ¿Y si es así con que propósito?

La entrada que tienes en tu resolv.conf indica que resuelve toda la información a través de tu equipo, es decir tu equipo actúa como servidor DNS. No se si estés configurando un servidor DNS en tu equipo...
#1025
Si es HTML tienes que cerciorarte que el elemento preserve los espacios en blanco. La etiqueta pre realiza esto por defecto.
#1026
Es más fácil si piensas en los posibles factores de los números:

16:
1 x 16
2 x 8
4 x 4
8 x 2
16 x 1

9:
1 x 9
3 x 3
9 x 1

15:
1 x 15
3 x 5
5 x 3
15 x 1

30:
1 x 30
2 x 15
5 x 6
6 x 5
15 x 2
30 x 1

Como puedes ver los factores se repiten después de la raíz cuadrada del número y como al dividir el número entre otro número j también incluye el resultado como factor posible de n, terminas descartando dos números en lugar de uno.
#1027
El punto de Object.create es de no mutar el objeto inicial.

Esta linea que has puesto:
Código (javascript) [Seleccionar]

var response = Object.assign(Object.create(http.ServerResponse));


La parte de Object.assign no te sirve de nada porque no estás asignando nada al objeto que estás creando. Realmente no es siquiera necesario que este objeto tenga como prototipo ServerResponse, porque al hacer Object.assign las propiedades acaban en el otro objeto.

Cita de: Dext3rCode en  5 Mayo 2016, 00:43 AM
Es decir, tuve que omitir la parte de Object.Create en el 'asign' para que heredara los metodos anteriores porque sino solo creaba un nuevo objeto con los nuevos que yo cree y agregaba los demas en ejecucion segun los llamaba.

Quitar la parte de Object.create no te exime de la asignación de las propiedades del objeto en ejecución, como mencione anteriormente la única diferencia es que con Object.create no estás mutando res y las propiedades del objeto como quiera siguen compartidas por el prototipo del objeto. Lo único es que las propiedades a extender se realizan sobre un objeto nuevo. Honestamente, no se que tan compatible sea esto con la interfaz de ServerResponse, es probable que no puedas evitar la mutación.
#1028
Cambiar el prototipo de un objeto en runtime no es lo ideal. El error no es relacionado a herencia, sino el hecho de que las funciones flecha no ofrecen contexto de objeto, lo que significa que no tienen this. Una función normal debería funcionar (aunque no estoy seguro si haya algún otro error).

Si quieres extender un objeto yo usaría Object.assign
Código (javascript) [Seleccionar]

var respuesta = Object.assign(Object.create(response), res);
//res = objeto con las funciones a extender
//response = el objeto inyectado en la funcion
respuesta.enviar('foo');
#1029
Cita de: MrDev en  4 Mayo 2016, 17:14 PM
He puesto el javascript que estoy usando ahora en el inicio del hilo, lo que quiero hacer es que el div inferior, aumente su margin-top tanto como tenga de padding-bottom el div que se encuentra encima(encima quiere decir que esta z-index +1)

¿Y como vamos a saber cual div está encima si no sabemos el z-index de los elementos?

Tienes un error aquí:

Código (javascript) [Seleccionar]

css = document.getElementsByClassName("casa");
tamaño = css.style.paddingBottom;


La función getElementsByClassName regresa un NodeList (una estructura de datos muy parecida a un arreglo) que contiene todos los elementos con una clase en específico. Tu segunda linea intenta recoger una propiedad de un elemento cuando tienes una lista de elementos.
#1030
Cita de: MrDev en  4 Mayo 2016, 16:44 PM
Bueno, lo que pretendo, que no lo puse ahi, es que un div que esta bajo otro, al pulsar en el div superior, el de abajo se deslice, eso si se puede hacer en jquery

Difícil de ayudar a alguien cuando pones código ficticio que no está relacionado a tu problema. Problemas reales para soluciones reales.