elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Tutorial básico de Quickjs


  Mostrar Temas
Páginas: 1 2 [3] 4 5 6
21  Sistemas Operativos / GNU/Linux / Portatil HP - HDA Intel - Sin sonido [Solucionado] en: 16 Noviembre 2014, 13:48 pm
¡Buenas!

Al reiniciar ayer el sistema me encontré con que no había forma de reproducir audio. Ni funciona el MIDI (comprobado en musescore) ni se oye la música o las pistas de audio de ningún vídeo en VLC o Audacity.

Leyendo sobre el tema, he encontrado información relativamente antigua sobre problemas con el audio derivados de la actualización del kernel y tarjetas de sonido Intel (en mi caso la que venía integrada con el portátil), pero la última actualización del kernel fue el día 12 y tras reiniciar el ordenador (juraría que en algún momento entre la instalación del kernel y ayer lo reinicié) no tuve problemas.

Tanto antes de ayer como ayer hubo actualizaciones de paquetes relacionados con el audio:

Start-Date: 2014-11-14  19:46:46
Commandline: apt-get dist-upgrade
Upgrade: libgssapi-krb5-2:amd64 (1.12.1+dfsg-11, 1.12.1+dfsg-14), libkrb5-3:amd64 (1.12.1+dfsg-11, 1.12.1+dfsg-14), libnb-org-openide-util-java:amd64 (7.4+dfsg1-1, 7.4+dfsg1-2), libaudio2:amd64 (1.9.4-1+b1, 1.9.4-3), krb5-locales:amd64 (1.12.1+dfsg-11, 1.12.1+dfsg-14), bash:amd64 (4.3-11, 4.3-11+b1), libnb-org-openide-util-lookup-java:amd64 (7.4+dfsg1-1, 7.4+dfsg1-2), libkrb5support0:amd64 (1.12.1+dfsg-11, 1.12.1+dfsg-14), libk5crypto3:amd64 (1.12.1+dfsg-11, 1.12.1+dfsg-14), x11-apps:amd64 (7.7+3, 7.7+4)
End-Date: 2014-11-14  19:47:09

Start-Date: 2014-11-15  12:29:51
Commandline: apt-get dist-upgrade
Upgrade: libgnutls-openssl27:amd64 (3.3.8-3, 3.3.8-4), libvorbisfile3:amd64 (1.3.4-1, 1.3.4-2), libgnutls-deb0-28:amd64 (3.3.8-3, 3.3.8-4), libgnutls-deb0-28:i386 (3.3.8-3, 3.3.8-4), libvorbis0a:amd64 (1.3.4-1, 1.3.4-2), libvorbis0a:i386 (1.3.4-1, 1.3.4-2), libvorbisenc2:amd64 (1.3.4-1, 1.3.4-2), libvorbisenc2:i386 (1.3.4-1, 1.3.4-2)
End-Date: 2014-11-15  12:30:00

He estado buscando información sobre posibles conflictos que pueda haber entre estos paquetes y el buen funcionamiento del audio, pero la verdad es que no he encontrado nada (solo llevo perdida media mañana). He probado a reinstalar los paquetes tanto en el orden de las actualizaciones como en orden inverso (por si acaso), he probado a sustituir oss-compat por osspd, ya que en un informe de bug de Debian comentaban que en Jessie oss-compat podía dar problemas, y en alguna otra página comentaban que puede haber conflictos entre oss, alsa y pulseaudio, con algunos comandos que he visto por ahi (no me preguntéis cuales porque he visto tantos que no me acuerdo) he comprobado que la tarjeta de sonido predefinida es la que tiene que ser y que en el mezclador de audio el sonido no está muteado  ;D

Quería saber si os encontráis u os habéis encontrado en la misma situación y si habéis podido solucionarlo, o en su defecto si podrías ayudarme a diagnosticar el problema para ver si se puede solucionar y como hacerlo...

¡Saludos!
22  Sistemas Operativos / GNU/Linux / ¿Conocéis algún sustituto de udisks2 que no utilice systemd? en: 27 Octubre 2014, 18:38 pm
¡Buenas!

Estoy apañando Debian Jessie para intentar funcionar sin systemd, volviendo a sysvinit. Por los experimentos que he hecho en una máquina virtual, se puede tener un sistema funcional con xfce, slim como display manager y sustituyendo network-manager por wicd, así que le he metido mano al sistema del día a día y he realizado esos cambios. Ahora me acabo de dar cuenta de que al conectar cualquier dispositivo USB tengo que montarlo a mano (aún no he probado con los CDs). Al cargarme systemd también ha volado udisks2. He intentado instalar udevil pero también intenta instalarme systemd.

La cuestión es saber si conocéis alguna utilidad que monte dispositivos USB/opticos de forma automática sin depender de systemd o si al final me tengo que resignar a montarlos a mano.

¡Saludos!
23  Foros Generales / Sugerencias y dudas sobre el Foro / ¿Se podría añadir la opción de editar fórmulas en TeX? en: 4 Julio 2014, 17:54 pm
¡Buenas!

Ya se que este no es un foro específico sobre matemáticas, pero creo que podría resultar útil, si no requiere demasiado esfuerzo, integrar alguna opción para editar fórmulas en TeX. No se utilizaría demasiado, ya lo sé, pero serviría para plantear problemas concretos y que la opción exista no creo que haga daño a nadie.

¡Saludos!
24  Sistemas Operativos / GNU/Linux / Linux Mint Debian Edition satura la RAM en: 18 Enero 2014, 20:33 pm
¡Buenas!

No llevo ni 12 horas con LMDE (la última versión disponible) y ya tengo problemas. Ya lo he instalado, he consguido configurar el controlador de la dichosa Broadcom he instalado cairo dock y he comprobado que no podía inicar sesión utilizándolo (esto lo tengo pendiente por cabezonería), Steam sin problemas (aun no he instalado ningún juego)...

El problema que me trae aquí es la RAM. Me he puesto a ver una serie online, a instalar paquetes y a curiosear webs, todo a la vez, y de repente el sistema se ha transfomado en un caracol con un esguince. Lentísimo y tardaba una barbaridad en responder. Cuando he mirado la temperatura uno de los núcleos alcanzaba 93ºC y el otro 90ºC y el monitor del sistema me ha contado que de 4GB de RAM solo quedaba libre el 2% y de los 4GB de swap se estaba usando la mitad.

Llevo al rededor de una hora haciendo funcionar el ordenador al mínimo y la temperatura ya es normal, pero la ram sigue al 98% y la swap al 50%.

¿Podéis ayudarme a encontrar (y si se puede, a solucionar) el problema? (A lo mejor lo que tengo que hacer es jubilar el ordenador, no lo se...)

Aquí os dejo las características del enjendro este...

Intel Core 2 Duo a 2.2 GHz
4GB de RAM
Y la grafica es expres chipset family yo que se que. La integrada esta que traen los portatiles... (no se como mirarlo... ya lo descubriré)
El controlador de la gráfica puedo deciros que es este: Intel Corporation Mobile 4 Series Chipset Integrated Graphics Controller

Ya se que la información no es muy precisa, si os hace falta algo mas concreto avisad y ya os contaré.

¡Saludos!

He seguido investigando un poco y tengo un candidato a culpable. El proceso mate-settings-daemon se come casi 2GB de RAM.
________________________________________________________________________________

Reinicie y despues de haber tenido funcionando el equipo mas de 18 horas no he vuelto a tener el problema...
25  Sistemas Operativos / GNU/Linux / ¿Que particiones y de que tipo hacen falta para instalar GNU/LINUX? en: 12 Enero 2014, 14:45 pm
¡Buenas!

He estado curioseando un rato para saber que particiones y de que tipo me hacen falta para instalar un sistema GNU/LINUX, y he encontrado información contradictoria. Quiero instalar Linux Mint basado en Debian. La cuestión es que solo dispongo de una partición primaria (las demás están ya asignadas a la partición oculta de windows, la del propio windows y otra partición más con etiqueta recovery). Así que en principio, si no toco nada, solo me queda una partición. Había pensado que podía hacer que la partición en la que voy a instalar Mint fuese una partición extendida y a partir de aquí crear 3 particiones lógicas para el sistema, swap y home, pero como ya he dicho, la información que tengo es contradictoria.

Algunas páginas me dicen que el sistema tiene que estar instalado en una partición primaria y que tanto swap como home pueden estar en particiones lógicas y otras me dicen que el directorio raíz también puede estar en una partición lógica.

Quería aclararme con esto antes de empezar a mover archivos para hacerle hueco a Mint.

¡Saludos!
26  Sistemas Operativos / GNU/Linux / ¿Debian win32 loader es equivalente a wubi? en: 30 Diciembre 2013, 01:55 am
¡Buenas!

Llevo unas cuantas horas intentando buscar información sobre el tema de Win32 Loader, pero la que encuentro es escasa y mala (a lo mejor estoy saturado y no veo lo que tengo delante...)

Los pasos que sigo son:
- Creo un USB booteable utilizando unetbootin. (Debian 6)
- Entro en el pen y ejecuto setup.exe
- Sigo los pasos que me marca win32 loader.
- Reinicio el ordenador y entro en la instalación de debian.
- Llego hasta el punto en que me pide crear particiones, me cago en todo, mantengo pulsado el botón de encendido hasta que se apaga el ordenador, lo enciendo, entro en windows y desinstalo el lanzador de la instalación de debian.
- Busco información en internet
- Me pongo de mal humor porque no encuentro nada util que me explique paso por paso lo que tengo que hacer...
- Creo que no he entendido bien las cosas...

El último punto es la clave de todo el asunto.  :xD

Tenía entendido que win32 loader era equivalente a wubi. Cuando instalé ubuntu con wubi, como una aplicación mas de windows, no recuerdo haber tenido que reiniciar ni crear particiones. Se instalo como una aplicación mas de windows y cuando arranco el ordenador puedo escoger entre los dos SO.

¿No puedo hacer esto con debian? ¿Estoy obligado a tener que formatear una de las particiones y tener que mover todos los datos que tengo en ella para no perderlos?

Si alguno de vosotros ha conseguido instalar debian como un programa de windows sin tener que perder o mover datos me gustaría saber como lo ha hecho...

¡Saludos!
27  Comunicaciones / Redes / ¿Se puede controlar el ancho de banda utilizado por las aplicaciones? en: 25 Julio 2013, 16:03 pm
¡Buenas!

Estoy conectado a internet a través de mi smartphone con una conexión capada a 16 KB/s. Si mientras estoy ejecutando el gestor de descargas intento acceder a alguna web y esta es un poco pesada (con alguna imagen un poco pesada, varias imágenes o algún video) el gestor pierde todo el ancho de banda, me da error en la transferencia del archivo y tengo que volver a reiniciar la descarga.

¿Existe alguna forma de asegurar un ancho de banda mínimo para el gestor y repartir el resto de la conexión entre el resto de las aplicaciones?

(Intentaría googlear, pero google se me come todo el ancho de banda...)

¡Saludos!
28  Programación / Programación C/C++ / Sucesion de Fibonacci recursiva optimizada en: 20 Julio 2013, 14:11 pm
¡Buenas!

Esta mañana me he dedicado a perder el tiempo, así que comparto el tiempo perdido con vosotros y no tengo la sensación de haberlo perdido para nada.

Se trata de la sucesión de Fibonacci (ya conocida por todos (supongo)).

El algoritmo obtenido no es tan rápido como la versión iterativa (creo que anda cerca), pero mejora con creces la versión recursiva.

Evidentemente no es inmediata, como la formula que obtiene el enésimo termino en función de n y de phi (el numero aureo...)

Tampoco he utilizado programación dinamica, así que el único problema de memoria, si lo hubiese, estaría originado por una cantidad excesiva de llamadas recursivas.

Aquí os dejo un par de códigos. El primero con explicaciones sobre como se llega a la formula utilizada y con una comparación entre el algoritmo clásico y el optimizado, y el segundo para utilizarlo desde la linea de comandos, por si a alguien le hace ilusión.

¡Saludos!

Código
  1. /*
  2.   JUGANDO UN POCO CON LA SUCESION DE FIBONACCI
  3.   ============================================
  4.  
  5.   La sucesion de Fibonacci se define de forma recursiva como:
  6.  
  7. fibo(n) = n  si n = 0 ó 1
  8. fibo(n) = fibo(n - 1) + fibo(n - 2) si n > 1
  9.  
  10.   Aplicar la recursion de esta forma hace que el numero de llamadas sea de orden
  11. exponencial con respecto al tamaño inicial del dato, por lo que el algoritmo se
  12. vuelve lento rapidamente.
  13.  
  14.   Suponiendo n suficientemente grande podemos descomponer fibo(n - 1) en el paso
  15. de recurcion como sigue:
  16.  
  17. fibo(n) = fibo(n - 1) + fibo(n - 2) = (fibo(n - 2) + fibo(n - 3)) + fibo(n - 2) =
  18. = 2 * fibo(n - 2) + fibo(n - 3)
  19.  
  20.   Aplicamos el mismo proceso a fibo(n - 2):
  21.  
  22. fibo(n) = 2 * fibo(n - 2) + fibo(n - 3) = 2 * (fibo(n - 3) + fibo(n - 4)) + fibo(n - 3) =
  23. = 3 * fibo(n - 3) + 2 * fibo(n - 4)
  24.  
  25.   Y para ver las cosas mas claras lo repetimos con fibo(n - 3):
  26.  
  27. fibo(n) = 3 * fibo(n - 3) + 2 * fibo(n - 4) = 3 * (fibo(n - 4) + fibo(n - 5) + 2 * fibo(n - 4) =
  28. = 5 * fibo(n - 4) + 3 * fibo(n - 5)
  29.  
  30.   Por si no queda claro donde queremos llegar resumimos lo que tenemos hasta ahora:
  31.  
  32.   Cada una de las siguientes expresion son iguales a fibo(n):
  33.  
  34. 1 * fibo(n - 1) + 1 * fibo(n - 2) = fibo(2) * fibo(n - 1) + fibo(1) * fibo(n - 2) =
  35. 2 * fibo(n - 2) + 1 * fibo(n - 3) = fibo(3) * fibo(n - 2) + fibo(2) * fibo(n - 3) =
  36. 3 * fibo(n - 3) + 2 * fibo(n - 4) = fibo(4) * fibo(n - 3) + fibo(3) * fibo(n - 4) =
  37. 5 * fibo(n - 4) + 3 * fibo(n - 5) = fibo(5) * fibo(n - 4) + fibo(4) * fibo(n - 5)
  38.  
  39.   Si seguimos de esta forma podemos intuir que
  40.  
  41.   fibo(n) = fibo(k + 1) * fibo(n - k) + fibo(k) * fibo(n - k - 1) := F(n,k) para 0 <= k < n
  42.  
  43.   Se puede demostrar por induccion que fijando un N natural (N >= 2) se tiene que
  44.  
  45.   fibo(N) = F(N,k) para todo 0 <= k < N
  46.  
  47.   y que fijado K natural para todo n > K se tiene que
  48.  
  49.   fibo(n) = F(n,K)
  50.  
  51.   por lo tanto tenemos:
  52.  
  53.   fibo(n) = F(n,k) = fibo(k + 1) * fibo(n - k) + fibo(k) * fibo(n - k - 1) para 0 <= k < n
  54.  
  55.  
  56.   SUCESION DE FIBONACCI OPTIMIZADA
  57.   ================================
  58.  
  59.   Escribiremos fibo(n) como  f(n), es mas corto :-)
  60.   Partiendo de la expresion F(n,k) consideraremos dos casos:
  61.  
  62.   - n par:
  63.  
  64.         Sea k = n / 2
  65.  
  66.         Asi F(n,k) = f(k + 1) f(n - k) + f(k) f(n - k - 1) =
  67.         f(n/2 + 1) f(n/2) + f(n/2) f(n/2 - 1) =
  68.         =f(n/2) (f(n/2 + 1) + f(n/2 - 1)
  69.  
  70.         F(n,n/2) = f(n / 2) * (f(n / 2 + 1) + f(n / 2 - 1)) := F(n)
  71.  
  72.     - n impar:
  73.  
  74.         Sea k = (n - 1) / 2
  75.  
  76.         F(n,k) = f(k + 1) f(n - k) + f(k) f(n - k - 1) =
  77.         f((n - 1) / 2 + 1) f((n + 1) / 2) + f((n - 1) / 2) f((n + 1) / 2 - 1) =
  78.         f((n + 1) / 2) f((n + 1) / 2) + f((n - 1) / 2) f((n - 1) / 2) =
  79.         (f((n + 1) / 2))^2 + (f((n - 1) / 2))^2
  80.  
  81.         F(n,(n - 1)/2) = (f((n + 1) / 2))^2 + (f((n - 1) / 2))^2 := F(n)
  82.  
  83.     Por lo tanto definimos la sucesion de Fibonacci como sigue:
  84.  
  85.     fibo(0) = 0
  86.     fibo(1) = 1
  87.     fibo(n) = F(n) si n > 1
  88.  
  89.     donde:
  90.         F(n) = fibo(n / 2) * (fibo(n / 2 + 1) + fibo(n / 2 - 1)) si n par
  91.         F(n) = (fibo((n + 1) / 2))^2 + (fibo((n - 1) / 2))^2     si n impar
  92.  
  93.     Observemos ahora que si n==2,
  94.  
  95.     fibo(2) = F(2) = fibo(1) * (fibo(2) + fibo(0)) = fibo(1) * fibo(2)
  96.  
  97.     y tenemos una recursion infinita, ya que para calcular fibo(2) hay que calcular fibo(2)...
  98.  
  99.     Asi pues, tenemos la definicion final de la sucesion de Fibonacci:
  100.  
  101.     fibo(0) = 0
  102.     fibo(1) = 1
  103.     fibo(2) = 1
  104.     fibo(n) = F(n) si n > 1
  105.  
  106.     con F(n) como antes.
  107.  
  108.     Definiendo fibo(n) de esta forma, en cada paso de recursion generamos dos o tres llamadas
  109.     a la misma funcion fibo, pero en cada una de ellas reducimos el tamaño del dato inicial a
  110.     la mitad, por lo que el coste computacional es mucho menor (¿Cual es el coste? No se calcularlo)
  111. */
  112.  
  113. #include <stdio.h>
  114. #include <stdlib.h>
  115. #include <time.h>
  116.  
  117. #define MIN 37
  118. #define MAX 42
  119.  
  120. typedef unsigned long long fibo_t;
  121.  
  122. unsigned long long llamadas_clasico;
  123. unsigned long long llamadas_optimizado;
  124.  
  125. fibo_t fibo_clasico(fibo_t n)
  126. {
  127.    llamadas_clasico++;
  128.  
  129.    if(n == 0)
  130.        return 0;
  131.    if(n == 1)
  132.        return 1;
  133.  
  134.    return fibo_clasico(n - 1) + fibo_clasico(n - 2);
  135. }
  136.  
  137. fibo_t fibo(fibo_t n)
  138. {
  139.    llamadas_optimizado++;
  140.  
  141.    if(n == 0)
  142.        return 0;
  143.    if(n == 1)
  144.        return 1;
  145.    if(n == 2) //Evitamos recurion infinita si n == 2
  146.        return 1;
  147.  
  148.    if(n % 2) //n impar y mayor que 2
  149.    {
  150.        fibo_t k1,k2;
  151.  
  152.        k1 = fibo((n + 1) / 2);
  153.        k2 = fibo((n - 1) / 2);
  154.  
  155.        return k1 * k1 + k2 * k2;
  156.    }
  157.  
  158.    //n par y mayor que 2
  159.    return fibo(n / 2) * (fibo((n / 2) + 1) + fibo((n / 2) - 1));
  160.    //si n == 2 fibo(n / 2) * fibo(n / 2 + 1) = fibo(1) * fibo(2)
  161.    //habria recursion infinita si no se pone n == 2 como caso base
  162. }
  163.  
  164. int main(int argc, char *argv[])
  165. {
  166.    fibo_t i,valor;
  167.    time_t ini;
  168.  
  169.    printf("Fibonacci clasico:\n");
  170.  
  171.    ini = time(NULL);
  172.  
  173.    for(i = MIN ; i < MAX ; i++)
  174.    {
  175.        llamadas_clasico = 0;
  176.        valor = fibo_clasico(i);
  177.  
  178.        printf("  fibo_clasico(%llu) = %llu (%llu llamadas)\n",i,valor,llamadas_clasico);
  179.    }
  180.  
  181.    printf("%llu segundos\n",time(NULL) - ini);
  182.  
  183.    printf("\nFibonacci optimizado:\n");
  184.  
  185.    ini = time(NULL);
  186.  
  187.    for(i = MIN ; i < MAX ; i++)
  188.    {
  189.        llamadas_optimizado = 0;
  190.        valor = fibo(i);
  191.  
  192.        printf("  fibo(%llu) = %llu (%llu llamadas)\n",i,valor,llamadas_optimizado);
  193.    }
  194.  
  195.    printf("%llu segundos\n",time(NULL) - ini);
  196.  
  197.    return 0;
  198. }
  199.  

Código
  1. #include <stdio.h>
  2.  
  3. typedef unsigned long long fibo_t;
  4.  
  5. fibo_t fibo(fibo_t n)
  6. {
  7.    if(n == 0)
  8.        return 0;
  9.    if(n == 1)
  10.        return 1;
  11.    if(n == 2)
  12.        return 1;
  13.  
  14.    if(n % 2)
  15.    {
  16.        fibo_t k1,k2;
  17.  
  18.        k1 = fibo((n + 1) / 2);
  19.        k2 = fibo((n - 1) / 2);
  20.  
  21.        return k1 * k1 + k2 * k2;
  22.    }
  23.  
  24.    return fibo(n / 2) * (fibo((n / 2) + 1) + fibo((n / 2) - 1));
  25. }
  26.  
  27. int convertir(char *s, fibo_t *valor)
  28. {
  29.    *valor = 0;
  30.  
  31.    while(*s)
  32.    {
  33.        if((*s) < '0' || (*s) > '9')
  34.        {
  35.            *valor = 0;
  36.            return 0;
  37.        }
  38.  
  39.        *valor *= 10;
  40.        *valor += (*(s++)) - '0';
  41.    }
  42.  
  43.    return 1;
  44. }
  45.  
  46. int main(int argc, char *argv[])
  47. {
  48.    int i;
  49.    fibo_t n;
  50.  
  51.    if(argc < 2)
  52.    {
  53.        fprintf(stderr,"\nLinea de comandos: %s PARAMETRO_1 [PARAMETRO_2 ... PARAMETRO_N]\n\n",argv[0]);
  54.        fprintf(stderr,"Los distintos parametros deben ser enteros positivos\n");
  55.        return 1;
  56.    }
  57.  
  58.    fprintf(stdout,"\n");
  59.  
  60.    for(i = 1 ; i < argc ; i++)
  61.    {
  62.        if(!convertir(argv[i],&n))
  63.            fprintf(stderr,"%s: parametro incorrecto\n",argv[i]);
  64.        else
  65.            fprintf(stdout,"%s(%llu) = %llu\n",argv[0],n,fibo(n));
  66.    }
  67.  
  68.    return 0;
  69. }
  70.  
29  Foros Generales / Sugerencias y dudas sobre el Foro / Spam de Tapatalk en: 20 Junio 2013, 11:11 am
¡Buenas!

Supongo que habrá mas usuarios en esta situación. La publicidad masiva que se hace desde el foro de Tapatalk, cada vez que hago click en algún mensaje del foro cuando me conecto por el movil.

Puedo entender que el mensaje de descarga de la aplicación aparezca de forma informativa una sola vez, pero que cada vez que acceda a un foro o un hilo aparezca el dichoso mensaje es harto molesto.

No se quien ha diseñado el anuncio, pero por favor, si no lo quitáis, ponedle al menos una forma de evitar que se muestre mas de una vez.

¡Saludos!
30  Comunicaciones / Redes / ¿Como puedo evitar que determinadas aplicaciones puedan acceder al router? en: 17 Enero 2013, 15:24 pm
¡Buenas!

Uno de mis compañeros de piso utiliza un programa de descargas que tambien va subiendo el archivo que esta descargando. Dicho programa ocupa todo el ancho de banda de subida y a pesar de que he mirado sus opciones de configuracion, no se puede limitar la subida. Viendo que esta persona, a pesar de que le hayamos explicado que no debe hacerlo porque nos esta jodiendo a todos, sigue utilizando el programa (lo acabo de comprobar mirando en el router la lista de aplicaciones que utilizan UPnP), me gustaria saber si hay alguna forma de bloquear el programa en el router, para evitar que se pueda utilizar.

El router es un Livebox 2 de Orange.

¡Saludos!
Páginas: 1 2 [3] 4 5 6
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines