M

markos_thedarkcrow

Usuario (Argentina)

Primer post: 20 oct 2009Último post: 13 ene 2010
9
Posts
91
Puntos totales
75
Comentarios
T
Tenés algún familiar sordo? Entrá! Muy buena info!!
InfoporAnónimo11/10/2009

Este es un texto extraído del blog de mi madre. Habla sobre los siguientes temas: >Oralización >Audífonos >Lectura labial >Lenguaje de señas >Implante coclear Si tienen un familiar sordo, conocido, o simplemente les interesa colaborar esto les va a resultar muy útil. Les recomiendo que lo visiten. Selva dijo: En esta entrada quiero aclarar muchos interrogantes que quedaron de la anterior “Vivir en dos mundos”. Creo que es importante para aquellos que están interesados en las necesidades del sordo y también para aquellos que intercambian ideas sobre oralización vs lenguaje de señas vs implante coclear, haciendo de esto una competencia que a veces viene acompañada de prejuicios e intereses personales y no da las soluciones que el sordo necesita. Lo ideal es ponernos de acuerdo en que todas son buenas y si están juntas mejor; yo como afectada directa estoy convencida de eso. Para aquellos que no me conocen, soy sorda post lingual, o sea fui oyente hasta los 7 años, sin saber decir cuanto porque no me hicieron una audiometría en ese momento, aprendí lectura labial sin saberlo como medio de sobrellevar y esconder mi sordera, comencé a usar un audífono a los 23 años pese a que los médicos me lo habían indicado a los 15 años en ocasión de mi primera consulta médica por el tema, pero por problemas, que serán motivo de otro post, no tuve y me implanté a los 46 cuando tenía perdido, desde hacía varios años, el 100% de mi audición. Durante toda mi vida de sorda, fueron varias las oportunidades en que médicos y fonoaudiólogas se sorprendieron de “mi audición”. Evidentemente los mecanismos de compensación en mi funcionaron bastante bien. Cuento todo esto porque es importante para quien lo lea, sepa desde el lugar en el que estoy hablando. El sordo oralizado “solamente” es aquel que pretende ser un oyente disimulado en un mundo oyente donde se evidencia rápidamente sin lograr sus propósitos. El sordo que domina ambas lenguas (oral y señas) lo vive generalmente sin complejos y logra mejores resultados. No entiendo las fricciones que a veces terminan en odios y discriminaciones que nos rodean a nosotros los sordos. Por un lado, los que no quieren y rechazan la lengua de señas y opinan sobre ella sin tener conocimiento (la mayoría no son sordos, o son profesionales que viven de la oralización -afortunadamente no todos-, o son familiares del sordo que no aceptan esta discapacidad -afortunadamente no todos-, o son simples opinantes), tampoco entiendo que por otro lado se opine sobre el implante coclear (a favor o en contra) sin saber exactamente cuándo, cómo, porqué y si debe realizarse, opinando por supuesto sin ser sordo o estar implantado o haberse informado adecuadamente. Lo mismo vale para aquellos que se oponen terminantemente a la oralización del sordo. El otro día vi en un foro muchas opiniones de gente a la que le parecía una monstruosidad introducir un procesador en el cuerpo de un bebe o un niño y sugerían que lo correcto sería esperar a que esa persona fuese grande y decidiera si quiere o no hacerlo. ¡Qué bien!, lo aplaudo, no hay nada más valioso que la libertad de tomar nuestras propias decisiones. ¡Pero ohh!, usted no conoce nada de los inconvenientes que origina una sordera y cuando se es grande ya se pone en duda si el implante conviene o no a una persona prelingual (tengo tres amigos en estas condiciones que fueron implantados entre los 15 y los 18 años y sus experiencias han sido negativas puesto que ninguno de ellos usa actualmente su implante). Si se nació sordo y no se tiene conocimiento del lenguaje propio del mundo oyente, no sólo tiene que lidiar con el control de adaptación a ese nuevo oído (porque eso es un implante), en esa misma bolsa entran aprender a hablar, y entender cada palabra que nunca escuchó. Es algo así como nacer de nuevo cuando ya uno desarrolló mecanismos de compensación para defenderse en un mundo que (bastante) excluye a los sordos. Y con tantas cosas juntas, es muy difícil, -aunque no imposible-, lograr buenos resultados. Seguiré este tema en otro post. Si yo, con la oralización y conocimiento del mundo oyente tengo serias dificultades para entender – discriminar, sonidos después de un año y medio de implantada, que queda para un sordo que no tiene nada de memoria auditiva. Como sorda que fui, soy y seré (aún con un implante) me gustaría tomar parte de la opinión pública de cómo nos afectan estas decisiones. Personalmente creo que un sordo tiene que contar con todas las armas posibles: oralización, audífonos, lenguaje de señas, lectura labial e implante coclear si es necesario (en el caso de los sordos profundos) y toda herramienta que pueda servirle para defenderse lo mejor posible desde la más temprana edad. Si después, mayor, toma una decisión de optar por alguna solamente, nada habrá perdido, pero si la opción le llegó tarde, que puede decidir, nada. La lectura labial es sólo una parte de la solución que se nos cae cuando interactuamos con más de 3 personas, y se hace dificultosa por mala pronunciación, también por mala modulación labial, poca iluminación, o porque no “pescamos a tiempo” el tema del que se está hablando y sólo es válida mientras se está frente a frente, cara a cara y a poca distancia. Ahí es donde el bilingüismo (lectura labial + señas) o mejor dicho el “trilingüismo” (lectura labial + señas + lectura corporal y gestual) se complementa para que la comunicación continúe funcionando sin dificultades y hace que el esfuerzo exclusivamente visual descanse un poco. Yo por ejemplo leo muy bien los labios, pero después de incorporar las señas le di un alivio a mis ojos que ya están cansados de ser explotados en tantos años de esfuerzo haciendo de ojos y oídos a la vez. Lo que expreso no pretende ser una sugerencia, sino una opinión más, con la diferencia de provenir de una afectada directa y deseo informar a quienes estén interesados (partiendo de la base de que opino con conocimiento de causa y sin tomar partido por unos u otros), que lo hago por lo que creo nos viene bien a los sordos. Si quieres implantar a tu hijo pensando que ya no será un discapacitado, si crees que es la solución total, estás errado; no va a ser así. Aun con implante va a seguir siendo sordo. Su silencio profundo seguirá estando cuando duerme, cuando se bañe, cuando esté en la pileta, y en otras situaciones donde deba guardar su implante para protegerlo. Ni pensar si éste se rompe (yo vivo con mucho miedo a que esto me ocurra). Con esto no digo que el implante no sea conveniente, yo disfruto mucho de un mundo de sonidos maravillosos que solo alguien que perdió los oídos valora. Lo que quiero decir es que las dificultades continuaran en menor medida pero siempre estarán ahí. Conviene aclarar que los resultados dependen de cada caso individual y del lugar de donde se parte. No es lo mismo un implante en un sordo pre lingual que en uno post lingual; en un sordo pre lingual niño que en uno adolescente o adulto, en un sordo post lingual con pocos años de perdida total o en otro que casi ya perdió toda su memoria auditiva. Todo esto sin considerar factores ajenos al sordo como son los técnicos acerca de cuantos electrodos pudieron ingresar a la cóclea, que marca de implante se le proveyó, que dificultades accesorias tiene como osificación coclear y un largo etcétera. Personalmente creo que lo mejor que nos podría pasar es aceptar al sordo como es, aportándole todo aquello que facilite su difícil camino. Creo que también es conveniente, antes del implante saber las consecuencias que esa operación puede acarrear en algunos casos, no en todos por suerte. Si me preguntan hoy, luego de mi implante, si me implantaría el otro oído digo no, rotundamente no. Perdí la sensibilidad de parte del pabellón de la oreja implantada, también perdí sensibilidad y gusto en la mitad de mi lengua, tengo sensaciones extrañas y dolor en la garganta y oído cada vez que me cepillo dientes y lengua, porque aparentemente quedaron algunos cables haciendo chispazos que interfieren ahí. Si implanto el otro oído y me ocurre lo mismo perdería el sentido del gusto y comer ya no sería placentero. Ni hablar de los otros y distintos inconvenientes que han experimentado otras personas que también fueron implantados. Yo soy grande y puedo expresar mis padeceres aunque de poco sirve porque eso no se recupera totalmente aunque algo se han atenuado esos inconveniente o yo me adapté a ellos (no estoy segura). Los beneficios que me dieron cada una de las herramientas o accesorios que usé en esto de poder llevar mejor mi impedimento han sido muy buenos, y quiero comentar cada uno en particular. Lectura labial: Creo que esta frase, muy repetida por mi cuando era pequeña lo dice todo: -¡!!! Mamaaaá prendan la luz que no escucho ¡¡¡. Cuán mágico era leer los labios y que increíbles eran los resultados, pero jaja, necesitaba la luz prendida. Era una solución pero no resolvía todo mi problema….. Audífonos: Cuando me lo colocaron y salí a la calle corría como loca porque me parecía que todos los autos me iban a atropellar. La adaptación y la posterior dependencia de ellos hicieron que en más de una ocasión llorara cuando no los tenía. Pero mi sordera siguió creciendo ….. Oralización: como debí haber usado audífonos mucho antes, a los 23 hablaba como una niña de 5 años (memoria auditiva que la llaman). Audífono + ayuda profesional hicieron que creciera oralmente hasta los 23 años que tenía. Lástima, jaja, porque me gustaba que me miraran aunque halla sido porque hablaba extraño …. Lenguaje de señas: me sacó de la soledad y depresión el sólo hecho de encontrarme con otras personas iguales a mi (esto también lo voy a desarrollar en otra entrada). Primero lo rechacé, luego me avergoncé de usarlo en público y finalmente me relajé, acepté realmente mi situación y mis ojos descansaron bastante y comencé a disfrutar de largas charlas …. Implante coclear: ya no había audífono que me pudiese ayudar. Vamos por más, y pese a que comencé con muchas dificultades, hoy disfruto de los sonidos, algo de mi vieja música, una que otra palabra del tele, los si y no por el celular, pero tengo todavía muchas expectativas …. Soy Selva, soy sorda, soy lectura labial, soy oralismo, soy señas e implante; o sea, llené mi cartón por ahora jaja. Pero por sobre todo, y seguramente gracias a todo y gracias a Dios, soy muy feliz. Besos Selvita Fuente: http://selvareyes.blogspot.com/ ¿Si ya entraste, y lo leíste, porqué no dejás tu comentario? Otros posts interesantes: Un homenaje a Tamara Castro - Lenguaje de senias Vivir en dos mundos, relato de una sorda Cantar con las manos y el corazón

0
0
Tips para mejorar tu Web - Parte II
Tips para mejorar tu Web - Parte II
Apuntes Y MonografiasporAnónimo1/13/2010

Hola gente! Bueno, continúo con el para dejarle un par de pequeños tips más para optimizar su sitio web. Ya vimos cómo optimizar el tema de estilos, datos y un par de consejos más. Ahora sigo: 7-) Validar nuestro sitio Algo que no muchos diseñadores hacen es validar su sitio. ¿A qué nos referimos con validar el sitio? Bueno, básicamente es asegurarnos que la codificación ha sido correcta, para que cada navegador lo interprete de la manera correcta. Hoy acá les dejo dos formas de hacerlo, pero pueden encontrar algunas más. La primera, y creo que muy importante, es validarlo a través de la W3C, nos ofrece su validador . Lo que debemos hacer es entrar en él e ingresar la url de nuestro sitio, para así recibir un informe en detalle con los errores y problemas de nuestra página. Otra forma de validarlo es a través de los navegadores. En Internet Explorer 8 (el que yo uso) se puede hacer a través de la herramienta para desarrolladores, acá les dejo alguna info oficial. Se darán cuenta que es muy fácil de usar, pueden validar HTML, CSS, Links y además, depurar JavaScript. Para Mozilla Firefox vienen ciertos addons que nos pueden ayudar, acá les dejo el Web Developer y el Firebug . 8-) Alt y Title para imágenes Este es un tip que trae bonus. Más adelante les contaré. Es algo que ciertamente no se tiene muy en cuenta, y que no es fundamental para la visualización, pero sí ayuda a la validación del código. De nuevo, recalco otra ventaja con la que contamos los que trabajamos con tecnologías Microsoft, y es que Visual Studio nos lanza warnings si no le agregamos la propiedad alt a las etiquetas img. Además, un dato para mí sumamente importante es la integración con personas con capacidades diferentes ( blog recomendado ). Los sistemas de navegación web para no-videntes utilizan estos atributos para dar una explicación del contenido del sitio. Así que a no olvidar!. Otra propiedad que algunos navegadores suelen interpretar también es la title, por lo que nunca viene mal agregarla dijo:NO!: <img src=”miimagen.png”> SI!: <img src=”imagen.png” alt=”Mi imagen” title="Mi imagen"> Bueno, ahora le cuento el bonus de este tip: Agregar esta info a las imágenes de nuestro sitio favorece al posicionamiento, ya que los motores de búsqueda leen esto, y nos da una ayuda extra 10-) Primer acto: CSS, Segundo Acto: Contenido, Tercer acto: JavaScript Más allá del nombre que le he dado a este tip , es algo bastante serio. Hace muy poco he descubierto esto. Algo ya sabido por mí, es lo de agregar el link a la hoja de estilo al comienzo del documento. La explicación: Esto nos asegura que los estilos se carguen junto con el contenido, y si el usuario detiene la carga o se le cae la conexión, pueda ver el documento estilizado. Imaginense que vea el html solo!! No queremos eso, ¿no? dijo:<head> <title>Mi sitio optimizado </title> <link rel=”stylesheet” type=”text/css” href=”misestilos.css” media=”screen”> </head> Bueno, ahora paso a explicar el dato nuevo para mí. Poner el JavaScript al final del documento. Es recomendable, muchas veces, debido al tamaño (o peso) de las librerías JS, lo contrario a lo mencionado acerca del css. ¿Why? Porque es preferible presentarle el documento completo al usuario, para que ya comience a navegar, sin que tenga que esperar a que se cargue tooodo el JavaScript. Una vez que se ha mostrado el contenido, se puede cargar efectos, y demás aportes JS. Ojo! Que hay casos, en los que el JS es esencial en la página, por lo que este tip no se aplicaría. Es un tanto relativo. dijo:... <script type=”text/javascript” src=”libreria.js”> </body> </html> 11-) Intercambio de links Bueno, ya cerrando este tema de la optimización de un sitio web. Les dejo un úlitmo tip, que sin duda es el mayor consejo respecto a posicionamiento. Lo óptimo para un buen posicionamiento es el intercambio de link. No podemos esperar figurar en los primeros resultados de los buscadores sin que la web sepa de nosotros! Tampoco es de esperar que los sitios añadan referencias a nosotros sin nada a cambio, por lo que aquí entra en juego la cooperación. Mientras más links mencionen nuestro contenido y/o tengan enlaces al nuestro, más posibilidades de hacernos conocidos por el mundo tenemos! Además es bueno, siempre, colocar la fuente de la cual obtenemos nuestra info, ya que la red de links siempre enriquece el tráfico hacia nuestro sitio. Espero sinceramente que estos humildes tips les hayan servido de algo. Éxitos con sus emprendimientos web! Saludos http://codigodavincipuntonet.blogspot.com/ Otros post que te pueden interesar:

0
0
T
Tutorial de Introducción a Silverlight
Apuntes Y MonografiasporAnónimo1/6/2010

Hoy les dejo un pequeño tutorial de cómo empezar con Silverlight. Es todo práctico, si quieren ver teoría les sugiero que busquen fuentes oficiales de Microsoft. Es algo muy sencillo, pero que les puede servir para aquello que quieren empezar con Silverlight. Let's work! Primero y antes que nada crearemos nuestro proyecto. Yo por comodidad elijo el lenguaje C#. Seleccionamos Aplicación de SIlverlight. De nombre le pondremos "MiPrimerSilverlight". Optamos por la versión 3 de Silverlight y dejamos marcada la opción para generar automáticamente una página para hostear nuestra animación Silverlight. Bueno, una vez creado nuestro proyecto podrán ver el código que ha generado VS en nuestra Page.xaml. Debe ser similar al siguiente: dijo:<UserControl x:Class="MiPrimerSilverlight_cs.Page" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns: d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d: DesignHeight="300" d: DesignWidth="400"> <Grid x:Name="LayoutRoot" Background="White"> </Grid> </UserControl> Si observan ese código verán dos elementos. Un UserControl y una grilla Grid. Bien, para este ejemplo reemplacemos la gilla por el siguiente elemento: dijo:<Canvas x:Name="LayoutRoot" Background="White> </Canvas> Este elemento, no es más que un lienzo que va a contener a nuestra animación. Ahora agreguaremos tres elementos a nuestra animación. Primero dos botones: dijo:<Button x:Name="btnComenzar" Canvas.Top="10" Canvas.Left="250" Content="Comenzar" Click="btnComenzar_Click" /> <Button x:Name="btnParar" Canvas.Top="40" Canvas.Left="250" Content="Detener" Click="btnParar_Click" /> Observen las propiedades que hemos seteado para nuestros botones. Canvas.Top determina la distancia del botón respecto del Top de nuestro lienzo. Canvas.Left determina la distancia del botón respecto de la izquierda de nuestro lienzo. En sí, estas son propiedades del método, que se aplican de manera indirecta a nuestros botones. No entraré mucho en detalle, para más info pueden consultar documentación de Silverlight. Ahora incluímos nuestro tercer elemento dentro del lienzo. Un círculo. dijo:<Ellipse x:Name="pelota" Fill="Red" Canvas.Top="10" Canvas.Left="100" Height="50" Width="50" /> Hasta acá nuestra animación luciría así: Ok, pero esto no se mueve no? Vamos a comenzar con la animación propiamente dicha. Primeramente, para ello, crearemos nuestra sección de recursos de la animación si? Entonces agregamos las etiquetas: dijo:<UserControl.Resources> </UserControl.Resources> Y qué pondremos en ella? Bueno, aquí deberíamos detenernos un ratito a pensar qué es una animación. Cuando pensamos en animación, pensamos en algo moviéndose, o cambiando de color, ect. Es decir, cambiar las propiedades de un objeto, dentro de un período de tiempo. Bien ahora pensemos en cómo funciona una animación. Básicamente, en una línea de tiempo no? Y esa línea de tiempo la podemos dividir en pequeñas celdas o fotogramas, en cada uno de los cuales ocurren movimientos y/o acciones. Teniendo en mente que estos fotogramas, uno al lado de otro forman básicamente la animación, dentro de una o más líneas de tiempo, podemos completar nuestros recursos. Primeramente agregamos nuestra "línea de tiempo" (nuevamente les recomiendo que para mayores detalles se remitan a la documentación de Silverlight, estos son simples ejemplos) dijo:<Storyboard x:Key="bounce"> </Storyboard> Una vez agregado nuestro Stodyboard, agregaremos en él nuestra primer animación o fotograma como hablamos anteriormente, en este caso por ser una de las más comunes optamos por una DoubleAnimation dijo:<DoubleAnimation Storyboard.TargetName="pelota" Storyboard.TargetProperty="(Canvas.Top)" To="250" From="10" Duration="0:0:2" /> Ok, otra vez observemos las propiedades que hemos seteado. Storyboard.TargetName determina el objeto que se modificará Storyboard.TargetProperty determina la pripiedad que cambiará de dicho objeto From indica el valor que obtendrá esta propiedad al comenzar el fotograma To indica el valor que obtendrá esta propiedad al terminar el fotograma Duration determina la duración en HH:MM:SS Miremos también que a Storyboard.TargetProperty le hemos puesto un valor entre paréntesis. Esto es por, como mencioné anteriormente, es una propiedad "indirecta". Bueno, casi hemos terminado, quedaría ahora asignar acciones a los eventos de los botones para poder ver nuestra animación. Hasta ahora nuestro código luciría así: dijo: <UserControl x:Class="MiPrimerSilverlight_cs.Page" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d: DesignHeight="300" d: DesignWidth="400"> <UserControl.Resources> <DoubleAnimation Storyboard.TargetName="pelota" Storyboard.TargetProperty="(Canvas.Top)" To="250" From="10" Duration="0:0:2" /> </Storyboard> </UserControl.Resources> <Canvas x:Name="LayoutRoot" Background="White"> <Button x:Name="btnComenzar" Canvas.Top="10" Canvas.Left="250" Content="Comenzar" Click="btnComenzar_Click" /> <Button x:Name="btnParar" Canvas.Top="40" Canvas.Left="250" Content="Detener" Click="btnParar_Click" /> <Ellipse x:Name="pelota" Fill="Red" Canvas.Top="10" Canvas.Left="100" Height="50" Width="50" /> </Canvas> </UserControl> Ahora procederemos a modificar el CodeBehind de nuestra animación de Silverlight. Primero, en el evento del botón btnComenzar agregamos un objeto de tipo Storyboard y lo instanciamos obteniendo el que creamos anteiormente. Teniendo este objeto ya, podemos llamar a su método Begin para comenzar la animación dijo:private void btnComenzar_Click(object sender, RoutedEventArgs e) { Storyboard sb = this.Resources["bounce"] as Storyboard; sb.Begin(); } Haciendo algo casi igual, escribimos el evento del botón btnParar para detener nuestra animación: dijo:private void btnParar_Click(object sender, RoutedEventArgs e) { Storyboard sb = this.Resources["bounce"] as Storyboard; sb.Pause(); } Bueno, con esto ya hemos finalizado, nuestro CodeBehind debe lucir así: dijo: using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; namespace MiPrimerSilverlight_cs { public partial class Page : UserControl { bool isstarted = false; public Page() { InitializeComponent(); } private void btnComenzar_Click(object sender, RoutedEventArgs e) { Storyboard sb = this.Resources["bounce"] as Storyboard; sb.Begin(); } private void btnParar_Click(object sender, RoutedEventArgs e) { Storyboard sb = this.Resources["bounce"] as Storyboard; sb.Pause(); } } } Eso es todo mis amigos, un ejemplo en demasía simple, pero lindo para comenzar. Pronto traeré una pequeña modificación de este código para obtener otros resultados. Queda en ustedes también continuar experimentando en base a esto. Saludos. Espero sus coments! Fuente: http://codigodavincipuntonet.blogspot.com/ Otros post que te pueden interesar: Scripts útiles - Sql Server Buscar FKs - Relaciones de Tablas - Sql Server ItextSharp - Escribiendo PDF en .Net Pasar datos por método POST a terceros - Asp.Net Carrito de compras - Asp.Net

0
0
Tips para mejorar tu Web - Parte I
Tips para mejorar tu Web - Parte I
Apuntes Y MonografiasporAnónimo1/13/2010

Hola gente. Hoy, a diferencia de los otros post, les voy a dejar un contenido que no es exclusivo de .Net pero que, a mi parecer, es bastante útil para todos los diseñadores web. Les voy a dar unos tips para optimizar nuestros sitios on-line. Espero que les venga bien. No se olviden de dejar sus comentarios por favor. 1-) Utilizar hojas de estilo, nunca estilizar etiquetas. Es algo bastante básico en el diseño actual de sitios web, pero es un error que todavía muchas personas tienen al momento de hacer sus páginas. Jamás se debe estilizar etiquetas! Siempre (siempre!) usar ojas de estilo. Es fundamental tener separado la estructura del sitio de su diseño o estilo. Imaginemos que tenemos un sitio con estilización aplicada a las etiquetas, ¿qué hacemos cuando queramos modificar la interfaz? Vamos a tener que modificar cada una de nuestras páginas en el sitio, algo sin duda molesto y tedioso. En cambio al tener el estilo en nuestra hoja css, sólo basta con modificar el estilo que deseamos cambiar y listo. No es mucho más fácil? dijo:NO!: <p style:=”color: black; font-family:Arial;”>Texto de párrafo con estilo en la etiqueta</p> SI: CSS: .estilo1{ color:black; font-family:Arial; } 2-) Estilos para cada navegador Continuando con el tip anterior, como para terminar de optimizar el tema de los estilos, cabe destacar que una buena práctica (tal vez un poco molesta para algunos, pero que vale la pena) es la de hacer hojas de estilo diferentes para cada navegador. Muchos nos hemos pasado horas renegando con estilos que se ven bien en Internet Explorer pero no en Mozilla Firefox, y una vez que logramos que se vea bien en MFirefox, volvemos al IE y ya perdimos nuestro estilo Una solución práctica a esto es la que acá propongo. Armar dos hojas de estilo e incluir el siguiente código: dijo:<!– [if lte IE 7]> <link rel=”stylesheet” media=”screen” type=”text/css” href=”estiloparaIE7.css”> <!– –> Observemos el código que he dejado. La palabra lte significa Less Than or Equal (igual o menor a). Si en lugar de esto queremos aplicarlo sólo a versiones anterior, se la debe reemplazar por lt. 3-) Declarar el DocType. Algo no muy aplicado por los diseñadores es la declaración del tipo de documento, y esto es clave para los navegadores, así pueden interpretar correctamente el contenido de nuestras páginas. Aunque este tip es un poco relativo ya que la mayoría de los programas de diseño web actuales lo escriben automáticamente. Es una de las ventajas con las que contamos los programadores de .Net, ya que Visual Studio lo trae por defecto es las páginas aspx. Igualmente para aquellos que no utilizan estas herramientas, este tip viene bien. A continuación los ejemplos más comunes: dijo: <!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01//EN” “http://www.w3c.org/TR/html4/strict.dtd”> <!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3c.org/TR/html4/loose.dtd”> <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3c.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”> <!DOCTYPE html PUBLIC”-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3c.org/TR/xhtml1/DTD/xhtml1-strict.dtd”> 4-) Utilizar preferentemente PNGs Esto tip es algo que he empezado a aplicar hace poco. Se habrán dado cuenta que cuando tenemos una conexión lenta, las imágenes se cargan desde arriba hacia abajo, quedando a veces a medias y no podemos comprender la imagen en cuestión. Esto se debe a las imágenes JPGs que son las más utilizadas, pero no por ellos las mejores. El consejo acá es utilizar imágenes con extensión PNG. Este tipo de imágenes tiene un determinado entrelazado que hace que se carguen en capas, por lo que si el cliente tiene un ancho de banda reducido, la irá visualizando de a poco "del fondo hacia el frente" (por así decirlo), dando desde el principio una idea del contenido, aunque se vea pixelada. 5-) Tablas para datos, Divs para diseño Recuerdo que uno de los primeros consejos que me dieron el primer día en mi empresa fue éste. En otros tiempos era muy común, casi una regla, organizar el diseño en tablas y frames (Si!! Frames!! Jaja ). Hoy en día, con la evolución del HTML esto es totalmente obsoleto. La idea de este tip es utilizar bloques o divs para la organización del sitio, aplicándole estilo de posicionamiento a estos divs, y dejar las tablas para mostrar información tabular. Imaginen que tenemos nuestro diseño basado en tablas. A la hora de cambiar el diseño, tendremos que reescribir nuestra página web (y a quién no le han sacado canas las tablas!), en cambio utilizando divs esto se solucionaría ya sea modificando el estilo que los afecta, o bien cambiarles la clase o id. dijo:NO!: <table> <tr> <td>Superior izquierdo</td> <td>Superior derecho</td> </tr> <tr> <td>Inferior izquierdo</td> <td>Inferior derecho</td> </tr> </table> SI: <div class="superiorizquierdo"></div> <div class="superiorderecho"></div> <div class="inferiorizquierdo"></div> <div class="inferiorderecho"></div> 6-) Cerrar TODAS las etiquetas (bonus) Al escribir el tip anterior, me acordé automáticamente de este, por lo que lo dejo de bonus . Tal vez parezca algo tonto, pero muchas veces olvidamos cerrar alguna etiqueta html. Esta es otra de las ventajas con las que contamos los desarrolladores .Net, ya que es algo que hace automáticamente Visual Studio (y también otros programas). Pero incluso utilizándolos, a veces, al modificar algo que ya escribimos no nos damos cuenta que hemos dejado una etiqueta sin cerrar. Y esto, aunque a veces no lo notemos, es crucial para la validación de nuestro documento en el navegador. dijo:NO!: <p>Párrafo 1 <p>Párrafo 2 <ul> <li>Primer elemento <li>Segundo elemento <li>Tercer elemento <li>Cuarto elemento </ul> SI: <p>Párrafo 1</p> <p>Párrafo 2</p> <ul> <li>Primer elemento</li> <li>Segundo elemento</li> <li>Tercer elemento</li> <li>Cuarto elemento</li> </ul> Bueno amigos míos, espero que esto les haya servido. Y les pido me dejen sus dudas o comentarios. Fuente: http://codigodavincipuntonet.blogspot.com Otros post que te pueden interesar: Tutorial de Introducción a Silverlight Scripts útiles - Sql Server Buscar FKs - Relaciones de Tablas - Sql Server ItextSharp - Escribiendo PDF en .Net Pasar datos por método POST a terceros - Asp.Net Carrito de compras - Asp.Net

1
0
S
Scripts útiles - Sql Server
Apuntes Y MonografiasporAnónimo11/20/2009

Buenas! Continuando con el post anterior, hoy les dejo algunos scripts muy sencillos para Sql Server, pero que siempre vienen bien. Son muy útiles. A mi me han servido. Buscar un campo en una todas las tablas: SELECT TABLE_NAME,* FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE '%NombreDeCampo%' Buscar un Stored Procedure por algun fragmento del nombre: SELECT ROUTINE_NAME, ROUTINE_DEFINITION, * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_DEFINITION LIKE '%palabraDelStored%' AND ROUTINE_TYPE='PROCEDURE' Buscar Stored Procedures por texto: SELECT distinct name SP_Name FROM INNER JOIN ON .id = .id where xtype = 'P' and text like '%textoabucar%' Espero que les venga bien! Saludos! Fuente: http://codigodavincipuntonet.blogspot.com/

3
0
C
Carrito de compras - Asp.Net
Apuntes Y MonografiasporAnónimo10/20/2009

Un trabajo que tuve que hacer en la universidad fue un sitio de ventas de artículo electrónicos. Una buena implementación de un carrito son las variables de sesión (siempre que no se quiera un carrito persistente obviamente). Lo recomendable siempre en este tipo de sitios es tener un modelo de tres capas, separando diseño, lógica y acceso a datos. Visto de este modo necesitaremos una clase que maneje la lógica de negocios del carrito. Para acceder a las variables de sesión desde una clase se debe usar lo siguiente: HttpContext.Current.Session["NombreClave"] También un punto a no olvidar es que hay que establecer en el archivo global.asax que al inicio de cada sesión el carrito no tiene productos cargardos. void Session_Start(object sender, EventArgs e) { Session.Clear(); Session["TotalArts"] = 0; } Bueno, sin más, les dejo el código de nuestra clase para la lógica del carrito de compras: using System; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; using System.Web.SessionState; using System.Collections.Generic; /// /// Clase que maneja el carrito de compras /// namespace BLL { public class ShoppingCart { public ShoppingCart() { } /// /// Devuelve la cantidad de artículos que se van a comprar /// public static int TotalActiveArts { get { int count = 0; for (int i = 1; i <= Convert.ToInt32(System.Web.HttpContext.Current.Session["TotalArts"]); i++) { if (HttpContext.Current.Session["IdArt" + i.ToString()].ToString() != "0" ) count++; } return count; } } /// /// Devuelve el total de los artículos guardados en sesión /// private static int TotalArts { get { return Convert.ToInt32(System.Web.HttpContext.Current.Session["TotalArts"]); } } public static void AddArtInCart(int categoryId, string name, string description, string urlImage, decimal price, int memberId) { HttpContext.Current.Session["TotalArts"] = TotalArts + 1; HttpContext.Current.Session["CategoryIdArt" + TotalArts.ToString()] = categoryId; HttpContext.Current.Session["NameArt" + TotalArts.ToString()] = name; HttpContext.Current.Session["DescriptionArt" + TotalArts.ToString()] = description; HttpContext.Current.Session["UrlImg" + TotalArts.ToString()] = urlImage; HttpContext.Current.Session["PriceArt" + TotalArts.ToString()] = price; HttpContext.Current.Session["IdArt" + TotalArts.ToString()] = 1; } /// /// Guarda cada uno de los artículos en la BD. /// public static void Purchase() { for (int i = 1; i <= TotalArts; i++) { if (HttpContext.Current.Session["IdArt" + i.ToString()].ToString() != "0" ) { HttpContext.Current.Session["IdArt" + i.ToString()] = /*MÉTODO DE ALTA DE ARTÍCULO*/ ; } } } /// /// Borra los artículos de la sesión. Devuelve un string con un mensaje al usuario. /// /// public static string Payed() { string state = "Gracias"; try { for (int i = 1; i <= TotalArts; i++) { HttpContext.Current.Session.Remove("TotalArts" ); HttpContext.Current.Session.Remove("CategoryIdArt" ); HttpContext.Current.Session.Remove("NameArt" ); HttpContext.Current.Session.Remove("DescriptionArt" ); HttpContext.Current.Session.Remove("UrlImg" ); HttpContext.Current.Session.Remove("PriceArt" ); HttpContext.Current.Session.Remove("IdArt" ); HttpContext.Current.Session.Remove("TotalArts" ); } } catch { state = "Ha habido un problema con el registro de tu compra"; } return state; } /// /// Devuelve la tabla con los artículos activos en la sesión /// /// public static DataTable ShopTable() { DataTable dt = new DataTable(); DataColumn[] dcColumns = new DataColumn[3]; dt.Columns.Add("Id" ); dt.Columns.Add("Artículo" ); dt.Columns.Add("Precio" ); dt.Columns.AddRange(dcColumns); for (int i = 1; i <= TotalArts; i++) { if (HttpContext.Current.Session["IdArt" + i.ToString()].ToString() != "0" ) { DataRow dr = dt.NewRow(); dr["Id"] = HttpContext.Current.Session["IdArt" + i.ToString()].ToString(); dr["Artículo"] = HttpContext.Current.Session["TitleArt" + i.ToString()].ToString(); dr["Precio"] = HttpContext.Current.Session["PriceArt" + i.ToString()].ToString(); dt.Rows.Add(dr); } } return dt; } } } Para los que estén interesados en un sitio de compras, pronto iré agregando más info útil, sobre todo enfocada a la BLL y la DAL. Espero que les sirva! http://codigodavincipuntonet.blogspot.com/

30
6
I
ItextSharp - Escribiendo PDF en .Net
Apuntes Y MonografiasporAnónimo11/6/2009

La semana pasada tuve que trabajar en una aplicación que generara un reporte en formato PDF, con datos obtenidos de una BBDD. Es algo muy útil y práctico. A continuación les dejo una explicación de cómo pueden generar archivos PDF desde .Net utilizando la biblioteca itextsharp que la pueden usar en forma gratuita. Let's go! Primero, añadimos a nuestro proyecto una referencia a esta biblioteca (este paso no lo voy a explicar ya que es muy sencillo, si alguien no sabe como hacerlo que me pregunte). Ahora agregamos a nuestro código: using iTextSharp.text; using iTextSharp.text.pdf; using iTextSharp.text.xml; namespace PDFApp { public class Query { public static XmlDocument ExecuteQuery(SqlCommand cmd, ref SqlTransaction trans) { if( cmd == null ) throw new ArgumentNullException("cmd", "El comando no puede ser null." ); if( trans == null ) throw new ArgumentNullException("trans", "La transaccion no puede ser null." ); XmlNode xmlrow = null; XmlReader xmlreader = null; XmlDocument xmldoc = null; xmldoc = new XmlDocument(); xmldoc.LoadXml("" ); xmlreader = cmd.ExecuteXmlReader(); xmlrow = xmldoc.ReadNode(xmlreader); while ( xmlrow != null ) { xmldoc.DocumentElement.AppendChild(xmlrow); xmlrow = xmldoc.ReadNode(xmlreader); } xmlreader.Close(); return xmldoc; } public static XmlDocument ExecuteQuery(SqlCommand cmd, SqlConnection conn) { XmlDocument xmldoc = null; SqlTransaction trans = null; if ( conn != null ) { if ( conn.State != ConnectionState.Open ) { conn.Open(); } cmd.Connection = conn; } else { throw new ArgumentNullException("cmd", "El comando no puede ser null." ); } trans = cmd.Connection.BeginTransaction(); xmldoc = new XmlDocument(); xmldoc.LoadXml("" ); try { cmd.Transaction = trans; xmldoc = ExecuteQuery(cmd, ref trans); trans.Commit(); } catch (Exception ex) { trans.Rollback(); throw ex; } return xmldoc; } } Y ahora ponemos lo siguiente en el código del evento de un botón de nuestra página. Document document = new Document(PageSize.A4, 90f, 50f, 90f, 60f); try { XmlDocument Doc = new XmlDocument(); SqlConnection cnx = new SqlConnection("Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=BASEDEDATOS;Data Source=SERVIDORSQL" ); //Este es un ejemplo que toma datos de una tabla personas, //Es muy importante poner "for xml raw !!! SqlCommand cmd = new sqlcommand("select * from personas for xml raw" ); cmd.Connection = cnx; Doc = Query.ExecuteQuery(cmd, cnx); // Configuración del documento PDF string FullPathOut = "c:\\SalidaPDF.pdf"; PdfWriter.getInstance(document, new filestream(fullpathout, filemode.create)); // Fonts y colores Font font_celdas = FontFactory.getFont(FontFactory.HELVETICA, 8, Font.NORMAL); Font font_titulo_tabla = FontFactory.getFont(FontFactory.HELVETICA, 9, Font.BOLD, new Color(255,255,255)); Color color_negro = new color(0, 0, 0); document.Open(); Table table = new Table(3); table.BorderWidth = 0; table.BorderColor = color_negro; table.Padding = 1; table.Spacing = 1; Cell titulo = new cell(new Phrase("Datos de la tabla", font_titulo_tabla)); titulo.Header = true ; titulo.BackgroundColor = color_negro; titulo.Colspan = 3; table.addCell(titulo); table.addCell(new Phrase("Nombre", font_celdas)); table.addCell(new Phrase("Num. Documento", font_celdas)); table.addCell(new Phrase("Teléfono", font_celdas)); table.endHeaders(); foreach(xmlelement elem in Doc.SelectNodes("/ROOT/row" )) { table.addCell(new Phrase(Elem.GetAttribute("Columna1" ), font_celdas)); table.addCell(new Phrase(Elem.GetAttribute("Columna2" ), font_celdas)); table.addCell(new Phrase(Elem.GetAttribute("Columna3" ), font_celdas)); } document.Add(table); } catch (XmlException xex) { Console.Error.WriteLine(xex.Message); } catch (DocumentException de) { Console.Error.WriteLine(de.Message); } catch (IOException ioe) { Console.Error.WriteLine(ioe.Message); } finally { document.Close(); } } } } Espero que les sirva! En la próxima continuaré con este tema! Saludos! Fuente: http://codigodavincipuntonet.blogspot.com/ .

22
9
P
Pasar datos por método POST a terceros - Asp.Net
Apuntes Y MonografiasporAnónimo10/21/2009

Bueno, un problema que se me presentó trabajando con Asp.net fue en un sitio que tenía que pasar por método POST ciertos datos a una página de pagos electrónicos. La forma más práctica de pasar datos entre páginas aspx con el método POST es la que se detalla en esta página de forma sencilla: http://netcodigo.webinfo.es/2006/10/10/pasar-datos-entre-paginas-web-asp-net-20/ Ahora, esto en el caso que yo describo no sirve, ya que no soy yo quien maneja los datos en la página destino, sino un tercero que espera que se los mande por POST. Para solucionar esto escribí la siguiente clase, si alguno de ustedes se les presenta el mismo problema no tienen más que copiar/pegar el siguiente código (y después leerlo, obviamente jeje) using System; using System.Data; using System.Configuration; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; /// <summary> /// Esta clase genera los formularios para mandar por post los datos a otras páginas /// </summary> public class RemotePost { System.Collections.Specialized.NameValueCollection _Inputs = new System.Collections.Specialized.NameValueCollection(); string _Url = ""; string _Method = "post"; string _FormName = "form1"; /// <summary> /// Devuelve o setea la url del medio de pago /// </summary> public string Url { get {return _Url;} set {_Url = value;} } /// <summary> /// Agrega inputs hidden al formulario /// </summary> /// <param name="name"></param> /// <param name="value"></param> public void Add(string name, string value) { _Inputs.Add(name,value); } /// <summary> /// Imprime en el cliente el formulario de compra /// </summary> public void Post() { System.Web.HttpContext.Current.Response.Clear(); System.Web.HttpContext.Current.Response.Write("" ); System.Web.HttpContext.Current.Response.Write(String.Format("<html><head></head><body onload=\"document.{0}.submit()\">", _FormName)); System.Web.HttpContext.Current.Response.Write(String.Format("<center><form target=\"_blank\" name=\"{0}\" method=\"{1}\" action=\"{2}\" >", _FormName, _Method, Url)); for (int i = 0; i < _Inputs.Keys.Count; i++) { System.Web.HttpContext.Current.Response.Write(String.Format("<input name=\"{0}\" type=\"hidden\" value=\"{1}\">", _Inputs.Keys[i ], _Inputs[_Inputs.Keys[i ]])); } System.Web.HttpContext.Current.Response.Write("</form></center></body></html>" ); } } Bien, ¿y cómo se usa esto? protected void Button1_Click(object sender, EventArgs e) { RemotePost myremotepost = new RemotePost(); myremotepost.Url = "https://argentina.dineromail.com/Shop/Shop_Ingreso.asp"; myremotepost.Add("NombreItem", "ValorItem" ); myremotepost.Add("NombreItem2", "ValorItem2" ); myremotepost.Add("NombreItem2", "ValorItem2" ); myremotepost.Post(); } ________________________________________________________________________________________ Fuente: http://codigodavincipuntonet.blogspot.com/

25
33
B
Buscar FKs - Relaciones de Tablas - Sql Server
Apuntes Y MonografiasporAnónimo11/12/2009

Hoy les dejo un post que les puede resultar muy útil. A mi me ha sacado de más de un apuro. Suele pasar que a veces trabajamos con bases de datos muy grandes, o que estén mal diseñadas o que simplemente no entendemos por completo su esquema. A mi me ha pasado en el trabajo con una base de datos diseñada fuera de Raona. En trabajos como este necesitamos buscar información determinada, y nos pasamos recorriendo tablas y tablas. Para evitar esto les dejo un script SQL, para SQL Server, para encontrar tablas con FKs que apuntan a una tabla que nosotros queramos. Este script nos devuelve la tabla donde se encuentra la clave foránea, la columna de la FK y además el nombre de la constraint. dijo: -- RELACION DE TABLA (DEPENDENCIAS) SELECT FK_Table = FK.TABLE_NAME, FK_Column = CU.COLUMN_NAME, PK_Table = PK.TABLE_NAME, PK_Column = PT.COLUMN_NAME, ConstraintName = C.CONSTRAINT_NAME FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS C INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS FK ON C.CONSTRAINT_NAME = FK.CONSTRAINT_NAME INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS PK ON C.UNIQUE_CONSTRAINT_NAME = PK.CONSTRAINT_NAME INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE CU ON C.CONSTRAINT_NAME = CU.CONSTRAINT_NAME INNER JOIN ( SELECT TC.TABLE_NAME, CU.COLUMN_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS TC INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE CU ON TC.CONSTRAINT_NAME = CU.CONSTRAINT_NAME WHERE TC.CONSTRAINT_TYPE = 'PRIMARY KEY' ) PT ON PT.TABLE_NAME = PK.TABLE_NAME WHERE PK.TABLE_NAME = 'SALESORDERHEADER' -- TU TABLA Espero sinceramente que le sirva a alguien! Otros post de programación en .Net: ItextSharp - Escribiendo PDF en .Net Pasar datos por método POST a terceros - Asp.Net Carrito de compras - Asp.Net Si ya entraste y lo viste? Porqué no comentás? Y si te copaste y te sirvió comentá acá Fuente: http://codigodavincipuntonet.blogspot.com/ .

10
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.