M

mfalem

Usuario (Argentina)

Primer post: 12 nov 2009Último post: 9 ene 2015
10
Posts
187
Puntos totales
86
Comentarios
L
Lo que hay que saber de Placas de Video
InfoporAnónimo11/12/2009

Habitualmente nos preocupamos por elegir nuestra PC en base a números y nombres grandilocuentes. Estas técnicas de promoción son a veces confusas y sólo nos llevan a comprar algo de baja calidad creyendo esos números y nos damos cuenta muy tarde de la realidad. Con las placas de video, desde hace años, sucede esto más a menudo que con los procesadores o los discos rígidos. Obvio, en todas las instancias sucede, pero es normal que la gente no entienda por qué tal o cual juego 3D le funciona mal o lento, seguramente, es por su mala placa de video. Otros se preocupan por la marca, otros por la cantidad de memoria, por eso en esta nota trataremos de aclarar un par de dudas existenciales de los compradores de PC, la placa de video, cual conviene y para qué. Aquél que no esté muy versado en estos temas pensará que cualquier placa de video es lo mismo, pero no es así, un jugador experimentado le podrá aclarar diferencias que usted ni sabía que existían. El problema para la "primer PC" o el comprador inexperto es que nadie les explica que cuernos significa cada cosa ni para que sirve. Empecemos por lo básico ¿para que va a usar la PC? Si va a utilizarla principalmente para jugar (o su hijo la desea para ello) tendrá que tener en cuenta que el ahorrar unos pesos en la placa de video no le va a servir de mucho, si su intención son los juegos modernos, deberá pensar en una buena placa de video, no más "la más barata pero que sirva" ya que esa no existe. Si el uso en cambio es de escritorio estamos ante lo más sencillo: cualquier placa de video sirve. La diferencia actual radica allí: los juegos. Es el universo que obliga a la actualización constante y al avance tecnológico en esta área. Pero no termina allí, hay varios factores que debemos entender para poder hacer nuestra elección, algunos dependen del resto de la PC otros son propios de la placa de video, paso a contarles. OnBoard, AGP y PCI-E Muchas siglas tiene este tema y será mejor que presten atención a las mismas ya que aquí yace el primer problema. ¿Que "tipo" de placa elegir? Lo primero que nos va a condicionar es el Motherboard de nuestra PC. No voy a hablar de PCs viejas, porque casi no existen placas nuevas para estos equipos, hablaremos desde los AGP en adelante. Pero bien vale aclarar: en un punto (hace 6-7 años) se dieron cuenta que las placas de video necesitaban una conexión más rápida entre el procesador, la memoria y la placa. Entonces pasaron de los "slots" (las ranuras de expansión) PCI a agregar un slot AGP. Único ya que era imposible sincronizar dos a la vez, pero ideal para el uso que se esperaba del mismo. A la vez otro tuvo la ocurrencia económica de no poner ningún slot disponible en el motherboard: intergrar el video en los circuitos era más barato (y de menor calidad, claro ), así que nacieron los modelos On Board. OnBoard el chip de video se encuentra en el motherboard, si bien hay algunos que funcionan bien, sólo los podría recomendar para equipos baratos de escritorio. Comparten la memoria RAM de la PC, es decir, no poseen una propia, "roban" megas de la RAM y por ende en una PC con 128Mb, se queda con 96 disponibles (habitual en PCs de gama baja). Sirven sólo para escritorio, para la PC de la abuela, para escribir y navegar, olvídense de juegos, aunque algunos funcionan, lo hacen mal y hasta con fallas. AGP x2,x4,x8 AGP fue bueno mientras duró, actualmente no hay motherboards nuevos con este slot, pero si se siguen vendiendo muchos que quedan remanentes y lo más probable es que si compran una PC el vendedor quiera venderles un motherboard con AGP diciéndoles que es perfecto. Error. AGP está muriendo en manos de PCI-E, no tiene sentido pagar lo mismo por un motherboard-placa de video AGP cuando hay otros más modernos al alcance. Si en cambio el presupuesto es un problema y consiguen un AGP barato... bueno, es una cuestión de recursos. Funcionan excelente y hay grandes placas de video con esta norma, pero como dije, falta poco para que no se fabriquen más placas AGP. La primer gama de placas importantes surgió con esta norma y la x2,x4,x8 no es sólo una diferencia de velocidad: varía hasta el voltaje de la placa. Esto trae dolores de cabeza, hasta yo tengo una placa 8x pero funcionando a 4x que es lo que soporta el motherboard PCI Express, llamado PCI-E o PCI-X, es la evolución del viejo PCI. Un slot PCI-E permite conectar no una, si no varias placas de video (si el motherboard cuenta con dos, ej: motherboards SLI o Crossfire) y el "ancho de banda" entre el procesador y la placa es mucho mayor que el AGP. Es la evolución necesaria para este tipo de dispositivos y cuenta con numerosas ventajas, entre ellas no sólo que las últimas placas se fabrican pensando en PCI-E si no que el precio/performance es de mayor rendimiento. Vale lo que cuesta, pero claro, todavía pueden parecer caras si sólo se ve el precio. El motherboard, ese otro problema ¿que sucede si sólo tenemos un motherboard viejo? bueno, tendrán que elegir la placa de video adecuada, pero aquí yace otro problema ¿la placa de video es suficiente para jugar bien? la respuesta es un rotundo NO. No porque la placa de por sí sola no puede hacer nada si no le llega información a medida que la necesita, doy un ejemplo: Mi motherboard tiene un bus de datos de 200Mhz, el micro tiene un FSB de 200Mhz (Athlon 1200), la memoria RAM es PC-100 (bus de 100Mhz), por ende... por más placa de video que instale estará atrapada en dicho cuello de botella, y es lo que le sucede a menudo. No importa que sea AGP 8x, el motherboard no está a la altura de su capacidad. Esta misma placa de video (una GeForce FX 5200) en otro motherboard (DDR 333, Athlon 2600+ barton, etc.) rinde un 120% más que en el mío. Sólo por el cuello de botella de los datos. El motherboard, el micro, la memoria, el chipset (los demás chips del mother) todo en conjunto puede frenar nuestra placa de video, así que no alcanza con gastar una fortuna en video si el resto del hardware no es acorde. Memoria de la placa de video Otro mito es la creencia de que más memoria es mejor sólo por ser más. Así muchos compraron GeForce 4 MX440 con 256Mb dejando de lado placas de mucho mayor rendimiento con 128Mb. ¿Para que es la memoria? en la memoria se cargan texturas, se crean frames y se envían al monitor, etc. ¿La cantidad importa? si, pero no es lo único, más memoria nos permitirá tener la pantalla a mayor resolución, pero si la memoria es lenta... ¿de que servirá? de nada, ahí está la cuestión. Por ende verán una nueva lista de siglas: DDR, XDDR, GDDR, GDDR2, GDDR3, las últimas las mejores y más costosas, pero es simple, cuanta más memoria texturas más grandes, cuanto más rápida la memoria, mejor rendimiento. El GPU (Procesador de video) El gran personaje de esta historia, el GPU nos puede servir o no, pero es difícil saberlo sin interiorizarnos un poco. Existen muchos modelos y muchas siglas, ahí es donde los fabricantes complican todo, básicamente cada un año hay una nueva gama de productos que sólo afectan la comprensión del comprador. Por suerte es fácil separar las marcas de GPU, dos principales, el resto menor: Principales: ATi y nVidia El resto: SiS, Intel, Via, XGI, S3, Matrox, 3dLabs. No voy a entrar en detalle con respecto al "resto" pero si a las dos principales. nVidia y ATi son los grandes rivales en disputa, ambos tienen placas excelentes que se diferencian por muy poco en rendimiento. Es normal que la gente pregunte "cual conviene, Ati o nVidia" y las respuestas sean más de fanático de fútbol que tecnológicas. Ambas son excelentes, tienen pocas diferencias y sólo se nota en las de más alta gama y por muy poco. Es lo mismo que la rivalidad AMD vs Intel. en video ATI vs. nVidia. En el único caso que puedo recomendar una es para usuarios de Linux y en ese caso es nVidia que tiene mejores drivers, para todo el resto, están parejas. Los GPU son como un CPU (micro) de la PC, sólo que en la placa de video. Al igual que en una PC tienen su velocidad, memoria caché, proceso, calientan, algunas usan cooler, etc. Son practicamente una PC dentro de la PC. Como expliqué antes no se fabrican nuevos chips para AGP, así que en ese rango vemos como máximos exponentes a: Ati Radeon X850 XT PE y la GeForce FX 5950 Ultra. Mucho nombre, pero mucho rendimiento. Difíciles de encontrar en el mercado argentino. Es más normal, en cambio, encontrar una GeForce FX 6600, una 5700, 5200, etc. Para poder compararlas vean después los gráficos que dejo más abajo. Los números de modelo confunden! el dilema está en que cuando nVida (por ejemplo) saca la línea 5000 lo hace con tres mercados como objetivo: el económico, el mediano y el alto. Entonces una placa 5200-5700-5900 debe compararse con 6200-6600-6800. Esto quiere decir que una GeForce FX 6200 es normal que tenga menos rendimiento que una FX5900. Para colmo, las empresas lanzan modelos de mayor rendimiento pero con el mismo chip, una locura para el que quiere entender algo. Para eso sirven los sitios con comparaciones, ahí es donde se nota la diferencia. DirectX y OpenGL Cada placa de video soporta distintas tecnologías de video, OpenGL es el tradicional y más eficiente método para dibujar objetos 3D, usado en animación computada, películas y muchas otras aplicaciones y además abierto, por ende cualquier tipo de equipo puede usarlo. DirectX es propietario de Microsoft y viene avanzando muchísimo en PC, un estándar de-facto que si bien no era tan bueno como OpenGL ha crecido muchísimo y ofrece más opciones de alisado y perfección de imagen. Las placas por lo general soportan ambos modos, el problema está en que DirectX tiene MUCHAS versiones distintas, a diferencia de OpenGL. Placas viejas de mayor rendimiento pueden llegar a DirectX8 y una de menor rendimiento tener DirectX9 pero ser lentísima. Esto es otro dato a tener en cuenta. AAF, AF, y otras cosas raras. Es normal que en los tests de placas de videos que encuentren vean siglas raras, HDR, Pixel Shader, Antia Aliasing, Anisothropic Filtering, etc. La mayoría refleja sus resultados en el alisado de los bordes de los objetos en pantalla. Algo normal en placas viejas es ver todo como un "serrucho" en los bordes. Con estos filtros especiales se alisa la imagen, pero tiene un inconveniente: requiere más placa de video. Por ello en los tests se nota cuando una placa es superior en todo sentido, mantiene el rendimiento en cualquier resolución, o lo baja coherentemente. Las placas no tan buenas pierden fácilmente en los tests más complejos. La cuestión se remite entonces al presupuesto: una placa económica no la usarás nunca con Antia Aliasing o AAF, o con muy poco filtro, para juegos nuevos. Las placas de gama alta, por lo general, pueden ser usadas a alta resolución y con los filtros al máximo. En los tests que linkeo al final de la nota pueden ver las notorias diferencias. SLI y Crossfire Para entusiastas del gaming perfecto, es la posibilidad de conectar dos placas en paralelo para tener casi el doble de performance. La versión de nVidia se llama SLI y lleva varios meses en el mercado argentino, la versión de Ati es Crossfire y todavía no he visto equipos con esta posibilidad, pero en EEUU si los hay. Al procesar la imagen por separado y juntando los cuadros al final logran mejorar el rendimiento notablemente, esto es muy costoso (dos placas de primera línea = 1000u$s) y poco útil al fin y al cabo. A la hora de comprar Si llegaron hasta aquí ya han leído mucho de qué hay en una placa de video y que tener en cuenta, el problema ahora está en qué presenta el mercado argentino para los compradores. Esta nota si bien está referida a Argentina es fácilmente aplicable a cualquier otro país latinoamericano ya que los modelos son básicamente los mismos y los problemas también. Tomo productos y precios de dos casas de computación conocidas de Buenos Aires, Safe Computers y CompuJav. Hay cientos, algunas especializadas, las tómo sólo como ejemplos Por un lado se ven algunas detalles, placas que ya no están en fabricación, placas nombradas como AGP pero que son PCI-E , etc. Es decir, la información es confusa pero no por eso del todo errónea, nos da un parámetro de precios y equipos. En sites poco serios como MercadoLibre es normal encontrar nombres falsos o datos incorrectos, estos sites son de tiendas, por lo general no abusan tanto de eso. Ejemplo 1 (Compujav): Placa de video AGP8x Albatron 6800GT 256Mb DDR3 SLI/2DVI/TV out Box U$S 529.00 En este caso estamos hablando de una placa AGP8x de alta gama, lo notarán por el precio, las memorias son DDR3, el error que veo es que digan que posee SLI cuando esta posibilidad es sólo para placas PCI-E, igualmente, es una bestia gráfica. Sólo para exigentes con motherboards AGP, en poco tiempo esta placa pasará de costar 529 a 200 dólares cuando no existan motherboards AGP! Ejemplo 2 (SafeComputers): 3DLabs OXYGEN GVX420 128 MB AGP BOX Dual Head Profesional U$S 275,00 ¿Que es esto? una placa inservible para la mayoría de las personas, es una placa utilizada para diseño industrial, altas resoluciones en 2D, pero para nada sirve para juegos!!! es muy común que la gente se deje llevar por el nombre, o el aviso de "Dual Head", pero es una placa inútil para jugar, es de uso profesional, para diseñadores que ven resoluciones de más píxeles de los que un monitor normal puede mostrar. Ejemplo 3 (SafeComputers): ASUS V9250GE 256M (ATi Radeon9250,256MB,AGP8X) BOX U$S 79,00 Aquí estamos ante una típica placa de bajo presupuesto. No se fíen de los 256Mb, el GPU de esta placa es lento, si bien para el 90% de las aplicaciones de escritorio sobra, para juegos se queda corta en los últimos y más novedosos, no esperen alto rendimiento por ese precio, el valor es adecuado para el poder de la placa. Juegos como el Counter Strike funcionan al máximo, pero juegos como el Half Life2 estarán a un 50%, ni hablar en juegos más modernos, olvídense de un Quake4 a buen performance o con filtros. Ejemplo 4 (CompuJav) Albatron PC6600GTV, PCI-Express 16x 128DDR3/SLI/DVI/VIVO Box U$S 339,00 Esta es una placa de muy buen rendimiento, rendidora en precio-performance, PCI-E, por ende precisa de los nuevos motherboards con PCI-E, además si sobra dinero permite conectarla con una segunda placa en motherboards SLI. No es de última línea, por eso tampoco es la más cara. Ejemplo 5 (SafeComputers) XFX GeForce 6200TC 256/128 c/TurboCache PCI-E U$s 94,00 ¿que es Turbo Cache? es la "gran mentira" de las PCI-E, las placas con turbo caché "roban" memoria de la RAM de la PC al igual que lo hacían las placas on board viejas. El rendimiento es mucho mayor debido al slot PCI-E pero es menor al de una placa con su propia memoria. Es la opción para aquellos que tienen un motherboard PCI-E pero no les interesan los juegos. Ejemplo 6 (SafeComputers) ASUS N6600/TD/256MB AGP8X BOX 195,00 Otra 6600 pero más económica que la del ejemplo 4, ¿por que? ahí es donde yace la problemática habitual, la del ejemplo anterior es una 6600GT, esta no. La diferencia en performance puede ser fácilmente de un 20%, para colmo es AGP y no PCI-E. Por ende no se sorprendan al ver estos casos, cada precio está más o menos adecuado a su aplicación. Rangos de precio/performance 0-100 U$s Gama baja, para uso de escritorio 120-220 U$s Gama media baja, para juegos normales sin exigir mucho detalle 250-340 U$s Gama media alta, para jugar sin inconvenientes durante buen tiempo (vida útil) 350-500 U$s Gama alta, para gamers exigentes más de 500 U$s ¿que hace ud. leyendo esta nota? si dispone del dinero... cómprela! Tip final La regla del 90-50 se aplica aquí fácilmente. 90% del rendimiento de lo máximo del mercado es un 50% más barato. Por ahí no tanto como 50%, pero si ahorrarán sin dudas un buen dinero. No es necesario comprar la última de la última porque la diferencia entre esa y la siguiente es de tan sólo un 5% de rendimiento. Por ende por 300-400 dólares se consigue muy buen equipo comparado con los 500 de un exigente gamer. La mayoría de las placas vendidas en Argentina y latinoamérica son las de 100 dólares, es decir, la mayoría no las usa para jugar juegos nuevos o para ahorrar y poder adquirir un equipo "recortan" gastos en la placa de video. Sólo se recomiendan si el único fin es jugar. Para la mayoría de las aplicaciones de una PC de hoy en día, una placa de tan sólo 100 dólares cubre la mayoría de las necesidades, es momento de que uds. hagan la elección de lo que realmente quieren hacer con su PC. Fuente: http://www.tecnogeek.com/verpost.php?id_noticia=152

0
0
P
Plugin en jQuery
Apuntes Y MonografiasporAnónimo12/28/2013

Una de las utilidades mas tentadoras que encontré en este framework escrito en javascript es la posibilidad de "agregarle" cierta funcionalidad mediante el uso de plugins. Un plugin es una utilidad que pone jQuery al alcance de los programadores para poder, de alguna manera, ampliar las posibilidades o funcionalidades ofrecidas por defecto. Es una función que se le agrega al objeto jQuery. Una de las mayores ventajas que tiene utilizar un plugin es la reutilizacion del código escrito. Pero antes de seguir con explicaciones, veamos un pequeno ejemplo. Creando el primer plugin Crear un plugin en jQuery es muy sencillo, solo debemos agregar una función a la propiedad 'fn' del objeto jQuery. Pero antes de dar una explicación mas detallada, veamos un ejemplo: Ahora que tenemos el plugin escrito, lo que tenemos que hacer el guardarlo... nosotros le pondremos como nombre 'agrandar.jquery.js'. Luego, habra que incluirlo en el head de nuestra pagina (de mas estr decir que debemos incluir tambien el framework jquery). Por ejemplo: En practica: Ahora si, tenemos todo listo para probar nuestro plugin. Si tenemos un elemento 'div' con la clase 'chiquito'... y luego escribimos: Obtendremos lo siguiente: Este pequeño código, agranda cualquier elemento, dandole un alto y un ancho de 100% de su contenedor, y ademas le da un color rojo de fondo. Facil no? Resumiendo, hacer un plugin significa agregarle una funcion al objeto jquery, de tal manera que, cualquier elemento que extendamos con el objeto jquery, podra responder a dicha funcion. En otras palabras, si escribimos por ejemplo: Existen algunas reglas a tener en cuenta al momento de crear un plugin de jQuery... algunas de las mas importantes son: - Cualquier plugin que escribas, debera llamarse jquery.[nombre_plugin].js, y dentro de ellas, cualquier referencia al objeto this sera una referencia al objeto que reciba el metodo (en este caso, agrandar). - La funcion debe retornar el mismo objeto jquery sobre el cual se solicito. - Se debe utilizar $(this).each() previendo de que el objeto sobre el cual se aplico el metodo, sea una coleccion de objetos. Esto sucede en los ejemplos ateriores, donde escribimos $('.miclase'). Puede suponerse que en una pagina habra mas de un elemento con esa clase, por lo que al usar ese tipo de selector, el objeto que obtenemos es una coleccion. - Se debe terminar todas las instrucciones con un punto y coma ( ; ) de tal manera que el codigo pueda ser comprimido y aun asi seguir funcionando sin problemas. Lo mas importante, es que puedes crear practicamente cualquier funcionalidad e incluirlo como un plugin. Ahora, veamos una posibilidad que existe, y que es bastante interesante a la hora de escribir nuestros propios plugins... Gestion de Opciones Cuando hablamos de opciones hacemos referencia a un objeto que puede ser pasado como parametro al plugin de manera de hacerlo mas flexible y configurable. En el ejemplo anterior, usabamos nuestro plugin para agrandar cualquier elemento, pero al mismo tiempo le dabamos un color rojo de fondo. Que pasaria si quisieramos elegin, en cada invocacion a la funcion, el color de fondo que debe tomar el/los elemento/s elegido/s?? o el tipo y ancho de borde?? o el color y tipo de letra?? Para responder todas estas preguntas, vamos a ver un ejemplo: Notese que en este ejemplo, la funcion recibe un argumento llamado 'opciones', el cual es un objeto. Pero veamos donde crearlo... Llamando a nuestro plugin con opciones Lo primero que vamos a hacer es crear el objeto con las configuraciones que querramos: Con esto, llamamos a nuestro plugin, pero ademas le pasamos un objeto con las configuraciones que debe tomar el elemento cuando se ejecute nuestra funcion. Con esto logramos, como dije antes, que nuestro plugin sea mas configurable, y no solo una funcion que siempre hace lo mismo. Mas claro, echale agua!!! Pero vamos a ir mas alla aun En el ejemplo anterior, le pasamos todos los valores que debe tomar el elemento al momento de ejecutarse la funcion. Pero que pasa si queremos darle a nuestro plugin configuraciones por defecto, y ademas darle la posibilidad a la persona que usa nuestro plugin de poder configurarlo tambien? Es decir, si se hace la siguiente llamada: Nuestros elementos con clase 'chiquito' tomen un formato por defecto, con un determinado color de fondo, color de texto, tamano, etc... pero tambien, que el programador pueda escribir: y de esta manera pasarle parametros personalizados. La solucion a esto es una funcion de jQuery que se llama extend. Esta funcion, 'extiende' las propiedades de un objeto, con las propiedades de otro. Veamoslo en el plugin y luego explicamos como funciona. y luego Notese, que el primer argumento de la funcion extend, es el objeto 'base', es decir, a este objeto se le agregaran (o sobreescribiran) las propiedades que tenga el segundo. Con esto, se logra que el plugin tenga valores por defecto, pero en el caso que el programador le pase a la funcion un objeto con propiedades nuevas, se sobreescriban a las originales, y aquellas que no estaban definidas originalmente, pero si se pasaron como parametro, seran agregadas a las opciones. En nuestro ejemplo, el objeto final (el que toma el elemento) queda de la siguiente manera: Cualquier duda o comentario, no dudes en preguntar... y mientras tanto... a practicar lo aprendido. Mucha suerte!

10
7
B
Barra de Progreso con HTML5 y Javascript
Apuntes Y MonografiasporAnónimo1/18/2014

Buenas, hoy quiero compartir un pequeño ejemplo de como utilizar el tag <progress> que pone a nuestra disposición HTML5. Poniéndolo en practica: Lo que vamos a hacer es un documento HTML simple, con una barra de progreso que aumenta gracias a un intervalo de tiempo manejado con javascript. La idea, es que cada uno adapte este tag, manejándolo de acuerdo a la necesidad que cada problema puntual plantee. Sin mas preambulos... este archivo se llama index.html (pero podes llamarlo como quieras... ej: pepito.html) Y el resultado es algo como esto: Mas allá que, para los que no somos muy fanáticos de los estilos, sea suficiente, para otros es bastante "chato" el estilo por defecto... por eso, te dejo una pagina donde podes jugar un poco y dejar tu barra hecha un 'chiche'. Cortito y al pie... Espero les sirva! Saludos!

5
0
P
Patrones de Diseño (GRASP)
Apuntes Y MonografiasporAnónimo12/10/2014

Buenas noches taringueros, hoy paso a dejarles un articulo cortito y al pie sobre patrones de diseño que escribí. Espero les sirva. Pueden leer el mismo articulo en mi sitio web . En este articulo voy a tratar de resumir (muy brevemente) los patrones de diseño conocidos como Patrones GRASP. El objetivo es lograr explicar de manera muy básica y rápida cuales son los principios de estos patrones, y porque es tan recomendable tenerlos en cuenta a la hora de diseñar software. Que es un patrón de diseño: Empecemos por entender que es un patrón. Un patrón es un conjunto de "elementos" que se repiten de manera predecible. Alguna vez, seguramente escuchamos hablar de "Patrones de Comportamiento", haciendo referencia a un determinado comportamiento adoptado por las personas o sociedades ante algún fenómeno específico (por ejemplo, en economía: cuando hay crisis, la gente gasta menos). Es decir, un patrón es un par causa/consecuencia, fenómeno/efecto o problema/solución. Ahora bien, los patrones de diseño son situaciones o problemas observados de manera recurrente, y asociados a ellas, una solución optima (o al menos sumamente efectiva). Por ejemplo, todas las aplicaciones informáticas (o la inmensa mayoría) necesita de una conexión a una base de datos... eso es un fenómeno común a todas las aplicaciones, un PATRON. Cuando existen situaciones o problemas comunes, y ampliamente observados, surgen soluciones que pueden aplicarse, basándose en una resolución anterior. En lenguaje coloquial, esto sería algo así como: "Este problema tiene la misma forma que uno que resolví exitosamente ayer, entonces aplicaré la misma solución". Esta forma de pensar, nos lleva a entender que los patrones son formas de proceder ante problemas o situaciones recurrentes y bien conocidas. En este artículo voy a resumir brevemente, los patrones de diseño denominados "Patrones GRASP". Se denominan "Patrones GRASP" por sus siglas en ingles: General Responsibility Assignment Software Patterns o Patrones Generales de Software para Asignación de Responsabilidades. Como su nombre lo indica, estos patrones nos indican cual es la manera de asignar responsabilidades a objetos software. Experto en información: el patrón "experto en información" nos sugiere que debemos asignar las responsabilidades a aquellos objetos (o clases de objetos) que disponen de la información para hacerlo. Pongamos un ejemplo (tomado del libro UML y Patrones): tenemos una venta (en un supermercado, por ejemplo), y esa venta está compuesta por un cliente, varios artículos, una fecha, y un monto total. Ahora supongamos que tenemos que crear un método que nos devuelva el total de la venta: Quién es el responsable de realizar dicha tarea? La clase Venta conoce cada uno de los artículos que la integran, registrados en líneas de venta. Cada línea de venta, contiene un artículo, la cantidad, y su subtotal. Bajo esta situación, podemos decir que el experto de información, para ofrecernos el total de la venta, es la misma venta, implementando el método obtener_total(). Pero observemos un detalle, la venta no conoce el subtotal de cada línea, por lo que podría existir un clase "LineaVenta" que implemente el método get_subtotal(). Al mismo tiempo, cada línea de venta no conoce el precio del artículo que lleva, así que debería enviar el mensaje get_precio() al objeto Articulo o Producto. Volviendo sobre nuestros pasos, el objeto "Articulo", retorna el precio propio, el objeto LineaVenta lo multiplica por la cantidad, y devuelve (al objeto venta) su subtotal. El objeto "Venta", suma todos los subtotales retornados por sus lineasVenta y devuelve el total. Obsérvese que en este caso, el objeto venta, no realizó por si mismo todo el cálculo, sino que necesitó de dos objetos más: el objeto "LineaVenta" y el objeto "Articulo", ambos dos, "expertos en información" para las tareas que se les encomendó. Un objeto puede ser "experto en información", pero necesitar para ello la colaboración de otros objetos. Creador: el patrón "Creador" nos invita a discutir quien es el encargado (o quien debería tener la responsabilidad) de crear un determinado objeto. Siguiendo el ejemplo anterior de la Venta, podríamos preguntarnos "Quién es el encargado de crear cada objeto "LineaVenta"? El patrón "Creador" nos sugiere que el encargado de esto debería ser aquel objeto (o aquella clase) que agregue o contenga instancias de la clase LineaVenta. En este caso, la venta es un "contenedor" de instancias LineaVenta, por lo que es candidata ideal (según el Creador) para tener un método crear_linea_venta(). El patrón creador sugiere encontrar clases de objetos que estén vinculadas (o que se conozcan) para hacerlas responsables de la creación de los objetos, manteniendo así un bajo acoplamiento (concepto que se trata a continuación). Bajo Acoplamiento: cuando se habla de acoplamiento entre objetos, se hace referencia a la "fuerza" con la que ciertos objetos están relacionados, o dependen unos de otros. Mientras más dependencias tenga un objeto de otros para llevar a cabo sus tareas, más fuerte será el acoplamiento. Cuando una clase de objetos puede realizar sus tareas, sin depender de ninguna otra clase de objetos (o de un número muy reducido de ellas) se dice que hay bajo acoplamiento. El grado de acoplamiento es importante debido a que está relacionado íntimamente con la reutilización de clases de objetos. Una clase que depende de muchas otras es menos reutilizable (en el sentido de que, si se la quiere reutilizar, hay que reutilizar también todas las clases de las cuales depende). En el ejemplo de "Experto en Información", la clase venta está acoplada con la clase "LineaVenta", ya que depende de ella para poder resolver el método obtener_subtotal(). Este es un patrón (al igual que los demás) que no pueden ser considerados individualmente, sin considerar también otros patrones, y encontrando un equilibrio entre ellos. Tener un sistema con bajo acoplamiento reduce el impacto de los eventuales cambios. El bajo acoplamiento llevado al extremo no es deseable, ya que tendríamos un sistema de elementos individuales, y un sistema de objetos debe estar compuesto de objetos que se comunican y colaboran entre sí. Alta cohesión: la cohesión se refiere al grado o la fuerza con que se relacionan algunos elementos. Un elemento con alta cohesión, realiza tareas relacionadas entre sí. Básicamente esto es "Los objetos deben realizar tareas coherentes y relacionadas entre sí". Un ejemplo sería: si tenemos un objeto "Venta", podríamos implementar métodos como "obtener_subtotal()" o "nueva_linea_venta()", es decir, métodos que tienen una relación fuerte con la venta. Por el contrario, un método "guardar_BD()" que se encarga de guardar la venta en una base de datos, generará una baja cohesión, ya que la venta debería conocer técnicas de almacenamiento del motor de base de datos que se esté utilizando. Este tipo de malas decisiones, ocasiona que objetos realicen muchas tareas poco comunes entre sí, y con el objeto. Lo ideal en este caso, para lograr alta cohesión, sería agrupar todas las funciones de acceso a la base de datos en una clase que se llame "ConexionBD" por ejemplo. En pocas palabras, para lograr alta cohesión debemos agrupar funciones similares en clases individuales... La clase Venta, realizando operaciones relacionadas a la venta, la clase "Pago" realizando operaciones relacionadas con pagos, la clase ConexionBD con lo propio, aunque en la práctica, la cohesión no puede considerarse individualmente sin considerar también el bajo acoplamiento y el patrón "experto en información". "...Como regla empírica, una clase con alta cohesión tiene un número relativamente pequeño de métodos, con funcionalidad altamente relacionada, y no realiza mucho trabajo. Colabora con otros objetos para compartir el esfuerzo si la tarea es extensa..." (Craig Larman) Controlador: El patrón "controlador" establece una clara separación entre la interfaz de usuario (una interfaz grafica, por ejemplo) y el corazón o núcleo de procesamiento de la aplicación, donde se halla la lógica de negocios. La idea básica es crear una clase que implemente métodos dedicados a "escuchar" o "atender" los eventos del sistema. En un sistema basado en web, por ejemplo, la clase controlador se encuentra entre la interfaz grafica (en un cliente) y el código de la aplicación (en un servidor). El controlador se encarga de recibir peticiones de la interfaz grafica y delega el trabajo a alguna clase del dominio del problema. En entornos que no son basados en web, como en java por ejemplo, suele usarse un controlador cuando es necesario usar procedimientos remotos. El controlador se ubica entre el cliente remoto y el código de la aplicación java. Volviendo al ejemplo de las ventas, supongamos que el usuario pulsa el botón "Finalizar Venta" (en la interfaz grafica del cliente web). Este evento es manejado por un "controlador" que delega dicha tarea a otras clases. En este ejemplo, puntualmente, dentro del código de la clase controlador puede haber un método llamado "finalizar_venta()", que delega su trabajo a los siguientes métodos: registrar_pago(): de la clase Pagos, modificar_stock(): de la clase Deposito, registrar_venta():de la clase Venta, etcétera. La interfaz de usuario, no debería (según este patrón) direccionar directamente métodos de la lógica de negocios, logrando así un aumento de potencial para reutilizar y adaptar. El controlador, teóricamente, no debería tampoco realizar muchas tareas; solo debe encargarse de recibir una solicitud o evento, y en consecuencia "llamar" al método encargado de dicha tarea. Polimorfismo: el polimorfismo es la capacidad que tienen objetos de diferentes clases, a responder a un mismo mensaje. Esta capacidad requiere de un diseño en el cual no importe la clase de un objeto, sino el hecho de que sepa responder un determinado mensaje. El polimorfismo ayuda en gran medida a lograr un bajo acoplamiento. Continuando con el ejemplo anterior de la venta, supongamos que en la pantalla del operador aparece un detalle de cada producto que se está comprando (por ejemplo, precio unitario, descripción del producto, código ID, etc.). Imagine que existe un indicador llamado tamaño, pero existen productos líquidos, que deben mostrar por ejemplo "1 litro", mientras otros productos podrían mostrar "723 gramos" o "2 Kg", y en otras ocasiones, mostrar "15 unidades", y esto va a depender de la subclase a la que pertenezca cada artículo. Podríamos tener una clase padre llamada Artículo, con varias clases hijas, como ser Bebidas (litros), Limpieza (unidades), Carne (gramos o Kg), etc. Esto nos lleva a pensar que podemos implementar un método llamado "get_tamaño()" en las cada una clases hijas. Esto permite que cada objeto venta pueda enviar un mensaje get_tamaño() a cualquier ítem de su lista, con la seguridad de que (independientemente de la clase que sea) va a saber responder a dicho mensaje. Esto es el polimorfismo, métodos con implementaciones diferentes, respondiendo al mismo mensaje. Fabricación Pura: Cuando modelamos situaciones de la vida real en objetos, existe un salto en la representación. Esto es, la diferencia entre las entidades del mundo real y los objetos software que creamos para resolver algún problema concreto. Por ejemplo, cuando hablamos de una venta, con artículos, clientes, pagos, etc. nos referimos a entidades del mundo real, por lo que, seguramente, cuando pensemos en objetos software pensaremos en un objeto "Venta", un objeto "Cliente", un objeto "Articulo", etc. Si logramos representar todas las entidades reales, con objetos software que los representen (que lleven el mismo nombre), decimos que existe un salto pequeño en la representación... es decir, los objetos software son idénticos a las entidades que intentamos representar. En ciertas ocasiones esto no es tan deseable, y siguiendo con el ejemplo de la venta: supongamos que las ventas se almacenan en una base de datos. Según el patrón "experto en información" el objeto venta es el candidato ideal para almacenarse a sí mismo en la base de datos (BD), ya que dispone de toda la información necesaria (excepto las cuestiones propias de la conexión a la BD). Esto nos lleva a incluir código referente a la conexión dentro de la clase Venta, lo que resultaría en baja cohesión y un elevado acoplamiento. En este tipo de situaciones, es donde se hace necesaria la creación de una clase de objetos que no se corresponda con un objeto de la vida real, sino que sea una "Fabricación Pura". Esta clase, que es una invención, podría llamarse en este caso "ConexionBD" por ejemplo, e incluir todas las funciones necesarias para almacenar datos en la BD. Con esto se logra mayor potencial de reutilización, debido a que, seguramente, otras aplicaciones también necesitan este tipo de funciones. Indirección: la idea de este patrón es asignar las responsabilidades a un objeto intermediario entre otros dos. En el ejemplo de "Fabricación Pura", se creaba una clase intermedia entre la Venta y la Base de Datos, y esto es exactamente un ejemplo de Indirección. El objetivo es desacoplar dos objetos, añadiendo un intermediario. Podemos decir entonces, que muchas fabricaciones puras son creadas debido a la indirección, y la razón de esto es lograr bajo acoplamiento. Muchos patrones de diseño (no incluidos en este artículo) son especializaciones de Indirección. Variaciones Protegidas: el objetivo de este patrón es ayudarnos a lograr que las variaciones de una clase de objetos no afecten a otras, tal como su nombre lo indica, lograr que las variaciones que puedan surgir en una clase estén aisladas o "protegidas". Los principales mecanismos para lograr variaciones protegidas son la indirección y el polimorfismo. El ejemplo anterior, donde se creaba una "Fabricación Pura" (una clase de conexión a la BD), además de ser un ejemplo de indirección, lo es también de Variaciones Protegidas. Esto se debe a que, en el caso de que cambie la forma en que debamos conectarnos a la BD (por ejemplo, dejamos de usar SQL Server para usar Postgre), la venta "no se entera". Es decir, las variaciones que puedan surgir dentro de la clase ConexionDB no afectan a sus clases usuarias. Resumiendo, el objetivo de las variaciones protegidas es encontrar puntos donde existan variaciones previsibles, y crear una interfaz a su alrededor, de manera que las clases que colaboran no sufran los efectos de las posibles modificaciones.

0
1
Sistema de Captcha en PHP
Sistema de Captcha en PHP
Apuntes Y MonografiasporAnónimo1/2/2014

Un sistema de CAPTCHA sirve para determinar automáticamente si una petición o proceso fue iniciado por un ser humano o por una maquina. Nuestra amiga Wiki dice lo siguiente: <cite>Captcha o CAPTCHA son las siglas de Completely Automated Public Turing test to tell Computers and Humans Spart (Prueba de Turing pública y automática para diferenciar máquinas y humanos). Este test es controlado por una máquina, en lugar de por un humano como en la Prueba de Turing, por ello consiste en una prueba de Turing inversa.</cite> La prueba de Turing consiste en demostrar que una maquina tiene cierta inteligencia, pero en este caso es al revés (de ahi lo de Prueba de Turing Inversa)... es la maquina la que intenta determinar si el humano (si es que existe) tiene la inteligencia necesaria para leer una imagen y transcribir su contenido. Escribiendo nuestro propio captcha Antes que nada quiero aclarar, que este es un ejemplo bastante sobre la aplicación de un sistema de Captcha, pero para aquellos que no estamos acostumbrado a usarlos, es un buen comienzo para aprender como funciona y como manejarlos nosotros mismos, sin necesidad de módulos (o código) externos. Ademas, habrá que adaptarlo a cada necesidad, lo cual no representa ninguna dificultad para alguien que tiene nociones básicas de PHP. Lo que vamos a hacer, es un pequeño script en PHP para generar un captcha, y guardaremos su texto en una variable de sesión, para luego poder compararla con lo que ingresa el usuario. A este archivo lo vamos a llamar captcha.php Para mas información sobre los comandos de PHP relacionados a la creación de imágenes visitar http://www.php.net/manual/en/ref.image.php y necesitamos crear el formulario donde el usuario visualizara el captcha y lo transcribirá. Este es nuestro index.php: Espero les sirva. Saludos!

100
4
Patrones de Diseño - GoF: Gang of Four
Patrones de Diseño - GoF: Gang of Four
Apuntes Y MonografiasporAnónimo12/27/2014

Los patrones de diseño que se presentan en este articulo fueron escritos y presentados por cuatro autores ("la pandilla de los cuatro" ), y por eso se los conoce con este nombre. El ejemplo que se aborda en la descripción de estos patrones, es el mismo que se utilizó para explicar los patrones GRASP (en un post anterior: http://www.taringa.net/posts/apuntes-y-monografias/18339620/Patrones-de-Diseno-GRASP.html) , un ejemplo de una venta (en un supermercado, por ejemplo). La explicacion de cada patron está lejos de ser un analisis exhaustivo, pero se pretende dar a entender cual es el problema basico que trata de resolver cada uno de ellos. Adaptador: el patrón adaptador, es una especialización del patrón GRASP "polimorfismo". En el ejemplo de la venta, supongamos que las distintas formas de pago disponibles (débito, crédito, efectivo, etc) deben conectarse a diferentes sistemas (VISA para las tarjetas de crédito, y el sistema bancario para débito). Para ello, podríamos utilizar una interfaz "Pago_Interface" que implemente un método pagar(). Luego, podríamos crear una clase distinta para cada forma de pago (Pago_Visa, Pago_Master, Pago_débito, etc) y hacer que estas clases implementen esta interfaz. Con esto, logramos tener la seguridad que, independientemente del tipo de pago, nuestra clase "Venta" pueda enviar un mensaje "pagar()" con la seguridad que sera resuelto según la forma de pago elegida. Este patrón de diseño es, en realidad, la aplicación de los siguientes patrones: - Variaciones protegidas: debido a que las variaciones que tengan lugar en las clases de pago particulares, no afectan al sistema, ya que existen clases “intermedias” o “adaptadoras” que nos ofrecen una interfaz estable. - Polimorfismo: debido a que clases diferentes pueden responder a un mismo mensaje, aunque la forma de implementarlo sean sustancialmente distintas. - Indirección: al añadir un objeto adaptador, lo que se logra realmente es un nivel de indirección. - Bajo acoplamiento: por consecuencia de la aplicación de las tres anteriores. Factoría: Este patrón revela un nuevo problema a la hora de diseñar objetos. En el ejemplo anterior, introdujimos una clase “Adaptador”, por motivos que ya se explicaron. Pero, quien debe ser el responsable de crear dicho objeto durante la ejecución? La respuesta a esta pregunta la ofrece el patrón “factoría”, es decir, una clase cuya única función es crear objetos. “...Los objetos factoría ofrecen la ventaja de separar la responsabilidad de la creación en diferentes objetos cohesivos de apoyo y ocultan la lógica de la creación...” (UML y Patrones). Para el ejemplo anterior, un objeto factoría puede ser el responsable de responder a un método “obtener_adaptador_pago()”, devolviendo un objeto capaz de procesar el tipo de pago elegido en la venta. Singleton: el patrón "singleton" resuelve la siguiente pregunta: en el ejemplo anterior, quien crea la factoría de pagos? Es decir, cuando pensamos en el ejemplo anterior, suponemos una clase, que nos devuelve un adaptador de pagos, mediante un método getAdaptadorPago(). Para que esto suceda, tiene que existir una instancia de FactoriaDePagos para enviarle el mensaje. La factoría debería ser una y solo una (que sea la encargada de devolvernos múltiples instancias de adaptadores de pago). Esto se logra a través del patrón "Singleton", creando un método ESTÁTICO obtenerFactoria(). Este método, al ser estático, podría ser llamado desde cualquier otra clase que necesite un adaptador de pago de la siguiente manera: Factoria.getInstancia().getAdaptadorPago() "Notese lo conciso que puede ser un diseñador en una conversación o en la documentación cuando hay un conocimiento común de los patrones. Puedo decir "Para resolver el problema de tener diversas interfaces para los servicios externos, podemos utilizar Adaptadores generados desde una Factoría Singleton..." (UML y Patrones). Así, es mas fácil comunicar nuestras ideas con otros desarrolladores sin entrar a explicar detalles menores. Estrategia: Este patrón utiliza el polimorfismo y las interfaces para lograr variaciones protegidas. La idea básica es crear varias clases distintas que implementen una interfaz, con un método común y polimórfico, de tal manera, que pueda instanciarse alguna de las clases, pero independientemente de cual, pueda responder a dicho mensaje. Un ejemplo de este patrón, podría ser la forma en que se realizan los pagos. Podríamos crear varias clases Pago (PagoDebito, PagoCredito, PagoCheque, PagoEfectivo, etc), todas ellas con un método concretar() (obviamente para concretar el pago de la venta). interface iPago{ public function concretar(); } class PagoCredito implements iPago{ … } La estrategia, tiene que ver con poder elegir que clase instanciar bajo demanda. Es decir, en una venta, podría decidirse pagar con efectivo, para lo cual sería deseable instanciar un objeto de clase PagoEfectivo, y a la siguiente venta, instanciar otro de tipo PagoDebito. Esto nos ofrece varias ventajas, por ejemplo, la posibilidad de agregar una nueva forma de pago, sin afectar en lo mas mínimo al resto de las clases (bajo acoplamiento). Además, las funciones propias de cada tipo de pago permanecen agrupadas en clases especializadas (alta cohesión), permitiendo variar la implementación de un tipo especifico de pago, sin afectar las clases que utilizan dicho servicio (variaciones protegidas). Composite: Para explicar el patrón Composite, seguimos con el ejemplo anterior, donde una venta, a través de un método polimorfico en el objeto Pago, podía justamente "pagar" el monto total de la venta. La pregunta es: que pasaría si un cliente decidiera pagar la mitad del valor de la venta con efectivo, y la otra mitad con tarjeta de crédito? Para solucionar este problema aparece el patrón "composite", que consiste en una colección de "estrategias". En el caso del ejemplo anterior, un "composite" es un objeto que contiene una colección de "Pagos" (mas bien de métodos de pago), pero que implementa la misma interfaz que una sola estrategia o medio de pago. Esto quiere decir, que la venta, en realidad no es consciente si está tratando con un objeto combinado (un composite) o un objeto simple (una estrategia). Esto permite que, por ejemplo una sola venta pueda ser pagada con una forma de pago, a través del mensaje concretar() (enviado a un objeto "estrategia" ) o a través de varias formas de pago (a través del mensaje concretar() del objeto composite), sin que la venta tenga idea de como se implementa el método que responde dicho mensaje. En síntesis, un composite es una colección de objetos estrategia que implementa la misma interfaz que ellos, permitiendo enviar el mismo mensaje a un solo objeto, o a una colección de ellos. Fachada: está muy relacionado con el patrón "Adaptador". La idea básica de este patrón es ocultar un subsistema detrás de un objeto, de tal manera, que pueda ocultarse la complejidad del subsistema. "...Este patrón se utiliza cuando se requiere una interfaz común para un conjunto de implementaciones o interfaces dispares..." (UML y Patrones). Cuando necesitamos acoplar un subsistema (o varios) a nuestra aplicación, podría NO ser deseable tener muchos puntos de acoplamiento (justamente para mantener un bajo acoplamiento). Para ello, se desarrolla una clase que funcione de intermediaria o de "fachada" para el/los subsistema/s en cuestión. De esta manera, podemos conectar la fachada a un único punto (o varios) en nuestra aplicación. Pero entonces, cual es la diferencia? La gran diferencia entre usar una fachada y conectar directamente un subsistema es que usando una fachada logramos variaciones protegidas. Si tenemos la fachada, conectada a varios puntos de nuestra aplicación, y el subsistema necesita ser modificado, podríamos ajustar las modificaciones solo en la fachada para incorporar los cambios introducidos en el subsitema, dejando la interfaz que implementa intacta, de tal manera que no es necesario modificar nuestra aplicación. Existen otros (muchos) patrones de diseño interesantes y dignos de ser estudiados, pero los dejaremos para artículos siguientes. Por lo pronto, a aplicar lo aprendido! Podes leer la primera parte de este articulo en http://www.taringa.net/posts/apuntes-y-monografias/18339620/Patrones-de-Diseno-GRASP.html Espero que les haya sido de mucha ayuda. Podes leer este y otros articulos en http://federicoalemany.com.ar/

0
0
D
Desarmar Epson Stylus TX125
Hazlo Tu MismoporAnónimo8/25/2012

Dicen que rompiendo se aprende... ese es el motivo de este post. Hoy termine de hacer un trabajo para la facultad, entonces me dispuse a imprimirlo. Las copias salían con una franja blanca horizontal, asi que (como siempre) ejecute la aplicación que provee Epson para limpiar cabezales, alinearlos, etc, etc. NO PASABA NADA... TODO SEGUÍA IGUAL. Como soy estudiante de una carrera relacionada a la informática NO PODÍA PERMITIR!!!!! que me gane una impresora, así que me decidí a desarmarla... y como era de esperarse con fines CATASTRÓFICOS. Lo bueno de todo esto es que a ustedes les queda este vídeo de como desarmar dicha impresora. Espero que les sirva. link: http://www.youtube.com/watch?v=9gIE65Rf0dY&feature=g-upl Y obviamente no podía irme sin mostrar como quedo después de haberme humillado!!

5
0
C
Como funciona un disyuntor
InfoporAnónimo8/23/2011

Hace unos dias, estaba planchando un pantalon cuando de repente senti una descarga en la pierna. Resulta que el cable de la plancha estaba un tanto pelado, y me llego a tocar. El tema es que no se corto la luz. Luego de haber pasado 7 anios en una escuela tecnica, lo primero que se me paso por la cabeza (despues de levantarme del piso) fue "PORQUE NO SE CORTO LA LUZ??". La respuesta fue muy simple, no tengo disyuntor (o llave diferencial). Es por ello que recomiendo a todos que instalen una en sus casas y asi evitar accidentes. De paso, les dejo una explicacion de como funcionan estos aparatitos tan sencillos.Para evitar comentarios tales como "...esto es un copypaste..." quiero aclarar que esta informacion NO FUE ESCRITA POR MI. Mi intencion solo es compartirla con todos los usuarios de Taringa.Funcionamiento del interruptor diferencial (disyuntor) Los interruptores diferenciales protegen las vidas de las personas contra los contactos eléctricos accidentales. Interrumpen en forma automática e instantánea el pasaje de corriente eléctrica cuando se produce una corriente diferencial de fuga entre fase y tierra superior al valor máximo aceptado, que para el caso de los disyuntores más difundidos, es de 30 mA. Así mismo protege contra los riesgos de incendio detectando pequeñas fugas de corriente por defecto.Principio de funcionamientoSu principio de funcionamiento se basa en que la suma fasorial de las intensidades de línea de un circuito eléctrico es igual a cero ; y observemos que en un sistema monofásico la corriente que circula por el neutro tiene exactamente el mismo valor que la que circula por la fase, por los tanto, en situaciones normales su suma es igual a cero. Cuando ello no sucede, es decir cuando el neutro o la fase tuviera una pérdida o derivación de corriente a tierra, producirá un desequilibrio que hará actuar el mecanismo de desconexión del disyuntor. Veamos en detalle como funciona: El disyuntor consta de un núcleo toroidal en forma de anillo y sobre él, dos bobinas ubicadas en extremos opuestos cuya cantidad de vueltas y sección de alambre es exactamente igual. Una tercer bobina ubicada en forma equidistante de las anteriores es la encargada de accionar el mecanismo de desconexión.Observemos la figura de al lado: si conectamos en los terminales F y N una fase y el neutro respectivamente y colocamos una carga entre SN ySF, la corriente que esa carga demanda circulará por las bobinas B1 y B2 con valores exactamente iguales. Por lo tanto, según la primera ley de Kirchoff, se compensan los efectos magnéticos ejercidos por las corrientes que fluyen a través del núcleo del transformador diferencial, y por lo tanto no se induce ninguna tensión en la bobina B3.Pero en el momento en que entre los bornes SN y SF se produzca una derivación a tierra, circulará una intensidad mayor por una de las bobinas, o por B1 o por B2. Esto provocará que el campo magnético que genere una superará al que genere la otra; con lo que la sumatoria ya no es cero. En consecuencia la bobina B3 será cortada por un campo magnético resultante induciéndose una tensión en ella.Cuando el módulo de la suma fasorial de las corrientes de línea alcanza un valor superior a la corriente diferencial nominal del interruptor, dicha tensión secundaria en B3 provoca la apertura del circuito afectado por medio de un disparador prácticamente instantáneo que acciona la apertura de los contactos. De esta forma se elimina la posible aparición de una peligrosa tensión de contacto. Para esta acción habitualmente se utiliza un relé polarizado de elevada sensibilidad, que libera el mecanismo de desconexión del interruptor ante la circulación de la corriente secundaria diferencial abriendo los contactos Cn y Cf.La resistencia Rp permite sensibilizar en mayor o menor grado el sistema diferencial (no existente en los disyuntores modernos o al menos no al alcance del usuario), y el pulsador P provoca el desequilibrio secundario seccionando el sistema de conexión y permitiendo probar el funcionamiento del mismo (Al respecto lo fabricantes aconsejan probar el disyuntor una vez al mes mediante éste pulsador). Los interruptores diferenciales mas usuales son del tipo de desenganche directo, en los cuales el disparador está integrado con el interruptor de maniobra, de manera que la apertura del mismo está comandada directamente por la corriente secundaria citada. La corriente diferencial de defecto a tierra se presenta al aparecer una impedancia reducida entre la tierra y un punto destinado a estar a un potencial diferente durante el servicio normal. Esto puede suceder por el contacto accidental de un elemento bajo tensión por parte de una persona en contacto con la tierra, que puede originar su muerte; o bien por una falla en la aislación a tierra de un conductor de la carga, que genera una pérdida de energía y en los casos mas graves puede dar lugar a un incendio. La operación del diferencial sólo responde al valor de la corriente de defecto, independientemente de la producción o no de una tensión de contacto peligrosa. Los interruptores diferenciales siguen protegiendo circuitos aún cuando se interrumpe el neutro y cuando el conductor de neutro se pone a tierra a través de una persona. Resulta conveniente recalcar que el interruptor diferencial no provee protección al aparecer una impedancia reducida sólo entre puntos de la instalación destinados a estar a potenciales diferentes durante el servicio normal. Esto puede ocurrir por el contacto accidental de dos o mas conductores energizados por parte de una persona, o bien por una falla en la aislación entre los conductores de la instalación. Por lo tanto, el interruptor diferencial debe estar acompañado por otros elementos que provean protección ante sobrecargas y cortocircuitos (como fusibles ó interruptores termomagnéticos). Estos pueden hallarse antes o después de los diferenciales.La corriente nominal de un interruptor diferencial es aquella que puede conducir durante el servicio continuo a la temperatura de referencia. Su valor está especificado por el fabricante, y una serie de valores preferenciales puede ser 10 - 16 - 25 - 40 - 63 - 80 - 100 y 125 A. La capacidad de cortocircuito nominal de un interruptor diferencial es la capacidad de ruptura límite de cortocircuito asignada por el fabricante del mismo, y sus valores normales son 3 - 4,5 - 6 - 10 y 20 kA. Cabe aclarar que este valor está relacionado con la capacidad del interruptor termomagnético asociado, a los efectos de la coordinación entre ambos. La corriente de operación diferencial nominal (de apertura) de un interruptor diferencial es el valor de la suma fasorial de las corrientes que atraviesan el circuito principal del interruptor, que causa la apertura del mismo en las condiciones de referencia. Actualmente, los interruptores diferenciales generalmente se fabrican con una intensidad residual de operación nominal de 300 mA ó 30 mA. La protección de la vida humana se consigue con la utilización de interruptores diferenciales con una sensibilidad igual o menor a 30 mA. Los interruptores de 300 mA sólo se emplean para la protección contra incendios y en industrias.Para el funcionamiento correcto de la protección diferencial deben observarse las siguientes indicaciones de empleo:Todo el cableado necesario para alimentar el circuito debe pasar a través del interruptor diferencial.Los conductores de fase no deben tener unión con tierra debajo del interruptor, lo mismo que el conductor de neutro.Si se montan varios interruptores diferenciales en una distribución determinada, hay que prever una barra de neutro independiente para cada uno de ellos, para evitar disparos erróneos.La resistencia de puesta a tierra en los elementos protegidos no debe ser mayor que la razón entre la tensión máxima admisible de contacto y la corriente de operación residual nominal del diferencial (por ejemplo: 24 V / 0,03A = 800 ohm).Si un interruptor tetrapolar se utiliza con cargas tripolares (trifásica sin neutro) o bipolares (monofásica: fase + neutro), debe verificarse que el conductor de fase quede conectado a la fase a la cual está conectada el botón de prueba, que por lo general viene indicada en el diagrama de conexiones.Se recomienda que el conductor de protección no se instale en un caño junto con otros cables antes del diferencial, pues al producirse una avería en la aislación entre un conductor de fase y el de protección, se pueden transmitir tensiones de defecto al medio de servicio protegido, sin que dispare el interruptor diferencial.Si los fusibles debajo del diferencial están seleccionados del mismo calibre (o menores) que el máximo corte por fusión de acuerdo a las tablas, el fusible de respaldo colocado arriba del interruptor diferencial puede tener un calibre que se corresponda con la sección del conductor de alimentación. El calibre de este fusible no tiene ningún efecto en el funcionamiento del diferencial debido a que se supone que no se producirá ningún cortocircuito entre el fusible de respaldo y el fusible que está debajo del diferencial.

40
0
Problema en Chromium con Flash
Problema en Chromium con Flash
LinuxporAnónimo2/4/2012

Hace unos dias reinstale mi Debian Squeeze y, como acostumbro, instale tambien Chromium (el navegador de distribucion libre de Google). El problema estaba en que no podia ver videos en Facebook, pero si lo podia hacer en youtube. Resumiendo, los videos incrustados en algun comentario en facebook me tiraban el siguiente error: "Es necesario actualizar flash player", mientras que en youtube todo andaba de 10. Finalmente, y despues de leer un poco, encontre la solucion. Como todos los que hemos googleado este problema, me di cuenta que todos recomiendan que si no podemos ver ningun video en Chromium copiemos el famoso archivo libflashplayer.so en la carpeta /usr/lib/chromium-browser/plugins/ . Esta demas decir que eso no solucionaba mi problema. Sin mas preambulos, la solucion. (tambien es valida si no ven videos en youtube!!!) Abren una consola, y como root escriben lo siguiente 1) echo "deb http://www.debian-multimedia.org squeeze main non-free" >> /etc/apt/sources.list echo "deb-src http://www.debian-multimedia.org squeeze main non-free " >> /etc/apt/sources.list 2) aptitude install debian-multimedia-keyring 3) aptitude update 4) aptitude install flashplayer-mozilla 5) cp /usr/lib/flashplayer-mozilla/libflashplayer.so /usr/lib/chromium-browser/plugins/ Luego reinician chomium y listo! ya deberian poder ver videos en facebook. Problema extra (solucionado) Otro problema que generalmente sucede con Linux y chrome/chromium es que cuando lo abrimos, nos damos cuenta que no guardo nuestras preferencias. Para solucionar este problema abrimos una consola, y como root escribimos: sudo rm -fr ~/.config/google-chrome/ Listo! todo funciona de vuelta. Espero haberles ayudado. Saludos!

1
6
A
Archivo fstab (Estructura y utilidades)
LinuxporAnónimo1/9/2015

Esta vez, quiero hablarles acerca de un archivo frecuentemente útil en GNU/Linux, el archivo fstab. Este archivo se encuentra en la ruta /etc/fstab, y significa File System Table (Tabla de Sistemas de Archivos). El archivo fstab es una lista de discos y particiones disponibles, y la forma en que éstas particiones serán montadas. Los comandos mount y umount (para montar y desmontar sistemas de archivos) utilizan este archivo para determinar las opciones de montaje. Por ejemplo, el comando mount -a, recarga fstab, sin la necesidad de reiniciar el sistema. Editar este archivo es bastante sencillo, nos alcanza con abrirlo con algún editor de textos (y los permisos necesarios, por supuesto). Del dicho al hecho: lo primero (y lo mejor) que podemos hacer, antes de modificar el fichero fstab, es obtener una lista de las particiones que tenemos disponibles para montar. Esto lo podemos conseguir mediante el comando blkid (Block Identifier) como vemos en la imagen: En la imagen podemos ver las particiones disponibles. Todas estas particiones, podrian por ejemplo, ser montadas al inicio del sistema, evitandonos tener que montarlas cada vez que querramos usarlas. Para ello, vamos a modificar algunas lineas del archivo fstab, pero antes vamos a ver su estructura basica (octava linea de la siguiente imagen): El primer campo es "file system", es decir, debemos declarar cual es el sistema de archivos que deseamos montar (alguno de los que observamos) en la primer imagen con el comando blkid. Podemos usar su ruta (como /dev/sda1) o como yo lo hice en el ejemplo, el UUID (sin las comillas que nos muestra el comando blkid). El segundo campo es el punto donde se va a montar el sistema de archivos. En los sistemas linux, generalmente existe un directorio /mnt, cuyo objetivo es ser el sitio donde montar sistemas de archivos, pero esto es solo una convencion. Nosotros podemos montar el sistema de archivos en cualquier punto que nos parezca conveniente (o cómodo). En el ejemplo (marcado con un recuadro rojo), yo lo hice en el directorio /media/datos (debemos crear previamente el directorio, sino nos dará error al intentar montarlo). El tercer campo, es el tipo del sistema de archivos que estamos intentando montar. En mi caso, es una particion creada con Windows, con formato NTFS, por lo que agrego el valor "ntfs" en este campo (pero podría ser vfat, auto, ext3, ext2, smbfs, etc). El cuarto campo, son las "opciones" de montado, separadas por coma. Pueden consultar las opciones de montado disponibles en Wikipedia (http://es.wikipedia.org/wiki/Mount#Opciones_del_comando_mount). El quinto campo, es utilizado para hacer respaldos de los sistemas de archivos. Existen aplicaciones para respaldo, y cuando son utilizadas, éstas leen el fichero fstab y determinan cuales de ellas necesitan ser respaldadas y cuales no. Es por ello, que este campo admite dos valores (0 y 1). Con este campo en cero, el sistema de archivos no será tomado en cuenta a la hora de respaldar sistemas de archivos. Con este valor en uno, sucede obviamente lo contrario. El sexto campo, determina el orden en que los sistemas de ficheros deben ser comprobados (por el comando fsck). Las posibles entradas son 0 , 1 y 2. El sistema de archivos raíz debe tener la máxima prioridad (1), todos los demás sistemas de archivos que desea haber comprobado deben obtener un 2. Los sistemas de archivos con un valor igual a cero, no se comprueban por la utilidad fsck. Ahora que sabemos obtener las particiones disponibles (con blkid) y como modificar el fichero fstab, solo nos queda ajustarlo a nuestras necesidades, como lo hice en la segunda imagen, montando automáticamente la partición al inicio del sistema. Espero que les haya servido! También podes visitar mi sitio: haciendo click aquí

26
0
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.