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 - WHK

#831
Descripciones básicas de los editores:

Sublime Text
Editor liviano para Windows, Mac y Linux.

Notepad++
Editor liviando para Windows.

Eclipse
Editor todo en uno, hecho principalmente para el desarrollo en Java pero ahora puedes usarlo para el desarrollo WEB común.

Aptana
Versión de Eclipse con algunas modificaciones para el uso exclusivo de desarrollo WEB.

NetBeans
Editor de código creado por Sun Microsystems que ahora le pertenece a Oracle. Similar al eclipse.

Zend Studio
Editor de código diseñado por Zend para el desarrollo web en php.

PhpStorm
Editor de código para paginas web en php creados por jetbrains, los mismos creadores de Android Studio.

Cloud 9 (c9.io)
Editor de código online.

Codeanywhere (codeanywhere.com)
Editor de código online.

Orion (orionhub.org)
Editor de código online.

Codetasty IDE (codetasty.com)
Editor de código online.

Microsoft Visual Studio
Editor multiuso que también sirve para desarrollar paginas WEB en ASP.

Microsoft Visual Studio Online
Visual studio en la nube.

Microsoft Visual Studio Code
Version minimalista de visual studio que no compila, solo edita, está para Windows Linux y Mac. una mala copia de sublime text pero que tiene su par de seguidores.

Microsoft expression Web
Editor visual WEB, similar a Dreamweaver.

Adobe Dreamweaver
Editor que combina la edición gráfica con la edición de código.

Adobe Brackets
Editor WEB de adobe similar a dreamweaver pero que trabaja con plantillas PSD. A pesar de que está disponible para Windows, Mac y Linux las plantillas PSD solo se pueden crear desde Windows o Mac.

Adobe Edge
El reemplazo de Adobe Flash, en ves de crear archivos flv crea archivos html utilizando tecnología HTML5 para crear las animaciones.

AIDE Web
Editor WEB de excelencia para Android.

Quanta plus
Como Kompozer pero exclusivo para KDE (para entornos KDE de gnu/linux o KDE portado)

Kompozer
Similar a Dreamweaver pero gratis. Disponible para Windows, Mac y Linux.

Visual Web Developer
Como el editor Dreamweaver pero de Microsoft.

TextMate
Editor minimalista de OSX (es como usar gedit en gnu/linux).

Coda
Editor minimalista para OSX.

Atom Editor
Buen editor liviano, similar al sublime text. Su slogan es "The hackable text editor"

Komodo Edit
Editor de código multiproposito similar al eclipse en cuanto a algunas funcionalidades pero mucho mas liviano.

Emacs
Editor de texto para nostalgicos creado por Richard stallman.

Editor nativo Notepad
El notepad de Windows, si no tienes un editor a mano y necesitas hacer un cambio muy pequeño este editor te puede salvar el día. Mas de algunos comenzaron aprendiendo a programar en este editor. realmente no hace nada mas que escribir, no identa ni tabula multilineas ni selecciona una linea ni abre multiples archivos ni nada.

Editor nativo Gedit
Editor por defecto en ambientes Gnome de Gnu/Linux, es liviano, tiene soporte para colorear código y todo lo que un editor básico pueda hacer, pero es muy lento y trabaja muy mal con archivos grandes.

Editor nativo Kate
Lo mismo que Gedit pero para entornos KDE de Gnu/Linux.

Editor KWrite
Similar a Kate, es como decir Pepsi y Cocacola.

Editor de terminal nano
Editor para terminales Linux y Unix (OSX).

Editor de terminal vi o vim
Editor nativo de Linux disponible también para Unix (OSX)

#833
Debido a la antigüedad de la anterior y la falta de algunos editores nuevos se crea una encuesta nueva.

- Pueden votar por 6 en total.
- No mencionar depuradores o comandos (echo "hola mundo" > prueba.html).

Los resultados de la anterior encuesta:

[Encuesta] ¿Qué editor de código utilizas? (2015)


NombreVotos
Dreamweaver   30 votos (5.8%)
Aptana   2 votos (0.4%)
NetBeans   41 votos (7.9%)
Eclipse   44 votos (8.5%)
Notepad++   109 votos (21%)
Microsoft expression Web   2 votos (0.4%)
Quanta plus   0 votos (0%)
Sublime Text   120 votos (23.2%)
Atom   12 votos (2.3%)
Vim   16 votos (3.1%)
Geany   13 votos (2.5%)
Bluefish   3 votos (0.6%)
Emacs   4 votos (0.8%)
Gedit   17 votos (3.3%)
Brackets   12 votos (2.3%)
KWrite   2 votos (0.4%)
TextMate   0 votos (0%)
Coda   0 votos (0%)
Komodo Edit   4 votos (0.8%)
Visual Web Developer   0 votos (0%)
Zend Studio   0 votos (0%)
PhpStorm   5 votos (1%)
Otro (comentar)   13 votos (2.5%)
nano   17 votos (3.3%)
Visual Studio   52 votos (10%)

Esta encuesta esta en el subforo de Desarrollo Web, se aplica solo para proyectos de desarrollo web.

Saludos
#834
GNU/Linux / Ayuda con virtualización
6 Mayo 2016, 22:03 PM
Hola, he decidido transformar mi servidor dedicado en varias instancias virtuales para separar en red local varios servicios tales como web, correo, archivos en la nube, vpnssl (o socks5 via ssh sobre un puerto personalizado), etc. El problema es que mi maquina no tiene recursos ilimitados, tiene 32gb de ram y una cpu xeon de 8 cores y quiero tener 7 u 8 instancias virtuales, sacando la cuenta de la cantidad de memoria que usa cada servicio mas lo que usa propiamente el sistema operativo me alcanza muy bien, pero estoy en el dilema de la compartición de recursos.

Estoy usando Centos 7, estuve observando KVM pero al crear una instancia necesitas declarar la cantidad de nucleos a usar y ram, si debo repartir estos recursos tendría que disponer de 1 nucleo para cada servicio y 2.5gb de ram para cada instancia, pienso que es muy poco en comparación a lo que tengo hoy (todo en uno).

La ventaja de lo que tengo hoy es que todos los servicios usan el mismo hardware asi que si un servicio no tiene mucha carga y otro tiene una carga elevada este puede hacer uso de la mayor parte de los recursos, esto quiere decir que el sitio web podría recibir una ataque muy bien mientras que los demás servicios estén relajados.

Al no poder hacer esto en KVM Qemu vi algunas alternativas como Openvz que justamente utilizan el hardware bajo demanda, esto quiere decir que ya no asignas un uso de memoria ram para cada instancia virtual sino que utiliza el máximo siempre y este se comparte (eso fue lo que entendí), el problema es que nunca he usado Openvz (pero si virtualbox y vmware workstation) y vi que ofrece un sistema llamado virtuozo pero que al parecer es de pago y mas de encima el sitio web está caido.

Asi que mi pregunta viene así: ¿Es posible utilizar software comunitario o de libre costo para realizar lo que necesito?

Otra pregunta: Esposible que la instancia web y mail hagan uso de todo el hardware pero el servidor de tetsing haga uso solamente de 2gb de ram y 2 cpu como máximo? hay algún software de virtualización que haga esto?

¿Que me recomiendan o que debiera ser lo mas óptimo que debiera hacer?
#835
Vamos, acá va:

Código (javascript) [Seleccionar]
// Pointer XY
var pointer_x         = 6;                   // X (1 to 11)
var pointer_y         = 6;                   // Y (1 to 11)

var payload           = 9;                   // Max number. Total rows * 2 + 1 (xy:9876543210123456789)
var max_rows          = 11;                  // Max width & height rows to show
var current_pointer_x = ((payload * 2) + 1); // Current pointer X
var current_pointer_y = ((payload * 2) + 1); // Current pointer Y
var lines             = [];                  // Array
var floor             = payload;             // Dinamic floor
var clon              = [];                  // Array


// Buffer
for(var a = 1; a <= payload + 1; a++){
   var line = [];    // Empty line (array)
   for(var b = payload; 1 <= b; b--)
       line.push((b < floor) ? floor : b); // If number is < to floor: number, else: floor
   lines.push(line); // Append line to lines
   floor--;          // Floor reduction
}


// Horizontal mirror (right)
clon  = lines.slice(0); // Clone array
lines = [];             // Clear array
for(a in clon){
   var final_line = clon[a].slice(0); // Clone line to final line (left half)
   final_line.push((a == (clon.length - 1)) ? 0 : clon[a][clon[a].length - 1]); // Center (n or 0)
   clon[a].reverse();      // Invert line
   for(b in clon[a])       // Append inverted line to final line
       final_line.push(clon[a][b]);
   lines.push(final_line); // Push final line
}


// Vertical mirror (bottom)
clon = lines.slice(0); // Clone array
clon.pop();            // Remove center line (the pointer)
clon.reverse();        // Invert array
for(a in clon)         // Append array inverted into lines array
   lines.push(clon[a]);


// Move area [[]]
shift_left = (payload - pointer_x);
shift_top  = (payload - pointer_y);

// Cut area
clon = lines.slice(0); // Clone array
lines = [];            // Reset array
for(var a = 0; a <= clon.length - 1; a++){
   var line = [];
   for(var b = 0; b <= clon[a].length - 1; b++){
       if(
           ( a > shift_top)  &&                   // Cut top
           ((a - shift_top)  < (max_rows + 1)) && // Cut bottom
           ( b > shift_left) &&                   // Cut left
           ((b - shift_left) < (max_rows + 1))    // Cut right
       ){
           line.push(clon[a][b]);
       }
   }
   if(line.length)       // Have line?
       lines.push(line); // Append line to lines
}


// Print result
str = '';
for(a in lines)
   str += lines[a].join(' ') + '\n';
console.log(str);


5 5 5 5 5 5 5 5 5 5 5
5 4 4 4 4 4 4 4 4 4 5
5 4 3 3 3 3 3 3 3 4 5
5 4 3 2 2 2 2 2 3 4 5
5 4 3 2 1 1 1 2 3 4 5
5 4 3 2 1 0 1 2 3 4 5
5 4 3 2 1 1 1 2 3 4 5
5 4 3 2 2 2 2 2 3 4 5
5 4 3 3 3 3 3 3 3 4 5
5 4 4 4 4 4 4 4 4 4 5
5 5 5 5 5 5 5 5 5 5 5


Si cambio las posiciones XY queda así:

Código (javascript) [Seleccionar]
var pointer_x         = 1;                   // X (1 to 11)
var pointer_y         = 1;                   // Y (1 to 11)

0 1 2 3 4 5 6 7 8 9
1 1 2 3 4 5 6 7 8 9
2 2 2 3 4 5 6 7 8 9
3 3 3 3 4 5 6 7 8 9
4 4 4 4 4 5 6 7 8 9
5 5 5 5 5 5 6 7 8 9
6 6 6 6 6 6 6 7 8 9
7 7 7 7 7 7 7 7 8 9
8 8 8 8 8 8 8 8 8 9
9 9 9 9 9 9 9 9 9 9


Código (javascript) [Seleccionar]
var pointer_x         = 7;                   // X (1 to 11)
var pointer_y         = 3;                   // Y (1 to 11)

6 5 4 3 2 2 2 2 2 3 4
6 5 4 3 2 1 1 1 2 3 4
6 5 4 3 2 1 0 1 2 3 4
6 5 4 3 2 1 1 1 2 3 4
6 5 4 3 2 2 2 2 2 3 4
6 5 4 3 3 3 3 3 3 3 4
6 5 4 4 4 4 4 4 4 4 4
6 5 5 5 5 5 5 5 5 5 5
6 6 6 6 6 6 6 6 6 6 6
7 7 7 7 7 7 7 7 7 7 7
8 8 8 8 8 8 8 8 8 8 8


Ahora la explicación:

Lo que hace es crear un buffer inicial, un cuarto de todo el cuadrado, luego solamente lo clona vertical y luego horizontal tal como lo expliqué en el post anterior. Se crea un cuadrado de 19 columnas y filas, esto quiere decir del 9 al 9 mas un centro = 18 + 1, después de esto se crea una segunda capa imaginaria de 11x11 (del 5 al 5 mas el centro) y recorta los bordes restantes, de esta manera se obtiene el puntero en la posición requerida. Imagina dos capas donde una capa superior es el recuadro y debajo de ella un cuadrado mucho mas grande con un punto al centro, si mueves la capa que está debajo podrás posicionar el punto donde tu quieras con el tamaño del recuadro de encima.

En esta imagen el puntero se localiza en la posición X:8 Y:7


De todas maneras como dijo MAFUS el resultado no siempre será coherente ya que no existe una mitad exacta, para simular una mitad colocando el cero al centro debes agregar una columna adicional por lo cual cuando quieres posicionar el puntero en X:1 Y:1 te faltará un número después del 9 (y no puede ser 10) ya que en el ejemplo que pusiste dices que el ancho total es de 5 a 1, el centro y luego de 1 a 5 por lo cual son 11, asi que si posicionas el cero en la primera columna te quedan 10 para rellenar, del 1 al 9 y luego que?, falta un número. En mi caso lo omití, si pones el puntero en X:1 Y:1 aparece una columna menos y una fila menos, el cuadrado deja de ser de 11x11 para ser de 10x10 (0 al 9). Para solucionar esto el tamaño del cuadrado a mostrar debiera ser de 9 (4 al 1 mas el centro y del 1 al 4), de esta manera si posiciono el cero en la primera columna solo debo rellenar 8 espacios (del 1 al 8). En el script se soluciona cambiando [payload] de 9 a 8 y [max_rows] de 11 a 9. El problema de raiz está en que el número máximo es impar y debiera ser el mayor par que pueda soportar una area de números del 0 al 9, o sea el 8 y no el 9.

0 1 2 3 4 5 6 7 8
1 1 2 3 4 5 6 7 8
2 2 2 3 4 5 6 7 8
3 3 3 3 4 5 6 7 8
4 4 4 4 4 5 6 7 8
5 5 5 5 5 5 6 7 8
6 6 6 6 6 6 6 7 8
7 7 7 7 7 7 7 7 8
8 8 8 8 8 8 8 8 8



Espero que hayas podido comprender bien.

Saludos.
#836
Cita de: MAFUS en  5 Mayo 2016, 20:38 PM
Está bien lo de la optimización, pero te has saltado lo de que el usuario entra la coordenada de donde quiere el 0. Si lo pone en una esquina no puede haber espejos y el máximo valor del recuadro es 10.

Esa parte no lo habia leido xD pero se me ocurre que si el cuadro es de un máximo de 10x10 es porque solo puedes escribir hasta el 9, no puedes dibujar un 10 o se te corre la línea, en ese caso lo que yo haría es hacer un cuadrado de 9x9, es solo cuestión de modificar el script que hice y reemplazar el 5 por el 9 y despues hacer un padding xy eliminando lo sobrante dejando el 0 en la posicion donde tu quieras, pero la malla ya está hecha, solo faltaría mover y cortar con un padding y un shift.
#837
Te sirve en javascript?

Código (javascript) [Seleccionar]
// Cantidad de numeros a utilizar
var payload = 5;

var reverse = false;
// Dos vueltas: superior e inferior, el inferior es un espejo del superior
for(var a = 1; a <= 2; a++){

   if(reverse){
       var minimo         = 1;
       var agregar_centro = 0;
   }else{
       var minimo         = payload;
       var agregar_centro = 1;
   }

   for(var b = 1; b <= payload + agregar_centro; b++){

       var line = '';

       for(var c = payload; 1 <= c; c--){
           if(c < minimo)
               line += minimo + '';
           else
               line += '' + c;
       }

       // Centro
       if((!reverse) && (b == (payload + agregar_centro))){
           // Última vuelta de la mitad del cuadrado.
           line += '0';
           reverse = true;
       }else{
           line += minimo;
       }

       for(var d = 1; d <= payload; d++){
           if(d < minimo)
               line += minimo + '';
           else
               line += '' + d;
       }
       
       if(reverse)
           minimo++;
       else
           minimo--;

       console.log(line);

   }
}


55555555555
54444444445
54333333345
54322222345
54321112345
54321012345
54321112345
54322222345
54333333345
54444444445
55555555555



Ahora, como son dos pisos, uno superior y el de abajo un espejo podrias hacer solo la mitad de la cara y luego replicarlo en algún stack ordenado:

Código (javascript) [Seleccionar]
var payload = 5;
var lines   = [];
var minimo  = payload

for(var b = 1; b <= payload + 1; b++){

   var line = '';

   for(var c = payload; 1 <= c; c--){
       if(c < minimo)
           line += minimo + '';
       else
           line += '' + c;
   }

   if(b == (payload + 1)){
       // Última vuelta de la mitad del cuadrado.
       line += '0';
   }else{
       line += minimo;
   }

   for(var d = 1; d <= payload; d++){
       if(d < minimo)
           line += minimo + '';
       else
           line += '' + d;
   }
   
   minimo--;

   console.log(line);
   lines.push(line + '\n');
}

lines.pop();
lines.reverse();
for(_key in lines)
   console.log(lines[_key]);


55555555555
54444444445
54333333345
54322222345
54321112345
54321012345
54321112345
54322222345
54333333345
54444444445
55555555555



Ahora, si lo piensas mejor son 4 lados, solo dibujas uno y los demas son espejos del mismo, es como tener una hoja de papel doblado en 4 con el cero en común como único centro pero hacer eso en c++ puede que salga mucho mas trabajoso y largo que invertir los for manualmente como te lo mostré anteriormente.



El primer grupo rojo corresponde a lo que realmente debes hacer, el segundo grupo rojo es la columna que unirá el lado derecho con el lado izquierdo, este debe decir que si no es la última línea entonces debe ser igual al último número de la fila, en caso contrario es cero. Luego de eso el restante derecho es el mismo contenido del izquierdo pero al reves, luego la parte inferior es igual a la superior pero al reves menos la última fila que corresponde al concatenador cero.

De todas maneras acá está el código del papel doblado en 4:

Código (javascript) [Seleccionar]
var payload = 5;
var lines   = [];
var min     = payload

for(var a = 1; a <= payload + 1; a++){
   var line = [];
   for(var b = payload; 1 <= b; b--)
       line.push((b < min) ? min : b);
   lines.push(line);
   min--;
}

var lines_str = [];
for(a in lines){
   var out  = lines[a].join('');
   out += (a == (lines.length - 1)) ? 0 : lines[a][lines[a].length - 1];
   lines[a].reverse();
   out += lines[a].join('');
   lines_str.push(out);
}

var tmp = lines_str.slice(0);
lines_str.pop();
lines_str.reverse();
for(a in lines_str)
   tmp.push(lines_str[a]);
lines_str = tmp;

for(a in lines_str)
   console.log(lines_str[a]);


55555555555
54444444445
54333333345
54322222345
54321112345
54321012345
54321112345
54322222345
54333333345
54444444445
55555555555



Lo que puedes hacer es tomar estos códigos como conceptos, estudiarlos y hacer tu propio código en c++. La práctica es la mejor ayuda cuando necesitas estudiar y aprender, por eso no te hice el código en c++, para que lo tengas que hacer tu entendiendo la lógica.

Saludos.
#838
Para mi el cero no es un número natural, para mi el cero es nulo o nada, no es un valor representativo por lo cual no es par.

La cantidad exacta de teclados sobre mi cabeza es par? pues no porque no hay, así de simple. Es como querer dividir por cero, si piensas en cero como un número jamás encontrarás la respuesta, pero si piensas en nulo y la representación de la nada entonces todo tiene sentido.
#839
Seguridad / Re: facebook
10 Abril 2016, 01:42 AM
Esos antimalwares son malos, por eso te dije que usaras el avira, con eso te va a eliminar todo y ya.
#840
Seguridad / Re: facebook
9 Abril 2016, 14:28 PM
Tienes mal configurada la fecha en tu computador?

Entra aca y ve que aparece: https://es.wikipedia.org/ , te da el mismo error?

Por lo general cuando tienes la fecha del computador o celular mal configurada los certificados ssl no pueden funcionar ya que no se puede verificar la fecha de caducidad y generación y esto termina en un mensaje como el que has mostrado.

Si tienes la fecha bien puesta en tu pc y te estas conectando a internet desde tu casa entonces estas infectado, prueba desinstalar tu antivirus e instalar nod32 (de pago) o avira (gratis):

https://install.avira-update.com/package/antivirus/win/es-es/avira_antivirus_es-es.exe
o
http://www.eset-la.com/download/trial-gratuito/nod32-antivirus