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 - @XSStringManolo

#1861
Desarrollo Web / Re: Temas para clase
10 Agosto 2019, 03:10 AM
https://www.w3schools.com/ este link te será muy útil. Para programación general no sabría indicarte. Se aprender al aprender a programar.
#1862
Cita de: Shell Root en  9 Agosto 2019, 23:09 PM
No entiendo nada de eso!  :silbar:
Ayer no me dio problemas en los test que hice, hoy me los está dando. Tengo que repararlo. Pondré alerts durante todo el proceso y ya voy viendo donde deja de imprimirse y lo arreglo.

Qué no entiendies? Lo que es base64 y ascii? Para que sirven? Como se pasa de base64 a ascii? Como he decidido hacerlo yo? O entiendes todo lo anterior pero no entiendes el código en sí, las funciones, el uso de cadenas, etc?

El proceso es pasar la cadena en base64 a ascii.
-Paso base64 letras a representación de la tabla en bits. Es decir:
A = 000000
B = 000001
Hasta hacer los 64 carácteres que se pueden representar con 6bits en binario.

-Uno todos los bits para tener una cadena tipo: AB = 000000000001
-Los divido de 8 en 8 para poder representarlos en ASCII. Son 255 posibles caracteres distintos representados con números del 0 al 255.
Eso es exacamente lo que puedes representar con los 8 bits.

-Una vez que tengo los bits de 8 en 8 los traduzco a su correspondiente valor númerico(este paso lo omito) y ese número numérico a su representación en la tabla ASCII.

Por alguna parte del proceso tengo que manejar ceros en el caso de que la cadena tenga en Base64 tenga el símbolo =.

Hay una explicación en el encoder de esa parte del proceso. Creo que en este código está mal implementado y necesito primero comprobar la cadena  en búsqueda del símbolo igual y en caso de encontrarlo añadir 2 ceros al final de la cadena por cada igual.

No sé si está ahí el error o antes. Lo encontraré fácil cuando lo mire.
#1863
Redes / Re: Problemas con IP
10 Agosto 2019, 01:17 AM
Cita de: engel lex en  9 Agosto 2019, 22:13 PM
no, solo tu isp puede hacer algo por ti, cualquier intento de enviar un paquete de una ip diferente a la entregada por tu isp, fallrá miserablemente... podrias apagar tu router por unos 5 minutos y volverlo a encender para que obtenga una nueva ip
En Movistar te la cambia entre 10 y 15 segundos tras apagarlo.
#1864
Yo quiero morir antes de los 67. Así no tengo que cotizar jeje.  :xD
#1865
Te dice que no puede crear la carpeta bin/debug. Cambia los permisos de la carpeta, cambia el directorio en el que guardas el proyecto, o cambia la carpeta por defecto para guardar tu proyectos.
#1866
Busca las materias, así te haces una idea y puedes ir mirándolo a tu bola.
#1867
Pasa de Base64 a ASCII. Uso libre.

encoder https://foro.elhacker.net/desarrollo_web/ascii_a_base64_encoder_javascript-t498409.0.html

Etiquetas javascript omitidas debido a filtro cloudflare.
Código (javascript) [Seleccionar]
<html>
<head><title>Decoder Base64</title>
</head>
<body>
//EtiquetaJavascript
var CadenaEnTextoq = "";
var CadenaEnTextoTamanhoq;
var CadenaEnASCIIq = "";
var contadorIguales = 0;
var CadenaEnASCIIq2 = "";
var CadenaEnASCIIqTamanho = 0;
var BitsDe8en8 = "";
var CadenaDecoded = "";
var CadenaEnASCIIq2Tamanho = 0;
var contador_x = 0;
var contador_z = 0;
var mantenerseEnBucleq = true;
 
CadenaEnTextoq = prompt("Pon el texto");

CadenaEnTextoTamanhoq = CadenaEnTextoq.length;

for (var i = 0; i < CadenaEnTextoTamanhoq; ++i)
{
  if (CadenaEnTextoq[i] == 'A')
  {
  CadenaEnASCIIq += "000000";
  }

if (CadenaEnTextoq[i] == 'B')
  {
  CadenaEnASCIIq += "000001";
  }

if (CadenaEnTextoq[i] == 'C')
  {
  CadenaEnASCIIq += "000010";
  }

if (CadenaEnTextoq[i] == 'D')
  {
  CadenaEnASCIIq += "000011";
  }

if (CadenaEnTextoq[i] == 'E')
  {
  CadenaEnASCIIq += "000100";
  }

if (CadenaEnTextoq[i] == 'F')
  {
  CadenaEnASCIIq += "000101";
  }

if (CadenaEnTextoq[i] == 'G')
  {
  CadenaEnASCIIq += "000110";
  }

if (CadenaEnTextoq[i] == 'H')
  {
  CadenaEnASCIIq += "000111";
  }

if (CadenaEnTextoq[i] == 'I')
  {
  CadenaEnASCIIq += "001000";
  }

if (CadenaEnTextoq[i] == 'J')
  {
  CadenaEnASCIIq += "001001";
  }

if (CadenaEnTextoq[i] == 'K')
  {
  CadenaEnASCIIq += "001010";
  }

if (CadenaEnTextoq[i] == 'L')
  {
  CadenaEnASCIIq += "001011";
  }

if (CadenaEnTextoq[i] == 'M')
  {
  CadenaEnASCIIq += "001100";
  }

if (CadenaEnTextoq[i] == 'N')
  {
  CadenaEnASCIIq += "001101";
  }

if (CadenaEnTextoq[i] == 'O')
  {
  CadenaEnASCIIq += "001110";
  }

if (CadenaEnTextoq[i] == 'P')
  {
  CadenaEnASCIIq += "001111";
  }

if (CadenaEnTextoq[i] == 'Q')
  {
  CadenaEnASCIIq += "010000";
  }

if (CadenaEnTextoq[i] == 'R')
  {
  CadenaEnASCIIq += "010001";
  }

if (CadenaEnTextoq[i] == 'S')
  {
  CadenaEnASCIIq += "010010";
  }

if (CadenaEnTextoq[i] == 'T')
  {
  CadenaEnASCIIq += "010011";
  }

if (CadenaEnTextoq[i] == 'U')
  {
  CadenaEnASCIIq += "010100";
  }

if (CadenaEnTextoq[i] == 'V')
  {
  CadenaEnASCIIq += "010101";
  }

if (CadenaEnTextoq[i] == 'W')
  {
  CadenaEnASCIIq += "010110";
  }

if (CadenaEnTextoq[i] == 'X')
  {
  CadenaEnASCIIq += "010111";
  }

if (CadenaEnTextoq[i] == 'Y')
  {
  CadenaEnASCIIq += "011000";
  }

if (CadenaEnTextoq[i] == 'Z')
  {
  CadenaEnASCIIq += "011001";
  }

if (CadenaEnTextoq[i] == 'a')
  {
  CadenaEnASCIIq += "011010" ;
  }

if (CadenaEnTextoq[i] == 'b')
  {
  CadenaEnASCIIq += "011011";
  }

if (CadenaEnTextoq[i] == 'c')
  {
  CadenaEnASCIIq += "011100";
  }

if (CadenaEnTextoq[i] == 'd')
  {
  CadenaEnASCIIq += "011101";
  }

if (CadenaEnTextoq[i] == 'e')
  {
  CadenaEnASCIIq += "011110";
  }

if (CadenaEnTextoq[i] == 'f')
  {
  CadenaEnASCIIq += "011111";
  }

if (CadenaEnTextoq[i] == 'g')
  {
  CadenaEnASCIIq += "100000";
  }

if (CadenaEnTextoq[i] == 'h')
  {
  CadenaEnASCIIq += "100001";
  }

if (CadenaEnTextoq[i] == 'i')
  {
  CadenaEnASCIIq += "100010";
  }


if (CadenaEnTextoq[i] == 'j')
  {
  CadenaEnASCIIq += "100011";
  }

if (CadenaEnTextoq[i] == 'k')
  {
  CadenaEnASCIIq += "100100";
  }

if (CadenaEnTextoq[i] == 'l')
  {
  CadenaEnASCIIq += "100101";
  }

if (CadenaEnTextoq[i] == 'm')
  {
  CadenaEnASCIIq += "100110";
  }

if (CadenaEnTextoq[i] == 'n')
  {
  CadenaEnASCIIq += "100111";
  }

if (CadenaEnTextoq[i] == 'o')
  {
  CadenaEnASCIIq += "101000";
  }

if (CadenaEnTextoq[i] == 'p')
  {
  CadenaEnASCIIq += "101001";
  }

if (CadenaEnTextoq[i] == 'q')
  {
  CadenaEnASCIIq += "101010";
  }


if (CadenaEnTextoq[i] == 'r')
  {
  CadenaEnASCIIq += "101011";
  }

if (CadenaEnTextoq[i] == 's')
  {
  CadenaEnASCIIq += "101100";
  }

if (CadenaEnTextoq[i] == 't')
  {
  CadenaEnASCIIq += "101101";
  }

if (CadenaEnTextoq[i] == 'u')
  {
  CadenaEnASCIIq += "101110";
  }

if (CadenaEnTextoq[i] == 'v')
  {
  CadenaEnASCIIq += "101111";
  }

if (CadenaEnTextoq[i] == 'w')
  {
  CadenaEnASCIIq += "110000";
  }

if (CadenaEnTextoq[i] == 'x')
  {
  CadenaEnASCIIq += "110001";
  }

if (CadenaEnTextoq[i] == 'y')
  {
  CadenaEnASCIIq += "110010";
  }

if (CadenaEnTextoq[i] == 'z')
  {
  CadenaEnASCIIq += "110011";
  }

if (CadenaEnTextoq[i] == '0')
  {
  CadenaEnASCIIq += "110100";
  }

if (CadenaEnTextoq[i] == '1')
  {
  CadenaEnASCIIq += "110101";
  }

if (CadenaEnTextoq[i] == '2')
  {
  CadenaEnASCIIq += "110110";
  }


if (CadenaEnTextoq[i] == '3')
  {
  CadenaEnASCIIq += "110111";
  }

if (CadenaEnTextoq[i] == '4')
  {
  CadenaEnASCIIq += "111000";
  }

if (CadenaEnTextoq[i] == '5')
  {
  CadenaEnASCIIq += "111001";
  }

if (CadenaEnTextoq[i] == '6')
  {
  CadenaEnASCIIq += "111010";
  }

if (CadenaEnTextoq[i] == '7')
  {
  CadenaEnASCIIq += "111011";
  }

if (CadenaEnTextoq[i] == '8')
  {
  CadenaEnASCIIq += "111100";
  }

if (CadenaEnTextoq[i] == '9')
  {
  CadenaEnASCIIq += "111101";
  }

if (CadenaEnTextoq[i] == '+')
  {
  CadenaEnASCIIq += "111110";
  }

if (CadenaEnTextoq[i] == '/')
  {
  CadenaEnASCIIq += "111111";
  }

if (CadenaEnTextoq[i] == '=')
  {
  contadorIguales++;
  }

}

CadenaEnASCIIqTamanho = CadenaEnASCIIq.length;

if (contadorIguales == 1)
{
  for  (var i = 0; i < (CadenaEnASCIIqTamanho -2) ; ++i)
  {
  CadenaEnASCIIq2 += CadenaEnASCIIq[i];
  }
}

if (contadorIguales == 2)
{
for  (var i = 0; i < (CadenaEnASCIIqTamanho -4) ; ++i)
  {
  CadenaEnASCIIq2 += CadenaEnASCIIq[i];
  }
}

CadenaEnASCIIq2Tamanho = CadenaEnASCIIq2.length;


do
{
BitsDe8en8 += CadenaEnASCIIq2[contador_z];

++contador_x;
++contador_z;

if (contador_x == 8)
{

         
if ( BitsDe8en8 == "01000001")
      {
       CadenaDecoded += "A";
      }

if ( BitsDe8en8 == "01000010")
      {
       CadenaDecoded += "B";
      }

if ( BitsDe8en8 == "01000011")
      {
       CadenaDecoded += "C";
      }

if ( BitsDe8en8 == "01000100")
      {
       CadenaDecoded += "D";
      }

if ( BitsDe8en8 == "01000101")
      {
       CadenaDecoded += "E";
      }

if ( BitsDe8en8 == "01000110")
      {
       CadenaDecoded += "F";
      }

if ( BitsDe8en8 == "01000111")
      {
       CadenaDecoded += "G";
      }

if ( BitsDe8en8 == "01001000")
      {
       CadenaDecoded += "H";
      }

if ( BitsDe8en8 == "01001001")
      {
       CadenaDecoded += "I";
      }

if ( BitsDe8en8 == "01001010")
      {
       CadenaDecoded += "J";
      }

if ( BitsDe8en8 == "01001011")
      {
       CadenaDecoded += "K";
      }

if ( BitsDe8en8 == "01001100")
      {
       CadenaDecoded += "L";
      }

if ( BitsDe8en8 == "01001101")
      {
       CadenaDecoded += "M";
      }

if ( BitsDe8en8 == "01001110")
      {
       CadenaDecoded += "N";
      }

if ( BitsDe8en8 == "01001111")
      {
       CadenaDecoded += "O";
      }

if ( BitsDe8en8 == "01010000")
      {
       CadenaDecoded += "P";
      }

if ( BitsDe8en8 == "01010001")
      {
       CadenaDecoded += "Q";
      }

if ( BitsDe8en8 == "01010010")
      {
       CadenaDecoded += "R";
      }

if ( BitsDe8en8 == "01010011")
      {
       CadenaDecoded += "S";
      }

if ( BitsDe8en8 == "01010100")
      {
       CadenaDecoded += "T";
      }

if ( BitsDe8en8 == "01010101")
      {
       CadenaDecoded += "U";
      }

if ( BitsDe8en8 == "01010110")
      {
       CadenaDecoded += "V";
      }

if ( BitsDe8en8 == "01010111")
      {
       CadenaDecoded += "W";
      }

if ( BitsDe8en8 == "01011000")
      {
       CadenaDecoded += "X";
      }

if ( BitsDe8en8 == "01011001")
      {
       CadenaDecoded += "Y";
      }

if ( BitsDe8en8 == "01011010")
      {
       CadenaDecoded += "Z";
      }

if ( BitsDe8en8 == "01100001")
      {
       CadenaDecoded += "a";
      }

if ( BitsDe8en8 == "01100010")
      {
       CadenaDecoded += "b";
      }

if ( BitsDe8en8 == "01100011")
      {
       CadenaDecoded += "c";
      }

if ( BitsDe8en8 == "01100100")
      {
       CadenaDecoded += "d";
      }

if ( BitsDe8en8 == "01100101")
      {
       CadenaDecoded += "e";
      }

if ( BitsDe8en8 == "01100110")
      {
       CadenaDecoded += "f";
      }

if ( BitsDe8en8 == "01100111")
      {
       CadenaDecoded += "g";
      }

if ( BitsDe8en8 == "01101000")
      {
       CadenaDecoded += "h";
      }

if ( BitsDe8en8 == "01101001")
      {
       CadenaDecoded += "i";
      }

if ( BitsDe8en8 == "01101010")
      {
       CadenaDecoded += "j";
      }

if ( BitsDe8en8 == "01101011")
      {
       CadenaDecoded += "k";
      }

if ( BitsDe8en8 == "01101100")
      {
       CadenaDecoded += "l";
      }

if ( BitsDe8en8 == "01101101")
      {
       CadenaDecoded += "m";
      }

if ( BitsDe8en8 == "01101110")
      {
       CadenaDecoded += "n";
      }

if ( BitsDe8en8 == "01101111")
      {
       CadenaDecoded += "o";
      }

if ( BitsDe8en8 == "01110000")
      {
       CadenaDecoded += "p";
      }

if ( BitsDe8en8 == "01110001")
      {
       CadenaDecoded += "q";
      }

if ( BitsDe8en8 == "01110010")
      {
       CadenaDecoded += "r";
      }

if ( BitsDe8en8 == "01110011")
      {
       CadenaDecoded += "s";
      }

if ( BitsDe8en8 == "01110100")
      {
       CadenaDecoded += "t";
      }

if ( BitsDe8en8 == "01110101")
      {
       CadenaDecoded += "u";
      }

if ( BitsDe8en8 == "01110110")
      {
       CadenaDecoded += "v";
      }

if ( BitsDe8en8 == "01110111")
      {
       CadenaDecoded += "w";
      }

if ( BitsDe8en8 == "01111000")
      {
       CadenaDecoded += "x";
      }

if ( BitsDe8en8 == "01111001")
      {
       CadenaDecoded += "y";
      }

if ( BitsDe8en8 == "01111010")
      {
       CadenaDecoded += "z";
      }

if ( BitsDe8en8 == "00110000")
      {
       CadenaDecoded += "0";
      }

if ( BitsDe8en8 == "00110001")
      {
       CadenaDecoded += "1";
      }

if ( BitsDe8en8 == "00110010")
      {
       CadenaDecoded += "2";
      }

if ( BitsDe8en8 == "00110011")
      {
       CadenaDecoded += "3";
      }

if ( BitsDe8en8 == "00110100")
      {
       CadenaDecoded += "4";
      }

if ( BitsDe8en8 == "00110101")
      {
       CadenaDecoded += "5";
      }

if ( BitsDe8en8 == "00110110")
      {
       CadenaDecoded += "6";
      }

if ( BitsDe8en8 == "00110111")
      {
       CadenaDecoded += "7";
      }

if ( BitsDe8en8 == "00111000")
      {
       CadenaDecoded += "8";
      }

if ( BitsDe8en8 == "00111001")
      {
       CadenaDecoded += "9";
      }

if ( BitsDe8en8 == "00101011")
      {
       CadenaDecoded += "+";
      }

if ( BitsDe8en8 == "00101111")
      {
       CadenaDecoded += "/";
      }

  contador_x = 0;
  BitsDe8en8 = "";
  }

  if ( contador_z == CadenaEnASCIIq2Tamanho )
  {
  mantenerseEnBucleq = false;
  }


} while (mantenerseEnBucleq == true)

document.write(CadenaDecoded);
alert (CadenaDecoded);

//Cerrar etiqueta javascript
</body>
</html>
#1868
Cita de: Machacador en  9 Agosto 2019, 13:16 PM
La solución a este problema del calentamiento global ya nos la dio Joliguu en sus recientes películas de los "Avenyers" donde un tal Thanos con solo chasquiar los dedos acaba con una gran parte de la población del planeta... pero como esto no será posible en un futuro inmediato (creo yo), lo mejor sería una gran guerra que terminara por lo menos con la mitad de la población del planeta, porque esa pendejada de cambiar los hábitos alimenticios no funcionara para nada... hay que ser realistas, solo la guerra salvara el planeta  de su destrucción...

:rolleyes: :o :rolleyes:

Saludos.
Tenemos cárceles para poder tener libertad. Destrucción para salvar al planeta? Te lo compro. Pero lo de la vela solar funcionaría  :-(
#1869
Cita de: MinusFour en  9 Agosto 2019, 03:16 AM
Es más simple si utilizas operadores bitwise:

Código (javascript) [Seleccionar]

let b64 = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S',
'T','U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p',
'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/', '='];

function asciiToBase64(str){
       if(!str.length) return "";
       let [f8, s8, t8] = str.substring(0,3).split('').map(c => c.charCodeAt(0));
       let firstB = (f8 & 0b11111100) >>> 2;
       let secondB = ((f8 & 0b00000011) << 4) | ((s8 & 0b11110000) >>> 4);
       let thirdB = s8 ? (((s8 & 0b00001111) << 2) | ((t8 & 0b11000000) >>> 6)) : 64;
       let fourthB = t8 ? (t8 & 0b00111111) : 64;
       return b64[firstB] + b64[secondB] + b64[thirdB] + b64[fourthB] + asciiToBase64(str.slice(3));
}


--------------------------------------------------------------------

Sí, mucho más sencillo, corto y eficiente. Lo hice a lo bruto para poder modificarlo fácilmente y tener control en cualquier parte del proceso. Si te fijas por el nombre de la variable iba a poner primero el valor en ASCII traduciendo la A a 65, por si se quería realizar alguna operación con los valores en ASCII y los valores que no estuviesen en el rango de caracteres de base64 hacer saltos hacia los siguientes pero no quería usar un array y me iba a dar pereza y por eso puse el binario directo xD.

Por si alguien va usar los operadores de bits para implementar la codificación, según el standart de javascript se necesita tirar una excepción en caso de que los valores no estén dentro del rango 0-255 (que son los que contempla el ASCII) en el momento de hacer el encode:
Código (javascript) [Seleccionar]
if (/([^\u0000-\u00ff])/.cadenaCodificar(cadenaCodificar)){ throw new Error("No se pueden codificar caracteres no ASCII.");

Para el decoder:
Código (javascript) [Seleccionar]
CadenaDecodificar = CadenaDecodificar.replace(/\s/g,""); if(!(/^[a-z0-9\+\/\s]+\={0,2}$/i.test(text)) || text.length % 4 > 0){ throw new Error("El texto no es una cadena base64.");

Hace 10 mins me puse a hacer el decoder de la misma forma que el encoder, ya funciona todo, pero de momento solo decodifica el binario de la letra A. Me falta ponerle los 62 if restantes asique igual lo acabo mañana que no me apetece xD

El decoder lo debería poner en este mismo hilo? O creo otro independiente y pongo links del uno al otro? Funcionan ambos por separado aunque le cambié el nombre a las variables para que no coincidiesen por si se quieren usar en las mismas etiquetas los 2 juntos.
Cuando tenga datos los meto en un blogspot y los linkeo también por si alguien los quiere probar antes de usarlos.
#1870
Aprende varios lenguajes nivel básico-intermedio. Aprende uno de los muchos que vienen de C nivel avanzado. Aprende tambien desarrollo web.
Lenguajes que te recomiendo para frelancer:
-Java *Más demandado en entorno empresarial. Más demandado en Android. Librerías para todo, hasta para correrlo del lado del servidor. Tampoco te puedo decir más porque no lo uso, pero es de lo que más piden y lo que tiene un mercado más fijo. Vamos, que de aquí a 20 años va a seguir estando de una forma u otra. Asique es una apuesta segura.
-Python *Más demandado en comunicaciones, muy usado en herramientas de hacking. Sencillo pero muy versatil. Tiene mucho mercado y es de los más demandados.

-C *Si todos vienen de aquí será por algo. Es la mejor opción para muchas cosas concretas como para no seguir aprendiendolo.

-C++ *Muy versatil, bueno para mejorar tu programación en general y mucho software código abierto que podrás portar a otros lenguajes. Capacidad para integrar C y ASM nativamente e interpretar javascript o compilarlo con otro software o librerias. No es de lo que más se demanda ni mucho menos pero es útil. Se usa para muchisimos proyectos grandes y software opensource.

-ADA, Rush, ¿Go? *más demandados para aplicaciones seguras. Para ADA hay bastantes ofertas de empleo y es el lider en lo suyo. Rush y Go son alternativas con algo de mercado y en crecimiento. Son muy parecidos a C++.

-javascript (Html5, Css3) *más demandado cliente web. Si tuviese que definir software multiplataforma con una palabra usaría javascript. De lo más demandado. Es como una llave inglesa. Pienso que es el que más crecimiento tiene, va a tener y ha tenido en los últimos 5 años. HTML5 y CSS3 son obligatorios para programación front-end.

-PHP *más demandado server side. Mucho empleo. Hay pocas alternativas y está muy estandarizado. 50.000 librerías, plantillas, entornos de trabajo, etc. Te permite trabajar en una empresa en proyectos complejos, trabajar en proyectos a medida o hacer un baño de oro a chatarra en 5 minutos sin conocimientos técnicos para sacarte un pellizco jajaja. Entre otras cosas.

-MySQL *más demandado bases de datos. En un o lo sabes hoy o lo sabes mañana, no te vas a librar por mucho asco que te de. Es el mercado amigo.

-.Net *Se demanda bastante pero no manejo ni conozco como para orientarte. Solo que piden bastante proyectos, hay bastante ofertas de trabajo.

A parte de estos hay un montón más. Y hay muchos con más demanda que los listados. Pero no decido incluirlos porque con estos cubro presente y futuro de todas formas. También hay otros que son extremadamente útiles para proyectos personales, "hacer su funcion", hacer de chicle, etc.

Te los recomiendo porque son los que yo más veo que se piden/hay buena documentación/son los principales para algo específico que se demanda mucho. También tendrás que aprender librerías concretas de cada uno, frameworks, cms, ides, etc.

Cual elegir? Realmente no hay un, no puedo dar marcha atrás. La mayoría de conocimientos que obtengas de un lenguaje lo podrás exportar a otro de una forma u otra, en mayor o menor medida. Asique tampoco te lo pienses demasiado que no vas a tirar con el tiempo. Profundiza bien en ellos para saber como funcionan las cosas y por que. Tardarás más en avanzar pero podrás hacer más cosas y no te estancarás nunca.

Los cursos de diagramas de flujo, pseudocódigo y algoritmos son una patata. A programar se aprende programando. Y para programar lo único necesario es un objetivo y la documentación pertinente, veanse libros, documentación oficial, ejemplos, google, ayudas por otros, etc.
Yo no aprendería a cocinar ordenando frutas, poniendo plastilina en una olla de juguete o haciendo ecuaciones con los pesos del aceite y del sal para freir una salchicha xD. Pero esto ya es opinión de cada uno.