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

#481

Calculadora con notación polaca inversa

En la You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login pudimos aprender la instalación de FreeDOS en QEMU, pero hacía falta varias cosas, que más allá de su uso, tienen que ver con el mantenimiento, instalación de paquetes y una de las cosas más esenciales de todo, las redes.

Paquetes necesarios:


Fuente: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Esto es simple. Abrimos QEMU con las opciones pre-configuradas en la You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login y ejecutaremos el comando fdimples, el cual nos muestra una interfaz You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login. Los controles pueden ser resumidos como lo siguiente:

*.- 🡡, 🡢, 🡣, 🡠: Moverse entre los diferentes elementos. Ya sea que estés en la lista de grupos de paquetes o de los paquetes mismos, las flechas hacia arriba y hacia abajo te ayudarán a desplazarte; si necesitas moverte entre grupo de paquetes o los paquetes que éstos contengan, las flechas hacia la derecha o la izquierda, son los de utilidad. En caso de que se necesite ver la descripción de un paquete, cuando se le esté apuntando (ver imagen, paquete FDNET) presione la flecha derecha y las flechas hacia arriba y hacia abajo expandirán o disminuirán la descripción y los programas que el paquete contenga.
*.- SPACE o ENTER: Misma funcionalidad. Seleccionar o confirmar una opción. En caso de querer seleccionar todo el grupo completo (ver imagen, grupo de paquete Networking), se necesita apuntar hacia él, y luego presionar ENTER o SPACE para seleccionar/deseleccionar todos los paquetes a instalar/desinstalar, o si simplemente se desea instalar un paquete, es necesario moverse hasta él y realizar el mismo procedimiento.

Así de sencillas son las instrucciones, ahora que se sabe la forma de instalar paquetes desde el CD-ROM (la misma imagen ISO, en nuestro caso) pasemos a instalar los paquetes necesarios para obtener Internet. En nuestro caso deben ser los siguientes:

*.- FDNET: paquete de soporte de red básico para FreeDOS para varias configuraciones de hardware y plataformas de máquinas virtuales.
*.- MTCP: Colección de herramientas TCP/IP para DOS de 16 bits, tales como: DHCP, IRC, FTP, Telnet, Netcat, HTGet, Ping, SNTP.
*.- Opcionalmente, aunque encarecidamente, se recomienda instalar también: curl, wget, ping

Como último paso para esta sección, reiniciamos.

Nota: Es necesario seguir con la siguiente sección para completar este paso.


Configuración de QEMU:

No solo es necesario instalar los paquetes para darle compatibilidad a FreeDOS para las máquinas virtuales y el hardware en sí, además es necesario configurar QEMU (o la máquina virtual que se esté usando) para que las configuraciones automatizadas y demás, pueden hacer efecto.

En nuestro caso ejecutaremos el siguiente comando:


Código: bash
qemu-system-i386 -net nic,model=pcnet -net user -k es -smp $(($(nproc)+1)) -m 32M -drive file=freedos.img,media=disk,format=raw -drive file=FD12CD.iso,media=cdrom -boot order=d



Resultado :D

El gestor de paquetes:

Sí, FreeDOS tiene un gestor de paquetes :D, y muy bueno, el cual nos permite instalar paquetes que no estén incluidos en el CD-ROM (la imagen ISO). En nuestro caso instalaremos los paquetes necesarios para programar en el mismo.

Antes de usar el gestor de paquetes necesario, para no perder tanto tiempo verificamos que no tengamos los paquetes deseados en la imagen ISO, los cuales son: DJGPP, i16butil, i16gcc, i16newli, i16budoc, i16gcdoc

En mi caso el único que tengo en la imagen ISO es DJGPP, por lo que paso a instalarlo usando fdimples:



Mientras que los demás, usaré fdnpkg para buscarlos y si son encontrados, instalarlos:


fdnpkg search i16

Ahora, instalamos:

Código: dos
fdnpkg install i16butil
fdnpkg install i16gcc
fdnpkg install i16newli
fdnpkg install i16budoc
fdnpkg install i16gcdoc


Una vez cuncluímos el proceso de instalación de los paquetes necesarios, necesitamos definir la variable que se mostrará en unos instantes en el archivo You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login que se encuentra en C:

Código: dos
set DJGPP=c:\devel\djgpp\djgpp.env


Pese a que tenemos y podríamos usar perfectamente el comando EDIT para editar archivos y hasta programar con él, es recomendable usar otro editor de texto que se adhiera a sus necesidades y preferencias. En mi caso, usaré simplemente pico, aunque fed tampoco está mal, desde luego, es posible ejecutar el siguiente comando y se mostrará todos los editores, o también se puede ingresar a los You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login.

Código: dos
fdnpkg search edit



Editores válidos por el momento

Programación en C:

Para concluir este pequeño artículo, vamos a escribir dos programas en C; uno que imprima 'Hello World!' y otro que será una You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login.

hello.c
Código: c
#include <stdio.h>
#include <stdlib.h>

int main(void) {
printf("Hello World!\n");
return EXIT_SUCCESS;

}


Código: dos
i16gcc -o hello.exe -O2 hello.c
hello.exe



Ya compilamos nuestro hello world, pero ahora vamos a compilar un programa con más funcionalidades.

polish.c
Código: c
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <errno.h>
#include <math.h>
#include <stdbool.h>
#include "calculator.h"

#define MAX_NUMBERS 30

int main(int argc, char **argv) {
   long double *array = (long double *)malloc(sizeof(long double)*MAX_NUMBERS);
   long double *result = array;
   long double aux;
   char *endstr = NULL;
   int operator;
   int max_numbers, count;
   bool check = false;

   if (!array) {
  if (errno != 0)
perror("malloc");
  else
fprintf(stderr, "Possibly no memory\n");

  return EXIT_FAILURE;

   }

   max_numbers = MAX_NUMBERS;
   count = 0;
   while (--argc) {
  if (count++ >= max_numbers) {
max_numbers *= 2;
array = (long double *)realloc(array, sizeof(long double)*max_numbers);

if (!array) {
if (errno != 0)
   perror("realloc");
else
   fprintf(stderr, "Possibly no memory\n");

free(array);
return EXIT_FAILURE;

}

  }

  if (isdigit(**++argv)) {
errno = 0;
aux = strtold(*argv, &endstr);

if (errno != 0) {
perror("stdtold");
free(array);
return EXIT_FAILURE;

}

*result++ = aux;

continue;

  }

  if (!check)
check = true;

  result -= 2;
 
  if (isnan(*result) || isnan(*(result+1))) {
fprintf(stderr, "Invalid syntax!\n");
return EXIT_FAILURE;

  }

  operator = *argv[0];
  errno = 0;
  *result = calculate(*result, *(result+1), operator);
  result++;

  if (errno != 0) {
free(array);
return EXIT_FAILURE;

  }

   }

   if (check)
  printf("%Lg\n", *--result);
   else
  fprintf(stderr, "Invalid syntax!\n");

   free(array);

   return EXIT_SUCCESS;

}


calculator.c
Código: c
#include <stdio.h>
#include <errno.h>

long double calculate(long double n1, long double n2, int operator) {
long double result;

result = 0.0f;
switch (operator) {
case '+':
result = n1 + n2;
break;

case '-':
result = n1 - n2;
break;

case '*':
result = n1 * n2;
break;

case '/':
if (n2 == 0.0f) {
errno = EINVAL;
fputs("Zero divisor!\n", stderr);
} else
result = n1 / n2;
break;

default:
errno = EINVAL;
fprintf(stderr, "Invalid operator: '%c'\n", operator);

}

return result;

}


calculator.h
Código: c
long double calculate(long double n1, long double n2, int operator);


El proceso de compilación es sumamente sencillo:

Código: dos
i16gcc -o polish.exe -O2 polish.c calculator.c
polish.exe 2 2 +
polish.exe 4 2 *
polish.exe 2.5 2.5 +



Reto:

Aquí no acaba. Vamos a realizar una serie de retos para ver si los pueden completar. Básicamente consta de agregar nuevas funcionalidades a la calculadora:


  • Agregue más operadores binarios (que requieran de dos números) como el módulo, la potencia, etc
  • Sabiendo que los operadores lógicos no funcionan con el tipo de dato long double, agregue operadores, como AND, OR, XOR, etc.
  • Agregue operadores de relaciones, para determinar si dos números son iguales, uno es menor o igual, uno es mayor o igual, uno es mayor, uno es menor, uno es distinto del otro, etc

¿Cuántos puedes resolver? 3:)

Notas futuras:

Desde que empecé a hacer estos pequeños artículos no he querido usar QEMU; traté sin éxito de usar FreeDOS (no el pre-configurado) con DosEMU, que me pareció mucho mejor en cuanto a rendimiento y usabilidad, pero luego de error tras error, mejor lo dejaré para otra ocasión.

Material de referencia y altamente recomendada:

*.- You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
*.- You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
*.- You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
*.- You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
*.- You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
*.- You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

~ DtxdF
#482
Gracias @You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login por leerlo, es un gusto como siempre.

Sí, una vez entré a un hospital y pude observar con mis propios ojos que usaban MSDOS. FreeDOS es de las mejores alternativas para estos programas heredados.

PD: Ya estoy preparando una especie de segunda parte ^-^

~ DtxdF
#483
@You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Tienes que usar un algoritmo de ordenamiento. Como recomendación 'quicksort', pero en este caso te muestro el algoritmo burbuja que aunque es menos eficiente, es más sencillo de implementar, y puede servir más o menos para darte una idea.

Código: javascript
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">

    <title>Document</title>
</head>
<body>
    <div class="principal">
        <script>
            var pilotos = new Array();
var temp;
var config_order = 0; // `1` de menor a mayor; `0` de mayor a menor.

function compare_size(x, y) {
if (config_order) {
if (x > y) {
return true;

}

} else {
if (x < y) {
return true;

}

}

return false;

}

            pilotos = [
                [
                    "Lando Norris", 4, 60
                ],
                [
                    "Sebastian Vettel", 5, 10
                ],
                [
                    "Carlos Sainz", 55, 50
                ],
                [
                    "Lewis Hamilton", 44, 15
                ],
                [
                    "Kimi Rikkonen", 7, 37
                ],
            ];

let i = pilotos.length;
while (--i > 0) {
for (let j = 0; j < pilotos.length-1; j++) {
if (compare_size(pilotos[j][2], pilotos[j+1][2])) {
temp = pilotos[j];
pilotos[j] = pilotos[j+1];
pilotos[j+1] = temp;

}

}

}

            document.write('<div class="contenedor">');

            for (i = 0; i < pilotos.length; i++) {

                document.write('<div class="caja">');
                document.write('<div class="detallito">', '<div class="name"><div class="namecolor"><h3>' + pilotos[i][0] + '</h3></div><h4>');
                document.write('<div class="numbcolor">', 'Número:  ' + pilotos[i][1] + '</div></h4></div>');
                document.write('<div class="marks"><div class="time"><h3>', 'Tiempo:  ' + pilotos[i][2] + ' minutos', '</h3></div></div></div>');
                document.write('</div>');
            }
        </script>
    </div>
</body>
</html>


~ DtxdF
#484
@You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

No, no, ninguna. Lo aclaré al final, para indicar que es más simple y podría o no adaptarse a uno o muy pocos usuarios.

~ DtxdF
#485
Suena genial eso @You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login, nos comentas el resultado ^-^

~ DtxdF
#486
Muchas gracias @You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login, un placer ^-^

~ DtxdF
#487
doas es un programa para ejecutar comandos como otro usuario. El administrador del sistema puede configurarlo para otorgar privilegios a usuarios específicos para ejecutar comandos específicos. Es gratuito y de código abierto bajo la licencia ISC y está disponible en Unix y varios sistemas Unix-like.


Fuente: NixCraft

doas es lo más simple que puedes conseguir teniendo muchas características del veterano sudo, no obstante a pesar de que éste último sea prácticamente un estándar de facto en la mayoría de sistemas, hay otros como OpenBSD que ya lo traen por defecto. Y no es por nada, doas es realmente fácil de usar y de configurar, ciertamente éso es debido a los patrones que contiene que analizaremos en brevedad.

Instalación:

Para la instalación en Gnu/Linux se usará debian, pero son libres de usar cualquier distribución de preferencia y que sea compatible. En el caso de FreeBSD, simplemente se instalará desde los repositorios.

Debian:

Código: bash
sudo apt install build-essential make bison flex libpam0g-dev 
git clone https://github.com/slicer69/doas.git
cd doas
sudo make install


FreeBSD:

Código: bash
su
pkg install doas


Nota: Al concluir la instalación de doas en FreeBSD tendremos un archivo de configuración de ejemplo en '/usr/local/etc/doas.conf.sample'. Si se desea usar ese y modificarlo según nuestros datos, mucho mejor, como lo haremos en este caso.

Configuración:

Como se comentó anteriormente, doas provee patrones muy fáciles de aprender y comprender. El patrón es: permit|deny [options] identity [as target] [cmd command [args ...]]

permit|deny: permit, permite la opción o el comando de doas escrito en la configuración; deny, es la contraparte de permit, por lo que deniega la opción o el comando escrito en la configuración.
[options]: Las opciones del comando u opción a tratar. Ya se describirá mejor este apartado en unos instantes.
identity: El nombre de usuario o gropo que está ejecutando el comando. En el caso de un usuario, se coloca una cadena de caracteres (como: dtxdf), pero en el caso de un grupo se colocan dos puntos y una cadena de caracteres como se mencionó (como: :wheel).
[as target]: Ejecutar una opción o comando como un usuario o grupo en específico.
[cmd command [args ...]]: Ejecutar el comando siguiendo las opciones especificadas anteriormente.

Nota: Todo lo que esté en | significan que se pueden ejecutar una de esas opciones (como en: permit|deny). Todo lo que esté entre corchetes, es opcional (como en: [options]).

[options] tienes una variedad de opciones que permiten cambiar el comportamiento de cada comando. Entre ellas están:

*- nopass: No se requiere que el usuario ingrese una contraseña
*- persist: Después de que el usuario se autentica con éxito, no vuelva a solicitar una contraseña durante algún tiempo. Funciona en OpenBSD solamente, La opción persist no está disponible en Linux o FreeBSD.
*- keepenv: Mantener el entorno de usuario por defecto. Para poder ejecutar la mayoría de aplicaciones GUI, el usuario debe tener la palabra clave keepenv especificada, ya que en caso de que no sea así, puede bloquear la aplicación de forma indefinida debido a una mala información que se le proporcione.
*- setenv {[variable ...] [variable=value ...]}: Se pueden especificar variables de entorno arbitrarias o incluso se pueden eliminar las ya definidas usando un guion (-) al inicio del nombre de ella.

Ahora siguiendo el archivo de configuración de ejemplo que está en '/usr/local/etc/doas.conf.sample', vamos a copiarlo a '/usr/local/etc/doas.conf' y empecemos a configurar:


Código: text
# Archivo de ejemplo para doas
# Por favor consulte la página de manual de doas.conf(5) para obtener información sobre
# cómo configurar un archivo doas.conf.

# Permitir a los miembros del grupo wheel ejecutar acciones como root
permit :wheel

# Permitir al usuario alice ejecutar comandos como el usuario root.
permit alice as root

# Permita que el usuario bob ejecute programas como root, manteniendo las variables de entorno. Útil para aplicaciones GUI.
permit keepenv bob as root

# Permita que el usuario cindy ejecute solo el administrador de paquetes pkg como root para realizar actualizaciones de paquetes.
permit cindy as root cmd pkg update
permit cindy as root cmd pkg upgrade


Otro ejemplo que podría resultar interesante en caso de no deseas ejecutar poweroff o reboot sin requerir contraseña es:

Código: text
permit nopass user as root cmd poweroff
permit nopass user as root cmd reboot


O también podríamos denegar el acceso a una operación:

Código: text
deny user cmd poweroff


Esto resultaría:

Código: text
doas poweroff
doas: Operation not permitted


Nota: user debe ser reemplazado por tu nombre de usuario.

¿Cuál es mejor?

Ninguno. sudo por un lado es complejo, y tiene muchas opciones de configuración que le ofrece a un administrador de sistemas versatibilidad, pero doas es perfecto para la mayoría de usuarios que solo requieren ejecutar una tarea con privilegios.

Material de referencia y recomendado:

*- You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
*- You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

~ DtxdF
#488
GNU/Linux / Re:Postea tu escritorio Linux
Noviembre 01, 2020, 05:32:07 PM
Muy chulo @You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login y el de todos los usuarios. Creo que no había visto este post, pero sumo por diversión ^-^


~ DtxdF
#489
Tú lo has dicho, sin duda es una excelente opción para revivirlos :D

~ DtxdF
#490
@You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Genial que su proyecto esté funcionando. Doy este tema por solucionado  ;D

~ DtxdF
#491
GNU/Linux / Instalación de FreeDOS en QEMU + Alternativas
Noviembre 01, 2020, 05:05:50 AM
FreeDOS es un sistema operativo completo, gratuito, de código abierto y compatible con DOS que se puede utilizar para jugar juegos DOS clásicos, ejecutar software empresarial heredado o desarrollar sistemas integrados. Cualquier programa que funcione en MS-DOS también debería ejecutarse en FreeDOS.


FreeDOS es mucho más que una aplicación para revivir algunas aplicaciones y juegos clásicos, además de ser muy útil en entornos donde haya sistemas heredados pero obsoletos, los cuales mayormente son usados en el sistema operativo MSDOS. FreeDOS además de ser compatible con las míticas aplicaciones de aquella época, hacen que cualquier aficionado veterano o curioso por aprender, le dé 5 estrellas a este proyecto que se ha mantenido por decadas.

Descarga:

En nuestro caso elegiremos la You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login que puede ser encontrada You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login.

Código: bash
wget -c -vv http://www.freedos.org/download/download/FD12CD.iso


Instalación:

Se usará QEMU sin un frontend gráfico, y será usado en FreeBSD, aunque el resultado no será diferente a otros sistemas. Si se desea usar un frontend gráfico en debian se puede leer You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login. En el caso de Arch Linux, es recomendable You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login de la misma wiki.

También se tiene la libertad de elegir otros virtualizadores compatibles...


Antes de empezar, es necesario crear una imagen usando You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login:


Código: bash
qemu-img create freedos.img 200M


El formato por defecto es crudo (raw, en inglés) que permite ser simple y fácilmente exportable a otros emuladores. También asignamos 200 Megabytes de espacio (suficiente para la mayoría de cosas, incluso puede ser una exageración).

Ahora ejecutamos FreeDOS:


Código: bash
qemu-system-i386 -smp cores=$(nproc) -m 32 -drive file=freedos.img,media=disk,format=raw -drive file=FD12CD.iso,media=cdrom -boot order=d


Nota: Para los usuarios de FreeBSD, deben crear un alias para nproc, mientras que en Gnu/Linux ya existe el comando como tal. Como por ejemplo:

Código: bash
alias nproc="sysctl -n hw.ncpu"


Explicación breve:

qemu-system-i386: Usaremos QEMU para emular un sistema con el juego de instrucciones del You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
-smp cores=$(nproc): Configura algunas opciones para el invitado, como el número de núcleos a utilizar
-m 32: Le asignamos 32 megabytes de memoria (aunque 16 también funcionaría, me gusta exagerar :D)
-drive file=freedos.img,media=disk,format=raw: file=... define la imagen del You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login; media=... define el tipo de medio (disk o cdrom); format=... define el formato del disco virtual, que en nuestro caso es en crudo (raw, en inglés).
-boot order=d: El orden de las unidades. a y b para el disquete 1 y 2; c para el primer disco duro; d para el primero cdrom

Nota: Es recomendable leer el You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login


Ahora, una vez comprendemos cada parámetro y opción ajustada, lo ejecutaremos para pasar a instalarlo:



Ya hemos configurado correctamente nuestra máquina virtual, ahora seleccionamos la primera opción (Install to harddisk)


Ahora seleccionamos nuestro idioma de preferencia.


Presionamos: Sí - Continúe con la instalación


Presionamos: Sí - Crear tabla de particiones en la unidad C:


CitarFree FDISK es capaz de usar soporte de disco grande para permitirle crear particiones mayores a 2.048 MB usando particiones FAT32. Si habilita la compatibilidad con discos grandes, cualquier partición o unidad lógica de más de 512 MB se creará utilizando FAT32.

IMPORTANTE: si habilita la compatibilidad con discos grandes, algunos sistemas operativos podrán acceder a las particiones y unidades lógicas que tengan más de 512 MB de tamaño.

Si estás de acuerdo, presiona Y, que en nuestro caso será así.


Nos aparecerán varias opciones interesantes, pero la más relevante para este tutorial será la primera: Crear partición DOS o unidad lógica DOS (Create DOS partition or logical DOS drive, en inglés). Presionamos enter.


Ahora presionamos la primera opción, ya que nos interesa crear una You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login con el fin de instalar un sistema operativo en ella (FreeDOS, en nuestro caso).


Ahora nos pregunta si queremos usar el tamaño máximo de la partición disponible, que en nuestro caso será: Y


Finalizado la creación de la partición, terminemos el proceso saliendo con ESC.


Nos devolverá a este menú nuevamente, pero lo ignoraremos y presionaremos otra vez ESC


Ahora presionamos otra vez ESC para salir y que los cambios hagan efecto.


Reiniciamos presionando: Sí - Por favor, reiniciar ahora


Nos aparecerá el mismo menú del principio, y debemos presionar nuevamente la primera opción.


Otra vez seleccionamos el idioma de preferencia.


Presionamos: Sí - Continúe con la instalación


Le damos formato a la unidad presionando: Sí - Por favor, borrar y dar formato a la unidad C:.





Seleccionamos la distribución del teclado de nuestra preferencia, que en nuestro caso será: Español.


En esta parte se tiene la libertad de elegir cuántos paquetes instalar y si incluir con ellos, el código fuente. Solo paquetes básicos es una opción perfecta si solo queremos el software que está en MSDOS, pero Todos los paquetes es si queremos los paquetes básicos y el software que ha creado la comunidad FreeDOS con el tiempo. En nuestro caso la opción que está en la imagen es perfecta.


Presionamos: Sí - Por favor, instale FreeDOS 1.2.





Una vez finalizada la instalación, reiniciamos.


Ahora iniciamos el sistema.


Ya tenemos FreeDOS instalado en QEMU :D

Alternativas:

Dosbox:

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login es un emulador que recrea un entorno similar al sistema DOS con el objetivo de poder ejecutar programas y videojuegos originalmente escritos para el sistema operativo MS-DOS.

Existe dosbox-staging el cual es mantenido por los fanáticos de este emulador y tiene You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login respecto a Dosbox. La instrucciones pueden variar dependiendo de la distribución, así que lo dejaré en manos de los mismo autores: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login.

FreeBSD ya tiene incluido el paquete:


Código: bash
doas pkg install dosbox-staging


Con dosbox podemos hacer exactamente lo mismo que FreeDOS, pero no tendremos a disposición todo el software en comparación.


Jugando Ace of the Pacific

Antes de continuar, es recomendable ajustar un pequeño valor en el archivo de configuración de dosbox/dosbox-staging.

Código: bash
vim ~/.config/dosbox/dosbox-staging.conf


Cambiamos 'keyboardlayout' de 'auto' a 'es' para que tengamos preconfigurado la distribución del teclado.

Una vez iniciado dosbox:



Montamos un directorio que deseamos, como Games


Otro pequeño consejo es que para aumentar el rendimiento de los programas en dosbox, debemos aumentar la velocidad del CPU. Con CTRL + F11 lo disminuimos y con CTRL + F12 lo aumentamos. Es recomendable aumentarlo hasta donde sea coherente.

MSDOS:

Sí, hasta él se puede usar nuevamente pero hay que recordar que ya no está mantenido, aunque FreeDOS es caso contrario, pero en caso de que eso no importe, se puede descargar el código fuente mismo desde el You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login o desde You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login.

Juegos clásicos:

Podemos conseguir juegos clásicos en las siguientes páginas:


  • You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
  • You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Lectura recomendada:


  • You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
  • You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
  • You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
  • You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
  • You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

~ DtxdF
#492
@You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Sería grato que nos pasara un poco más del código o el código completo para poder analizarlo y no perdernos de alguna incongruencia.

En cualquier caso, puede que esto le sirva de ejemplo para que lo compare y veo si hay algún error:

Código: cpp
#include <iostream>
#include <cstdlib>

#define MAX_BUFF 35

char tipo_imc_actual[MAX_BUFF];

inline void copy_to_type(const char *s) {
strncpy(tipo_imc_actual, s, MAX_BUFF);

}

void tipo_de_peso(double a) {
if (a < 16.0)
copy_to_type("Bajo peso | Delgadez severa");
else if (a >= 16.0 && a <= 16.99)
copy_to_type("Bajo peso | Delgadez moderada");
else if (a >= 17.0 && a <= 18.49)
copy_to_type("Bajo peso | Delgadez leve");
else if (a >= 18.5 && a <= 24.99)
copy_to_type("Peso normal");
else if (a >= 25.0 && a <= 29.99)
copy_to_type("Sobrepeso | Preobeso");
else if (a >= 30.0 && a <= 34.99)
copy_to_type("Obesidad | Obesidad leve");
else if (a >= 35.0 && a <= 39.99)
copy_to_type("Obesidad | Obesidad media");
else
copy_to_type("Obesidad | Obesidad morbida");

}

int main(void) {
tipo_de_peso(10);

std::cout << tipo_imc_actual << std::endl;

return EXIT_SUCCESS;

}


~ DtxdF
#493
@You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

¿Al cargar el módulo "psmouse" funciona el touchpad pero una vez reiniciado no o no funciona en ningún momento?

~ DtxdF
#494
Excelente post AXCESS, ya esperaba leer sus artículos.

En el libro que escribió Glenn Greenwald "Snowden: Sin un lugar donde esconderse" hablan de esa alianza, muy interesante y espeluznante a la misma vez.

~ DtxdF
#495
Muy buen post @You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login ^-^

~ DtxdF
#496
@You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

No tiene que hacerlo desde el lado del servidor, y está difícil no hacerse notar por el operador, al menos no de la manera convencional. No están necesario tener que abrir un puerto en el router, puede realizar port forwarding.

Aquí está un artículo, y le aconsejo que lea también los comentarios, nuestros compañeros indicaron otros servicios y formas de hacerlo, por lo tanto, puede serle igual de útil: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Sobre Tor (o cualquier intermediario), tiene que hacerlo desde el lado del cliente, y que éste se conecte así al servidor suyo.

~ DtxdF
#497
@You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Siendo sincero, no se me ocurre mucho sobre lo que desea hacer realmente y espero haberle entendido bien. Creo que no desea redirigir el tráfico de la red Tor hacia su servidor VPN, eso no es posible dentro de lo viable; lo que creo o por lo menos pienso que desea es que el cliente se conecte a su servidor VPN y que éste pase el tráfico a través de la red Tor.

SI es el segundo, no necesita cambiar nada entonces, pero el cliente necesita configuración específica para poder navegar. En caso que no desee que el cliente tenga que estar configurando, entonces no veo motivo sobre usar una VPN en el cliente, simplemente usando el script, el cliente se puede conectar como si nada hubiera pasado o en otras palabras, de forma transparente.

~ DtxdF
#498
Por supuesto que se puede  ;D. Aunque las configuraciones están hechas para usarse directamente con el proxy de Tor, simplemente teniendo un servidor SOCKS local (exceptuando al de Tor) y excluyendo también la configuración para redirigir las peticiones DNS entrantes hacia el servidor DNS de Tor, ya que como no se usarán, no son relevantes y crearían reglas innecesarias.

Lea esto si está en Debian (quizá le sea de utilidad para otras distribuciones): You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

~ DtxdF
#499
@You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Como lo aclara AXCESS, la informática en sí no es un mundo, sino un universo, lleno de posibilidades que abundan y resultan excelentes si se desea una segunda o incluso más de una tercera oportunidad en la vida.

Es tan amplía que como recomendación, además de su especialización (sea cual sea), debe poder manejar diversos temas, que con el tiempo y esfuerzo constante, las dominará como cualquier cosa. Es altamente recomendable leer sobre lo nuevo, lo más actualizado, lo que se use, si es que desea llevar su carrera al trabajo y si desea poder ir más allá que un examen.

Como recomendación, todo lo que le manden, investigue más allá de lo que le enseñan para comprender, no solo entender las cosas que se explican y poder tener una buena especialización del tema a tratar. Recuerde que existe una base de datos enorme (Internet) llena de artículos diversos, con temas interesantes, completos y sobre todo al alcance de un par de click's, por lo que aproveche ese recurso ante nada.

~ DtxdF
#500
@You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Felicidades amigo, sigue así  ;D

Aún recuerdo a un sujeto hablando en una sala de IRC vacia, entablando una conversación interesante de conomientos e ideas, sí mi amigo, ese eras tú, amigo de la red  8)

~ DtxdF