Ver Mensaje Individual
  #13 (permalink)  
Antiguo 05/10/2014, 19:21
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años
Puntos: 320
Respuesta: bloque de registro desde php

Cita:
Y si alguien tiene una modificación urgente que hacer?Es más feliz, y piensa que el sistema está mejor diseñado, porque al menos "sabe" que alguien tiene el registro bloqueado desde hace 7 horas?
No es mas feliz ni piensa nada del sistema, lo único que piensa es "¿Quien es el **** que tiene abierto este registro que quiero editar? Le voy a agarrar de los pelos para que cierre ya mismo la pantalla." si el sistema esta bien diseñado, le proporcionara instantáneamente ese dato.

Cita:
Es que el comportamiento de la persona cambia si la aplicación es de escritorio o web?
No. Lo que cambia es la plataforma y sus características, si es de escritorio o web justamente, valga la redundancia.

Cita:
Bloquear un registro antes de que exista una acción concreta a realizar sobre él, es algo que está intrínsecamente mal diseñado.
No necesariamente, estamos de acuerdo en que no es la mejor opción, pero es la mas simple y la mas rápida, justamente por eso todas las bases de datos medianamente serias tienen herramientas nativas para aplicar esta solución.

Cita:
Una persona categoriza un objeto en un formulario :
MATERIAL : Oro. PRECIO 1

Diez minutos despues, se da cuenta de que se ha equivocado de material, y modifica:
MATERIAL : Plomo PRECIO 1

Pero alguien tambien se ha dado cuenta, y piensa que el problema es el precio, y modifica, a la vez:
MATERIAL : Oro. PRECIO 100

Como son dos modificaciones "compatibles", en la BD queda:
MATERIAL: Plomo PRECIO 100.

Si una modificación es compatible o no con otra, es algo que depende completamente de la naturaleza del dato.De quien es responsabilidad saber que el oro vale 100 o 1? De la aplicación?
Puede la aplicación inferir quien se ha equivocado de material, y quien se ha equivocado de precio?
Si eso es posible que ocurra, entonces hay un error de diseño de la aplicación y si, la responsable de dicho error es la aplicación, una aplicación que permita que ocurra tal escenario tiene la culpa de que los materiales tengan mal los precios y el programador es responsable legal de las perdidas/ganancias económicas que dichos cambios puedan producir hasta que se corrija el error.
En caso de juicio, un perito informático culparia al desarrollador en vez de al usuario.

La alternativa que yo uso y que ya explique previamente, cuando el usuario se da cuenta del error y pasa a cambiar el nombre del materia por "plomo" le saltaría un cartel diciendo algo asi:
"El metal que intenta editar ha sido modificado por el usuario B a las d/m/Y H:i:s y actualmente tiene estos datos:
Nombre Oro
Precio 100
¿Desea cambiar el nombre a "plomo" de todas formas?"

De esta forma, el usuario explicitamente se hace cargo de que el plomo vale $100 y es el responsable, no el sistema.
Cuando esto ocurre, el usuario suele amar al sistema por advertirle del cambio y evitar que meta la pata.

Nadie borra un registro cuando un usuario apreta el boton de eliminar, siempre se le pide que confirme la accion, ¿Porque? por que no se quiere que el usuario cometa accidentalmente un error, de igual forma un usuario no deberia poder editar un registro sin tener certeza exacta de cuales son los datos que esta modificando, por eso cuando otro cambia los datos hay que preguntarle si realmente quiere pisar los nuevos datos ya que el no sabe que alguien lo modifico.

EDITO: Poner un settimeout es como bien dices una chapuza, ya que tendrías al sistema verificando constantemente de forma totalmente innecesaria, el sistema debe verificar una única vez cuando se confirma la acción, no cada x segundos.

Cita:
¿Ah no? ¿Para modificar un registro no tienes primero que leerlo? Y de las cuatro operaciones que se pueden hacer sobre un registro (CRUD), la creación y la modificación no necesitan de un formulario? ¡Ay, señor!
A lo que @dashtrash creo que se refiere (corregidme si te malinterpreto) es a que en la web (que es la plataforma que usamos, lo de las aplicaciones de escritorio es meramente anecdotico aqui) cuando un formulario viene para editar, no haces una lectura con bloqueos ni nada de eso, simplemente editas el campo y en ese momento, te da igual si el usuario esta viendo 1, 2, 3, 4 o ningun formulario, solo tienes un conjunto de datos y una accion para aplicarles.

Cita:
¿Y es? PATRONES DE DISEÑO
¿Como eliminar las dependencias entre dos clases? Patrones de diseño
¿Como hacer que la web cargue los contenidos a medida que los usa? Patrones de diseño
¿Como evitar que un objeto cree instancias de otro? Patrones de diseño
¿Como hacer que una red de computadoras siga funcionando si se desconecta una? Patrones de diseño
Y podria seguir asi haciendo preguntas que no guardan relacion con este tema ni entre ellas culla respuesta es la misma "Patrones de diseño", por supuesto que no el mismo patron para todas, pero la respuesta es generica.

¿Tu que patrón/es en particular usarías en este caso?
Esa seria una respuesta interesante de leer.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios

Última edición por NSD; 07/10/2014 a las 14:27