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

#2061
Yo aplaudo decisiones de seguridad.
Sin embargo, lo que ya no me parece tan acertado es que quienes no crean protocolos de seguridad, sean los que tomen decisiones y lo desaprueben. Es decir, al hacerlo, dejarán automáticamente muchos equipos viejos obsoletos, no proveen alternativa (a los usuarios afectados, se entiende (otra que no sea comprarse un equipo nuevo)).

El caso más grave es por parte de Google, pués sabido es que esos protocolos tan antiguos, los calzan precisamente los equipos que son su competencia directa en hardware... a saber, los PC. ...por lo que no me parece tanto 'buenismo' por parte de google, sino un hachazo a Microsoft y sobretodo a usuarios domesticos.


El caso se torna aún más ridículo cuando hablan de cifras y sueltan esto:
CitarNo se espera que esto afecte a los usuarios ya que el 99% de las páginas que visitamos actualmente utilizan TLS 1.2 o 1.3. Es posible que en caso muy muy concretos tengamos algún tipo de problema, pero no será generalizado ni masivo.
Es decir... si al final la cantidad de usuarios afectados es ridícula, a qué tanto afán de dejarlo atrás...? Entonces queda en duda que la verdadera razón sea la seguridad, que cacarean...
#2062
Esto es lo que se llama dispar a la semiesfera metálica que está delante de tí.
No fallas, acierta sí o sí, pero tampoco te libras del rebote. ¿Entonces, merece la pena?.

El paso que dé google, que sea el que quiera...
Pero yo entiendo que las aplicaciones YA instaladas en mi tf. no pueden ser de cobro en adelante, es decir que intente remplazármelas por unas de pago. Entiendo que eso debe ser así, SOLO para los teléfonos nuevos que se vendan, la multa ya cubre el 'delito cometido'.

#2063
BuscarIndice no... la función debe llamarse como lo que es una: BusquedaBinaria o dicotomica.

Es posible optimizarla un poco más, si necesitas hacer muchas más búsquedas sobre el mismo array ordenado.

Para ello antes de devolver, recuerdas el índice y el valor que acabas de buscar.
En la siguiente llamada, al entrar comparas si la entrada es menor mayor o igual que la guardada antes:
---- Si es menor, el espacio de búsqueda se limita a "Min - indicerecordado-1"
---- Si es mayor el espacio de búsqueda se limita a "indicerecordado+1 - max"
---- Si es igual, devuelves el indicerecordado.
#2064
Programación C/C++ / Re: colas dobles
15 Octubre 2018, 05:38 AM
Depende de la forma en que estén unidas las dos colas.
He llegado a programar diferentes variedades como colas que extraían (si no estaba vacía) alternativamente, de una y luego de otra... también por prioridad extrayendo de la cola que tenga un valor que cumpla una cierta condición (por ejemplo el menor)...

En general al margen de otras propiedades que se pueden añadir, la única operación extra suele ser extraer de la cola y encolarla de nuevo por una de las dos. requiere un parámetro para señalar a cual de ellas se refiere, basta un buleano para decidirlo, pués son solo 2.

PopAndPush( cola)



Sobre las colas realizadas con arrays:
La dificultad de los arrays, es que al extraer un elemento, los demás no bajan 'por su peso'.... se soluciona moviendo el índice de lo que es el tope y la cima según convenga...

Sea un elemento lo definido entre 2 rayas verticales: "||"
Y sea una cola vacía de 10 elementos, el fondo y la cima ahora mismo son 0,
  -------------
------------->|--->
  -------------

después de meter 4 elementos (cuenta 4 espacios entre las 5 rayitas), el fondo es 0, la cima 4
  -------------
--------->|||||--->
  -------------

ahora sacamos un elemento... el fondo es 1 y la cima sigue siendo 4
  -------------
--------->||||--->
  -------------

Metemos 4 elementos más (hay 7), el fondo sigue siendo 1, la cima suma 4 más (ahora es 8).
  -------------
----->||||||||--->
  -------------
Ahora extraemos 4 (quedan 3 otra vez), el fondo suma 4 (ahora es 5), la cima no cambia (sigue siendo 8)...
      -------------
----->||||--->
      -------------
Extraemos 1 elemento más, el fondo ahora suma 1 (pasa a valer 5), la cima no cambia (sigue siendo 8 y quedan aún 2 elementos en la cola)
      -------------
----->|||--->
      -------------
Ahora metemos 4 elementos (pasa a haber 6), el fondo no cambia cuando se mete (sigue siendo 5), la cima suma 4, (pasa a ser 12) pero como excede el tamaño del array ... verás como se solventa.
      -------------
---->||||--->||||
      -------------
solo caben 1 ahí, los otros 3 se colocan al otro lado del array... es decir en el índice 0, 1 y 2.
La cima ahora está donde pongo la '¡' y el fondo donde pongo '!'
      -------------
---->|||!---->¡|||
      -------------

Así ves que siempre se suma... en la cima cuando se añaden, en la cola cuando se sacan.
Y entonces resulta circular, pero transparente desde fuera. como nos daba 12 y queda fuera de rango, hay que modularlo...

cima = (((cima + añadidos) modulo size-1) -1)
Se puede resumir, puesto que si "size-1" y luego "-1" se resume en "modulo size"... Esto porque el array se basa en indice 0.

Luego una función resulta ideal para llevar la cuenta de cima y fondo, lo que al final facilita enormemente la tarea...

entero Funcion Recalcular(previo, cambios)
  devolver ((previo + cambios) modulo size)
fin funcion

// se añaden 4 elementos
cima = Recalcular(cima, 4)
size  += 4

// se sacan 2 elementos
fondo = Recalcular(fondo, 2)
size -= 2


Natualmente como se añade uno a uno, y se sacan uno a uno... el parámetro cambios solo tendrá valores: '+1' y '-1' y allí dentro mismo puede actualizarse también size.


entero Funcion Recalcular(previo, cambio)
  devolver ((previo + cambio) modulo size)
  size += cambio  // suma 1 o resta uno según el signo de 'cambio'.
fin funcion

// después de añadir 1 elemento
cima = Recalcular(cima, 1)

// después de sacar 1 elemento
fondo = Recalcular(fondo, -1)





#2065
Lo ideal sería crear clases, pero si no te apetece al menos, si crear otras funciones que son llamadas exclusivamente desde esa. Por ejemplo, las interpolacones... crea una función para interpolar que recibe como parámetros una imagen o un array de bytes, ancho y alto d eorigen ancho y alto final, método de interpolación, etc... incluso ésta si ofreces varios métodos según calidad, puede llamar invidualmente a ca una que trata un método específico, por ejemplo una bilineal, otra bicúbica, etc...
Lo mismo si quieres trabajar con luces, briilo, contraste, saturación etc... sácalas como funciones.

El compilador tiene una serie de límites, el de variables totales del programa no creo que se supere, pero quizás algún compiador no espere que una sola función alcance 1Mb. (por ejemplo), lo habitual es que una función no supere las 2000 líneas de código, que ya queda una función larga... lo habitual es que esas 2000 líneas sean las que tienen un móulo repartidas entre 15 funciones (por ejemplo)...

No debes considerar que si tu función llama a otras 20 para hacer su tarea suponga una sobrecarga de tiempo. Aunque una llamada a una función supone cierta carga, solo se aprecia su sobrecarga cuando se ejecutan en un bucle largo.

En fin divide tu función en cuestiones funcionales... además a futuro, lo vas a agradecer, porque el mantenimiento o una ampliación luego será más sencillo, y no penoso como creo que te va a resltar.
Al estar dividido en funciones, cada una queda aislada, entra algo y devuelve algo, y el como haga lo que haga a otra función no le importa, los cambios que hagas en ella no atañe al resto mientras siga recibiendo y devolviendo lo mismo que antes... (mantener en vigor sel contrato).
Cuando tienes una macrofunción... un simple cambio, puede suponer que afecte a 300 líneas de código repartidas entre esas miles, tardarás más en localizar cada punto (y asegurarte que no te olvidas de ninguno), que en modificar el propio código.

El tiempo se tiene que perder escribiendo código... no buscando y revisando que un cambio aquí, no afecta allí y allí y allá...

"Divide y vencerás" decían los romanos, en programación eso se traduce sobretodo en productividad....
#2066
Rayos y truenos... que estupidez.
Ahora a cualquier cosa a la que le pones un sensor, le llaman 'inteligente'...

Es decir si el médico te pone un termómetro en el culo, pasas a tener un culo inteligente.
#2067
Quiero que se imponga ya mismo las reformas necesarias, para dejar al petróleo para usos sin nada que ver con combustibles ni alimentación.
Pero tampoco me parece justo que todo ese cambio lo debamos pagar siempre los ciudadanos (cuando paga el gobierno, lo hace con nuestros impuestos). Una industria que ha generado montañas de dinero durante décadas, tiene que estar por la labor de invertir... siempre lo quieren todo gratis, todo subvencionado. Rebajas por I+D, rebajas por determinadas contrataciones, rebajas por instalarse en tal o cual ciudad (so amenaza de irse a otra ciudad, país), rebajas por despdos e indemnizaciones y hasta por suspensión de pagos... ...y como los políticos (sean de partido que sean), al final siempre son colegas de todas las grandes empresas, se salen con la suya y nos venden, nos quitan nuestra economía para favorecer a las grandes empresas.

Eso sí, luego en los anuncios, no paran de presumir de lo buenos que son, lo avanzada de su  tecnología y cloack, cloack, cloak... mucho cacareo, para al final enterarnos (por ejemplo), que esas grandes empresa alemanas de la instria automovilística estaban mientiendo y falseando los controles de emisión de gases...
#2068
Citar...ya que hay firmado un acuerdo de confidencialidad...
psssss...

Es lo mismo que decir que 'sé que han matado a 20 personas, pero no puedo decir quien ha sido, porque he firmado un contrado de confidencialidad". Creo que en este como en otros tantos casos, los derechos de los usuarios que pudieran verse afectados, están por encima de ningún acuerdo...
#2069
Divídelo al menos en una decena de funciones... aunque el propio código, debiera determinar cuantas. Pero que sean manejables.

Puedes seguir teniendo una función pública y el resto las defines privadas, de modo que solo sean llamadas desde tu función pública (si es ese el caso).

Sin embargo, no entiendo que si es un motor de juegos, deba tener una única función.
Probablemente en la llamada deba recibir muchos parámetros y al caso podrías pasar la mayoría a propiedades donde verificas que su valor sea aceptable... luego que se invoque la función solo revisas si hay conformidad con las propiedades recibidas antes de ejecutar la función. Esa revisión podría recaer en otra función que debuelva un buleano, para saber si puede continuar o debe abortar (porque algo falla en los parámetros), ...también toda la funcionalidad extra de señalar el error y la causa podría delegarse a una función aparte (la misma que verifica, por ejemplo).

También cuesta entender que se supone que esperas que un posible usuario deba entender que hace tu motor de juegos si solo contiene una única función.

El caso es que diviendo tu función en varias, tendrás más probabilidades de que no alcances límites que establezca el compilador en su tabla de símbolos...
Un modo de paliar límites en variables en agruparlas en estructuras, arrays, etc... según convenga al caso...
Por ejemplo si tienes variables como estas: int Rojo, int verdeManzana, int ocre, int marino, int lila... mejor una enumeración de tipo color, luego basta una sola variable que recibe el valor  que a cada momento se precise.

...en realidad particionar dicha función en varias (aunque no recurras a más de una clase) lejos de complicar el código debería facilitar su simplicidad. Aunque sean funciones espagueti, será siempre mejor que una macro función espagueti.

De todos modos si pones un puñado de líneas (pongamos 100), uno puede hacerse idea del típo de codificación que estás haciendo y orientar con más precisión el camino a tomar...
#2070
Ya... como sea igual que infojobs...

Hace como 10-12 años, terminé un contrato y me alentaron para apuntarme a infojobs... precisament epara buscar trabajo rápidamente... el caso es que en la zona hay pocas empresas, pero una publicaba varias ofertas de empleo cada semana... después de hacer cuentas, sería alrededor de 30-50 personas a la semana las que buscaban, el caso es que tenía un amigo trabajando en esa empresa, le llamé (hacía mucho tiempo que no nos veíamos) y le pregunté que tal en la empresa, el caso es que era una empresa pequeña de apènas 20 empleados, le dije que llevaba  viendo anuncios semanales de ofertas para 20 o más empleados cada semana y me respondió que eran unos 15 empleados 2 años atrás, y ahora unos 20, y que en los últimos meses, hubo 3-4 cambios pero no empleos nuevos...
En fin, que vino a dejarme claro, que se publican ofertas que al final no son reales y quizás ni la propia empresa sepa de ello, o sí, y acepte un pago por usar su nombre para publicar ofertas falsas. Siempre se quedaba todo en 'deja tus datos y currículum y si la empresa está interesada ya contactará... al final escribí a los de infojobs, exigiéndoles que de cada oferta publicada, volvieran a poner al final, cuando una empresa había decidido entre los candidatos por uno o por otro, precisamente para eliminar ofertas falsas... y no tuve respuesta. Es calro, que el único objetuivo era el autobombo, la autopromoción para decir a final de año: hemos tramitado no secuentos cientos de miles de trabajos y así subir su cotización sin una base real...

... así que al final después de 3 meses en dique seco, me borré... resultó inútil por completo (ya sin detallar algunas ofertas absurdas donde requerían cosas dispares , ni aquellas donde más que un trabajador, querían que Dios trabajara para ellos (y además gratis)...

Casi se puede asegurar que es mismo perro pero con distinto collar, o distinto perro que usa el mismo collar que el otro... resumiendo no me creo ni la mitad d elo que digan.