Título...: NORMAS BÁSICAS DE COMPORTAMIENTO EN EL GRUPO
Versión..: 1.1
Fecha....: 2003-09-01
_____________________________________________________________________
1. Intentá no enviar mensajes en formato HTML u otros distintos al
básico. Pesan más sin aportar gran cosa. Podés saber si estás
escribiendo un mensaje en HTML porque tu mailer (el programa de
correo electrónico) te ofrecerá opciones de edición extra, como
letra en negrita o color.
2. No envíes al grupo archivos adjuntos de un tamaño superior a los
100 Kb por medio del correo electrónico. En su lugar, utilizá el
área de archivos del grupo que para ello está.
Además, si bien Yahoo! Grupos entrega todos los archivos adjuntos
que se envían por medio del correo electrónico, estos no se
guardan en el área de mensajes; por ello, los archivos e imágenes
que quieras subir y compartir deberán estar en las áreas de
archivos y fotos del grupo.
3. No pidas confirmación automática de los mensajes que envíes. Es
de pésima educación, pues supone colocar al receptor de tu
mensaje en la disyuntiva de elegir entre que pienses que no lo
recibió y enviarte información personal que no tiene por qué
compartir con vos.
4. No envíes correos masivos y, sobre todo, no los reenvíes. Si
enviás por necesidad un correo a una lista de personas, colocá
sus direcciones en el campo de "Copia Oculta" (CCO). Muchas
personas pueden querer que tengas su correo electrónico, pero no
todos tus contactos y menos tanta gente que participa de un grupo
de discusión.
5. Nunca envíes mensajes en cadena. Las alarmas de virus y las
cadenas de mensajes son por definición FALSAS y su único objetivo
es saturar los servidores y con ellos la red. En los viejos
tiempos, tus privilegios en la red hubieran sido cancelados.
6. Saludá antes del mensaje indicando a quién o a quiénes te
dirigís, y despedite con tu nombre, exactamente igual que harías
con una carta física. Añadí una línea o dos al final de tu
mensaje con información de contacto. Esto es importante ya que
dirigirse a quién sea sin decir quién sos es una actitud pueril,
propia de niños en rebeldía, y una enorme falta de respeto. Es
muy desagradable responder anónimos o a entes que no aportan la
suficiente información para tratarlos con cortesía.
7. Cuando hagas una pregunta al grupo, destacá lo que hayas
aprendido a partir de haber intentado encontrar una respuesta
leyendo material bibliográfico, buscando en la web, preguntándole
a un amigo con más experiencia, etcétera. Generalmente, a los
miembros más experimentados de los grupos de discusión les gusta
responder a la gente que ha demostrado ser capaz de aprender de
las respuestas. Prepará tu pregunta. Pensá en ella. Las preguntas
precipitadas reciben respuestas precipitadas o ni siquiera eso.
Cuanto más hagas para demostrar que has puesto pensamiento y
esfuerzo en resolver tu problema antes de pedir ayuda, más cerca
estarás de recibirla realmente. Realmente, te ganarás una
respuesta si hacés una pregunta sustancial, interesante y que
haga pensar, una que contribuya implícitamente a la experiencia
de la comunidad antes que solicitar de manera pasiva conocimiento
de los demás.
Por otra parte, un muy buen comienzo es dejar claro que podés y
querés participar en el proceso de desarrollar la solución.
"¿Tiene alguien alguna pista?", "¿Qué le falta a mi ejemplo?" y
"¿Hay alguna página que debiera haber consultado?" tendrán más
probabilidades de ser respondidas que "Publicá por favor el
procedimiento exacto que debería seguir", porque estás dejando
claro que estás realmente deseoso de completar el proceso si
alguien simplemente te orienta en la dirección correcta.
8. Sabemos por experiencia que los escritores descuidados y
chapuceros también piensan de manera desordenada y chapucera --a
menudo lo suficiente como para apostar por ello, no obstante.
Responder a pensadores descuidados y chapuceros no recompensa;
mejor estaríamos usando nuestro tiempo en cualquier otro lugar.
Por esto, es importante expresar tu pregunta de manera clara. Si
no podés molestarte en hacer eso, el resto de los miembros del
grupo no pueden molestarse en prestarte atención. Aprovechá el
esfuerzo añadido en pulir tu lenguaje. No tiene que ser nada
estirado ni formal; de hecho, la cultura de los grupos de
discusión valora el lenguaje informal y cómico usado con
precisión. Pero tiene que ser preciso: tiene que haber alguna
indicación de que estás pensando y prestando atención.
Deletreá correctamente. Escribir como un lammer --hAzI3Nd0t3
pAzAr p0r iNt3lIg3nT3 3zKrIbI3Nd0 k0m0 iMb3zIl-- es el beso de la
muerte absoluto y te garantiza que no recibirás otra cosa que
un silencio sepulcral o, si tenés suerte, un montón de desprecio
y sarcasmo como devolución.
9. La cortesía nunca hiere e, incluso, a veces hasta ayuda. Sé
cortés. Usá "Por favor" y "Gracias por adelantado". Dejá claro
que apreciás el tiempo que emplea la gente ayudándote gratis.
Esto no es tan importante como --y no puede sustituir a-- ser
correcto gramaticalmente, claro, preciso y descriptivo, evitar
formatos propietarios, etcétera, pero ayuda. De todos modos, si
obtuviste tus conocimientos técnicos en una tómbola, la educación
incrementará tus posibilidades de recibir una respuesta útil.
10. Recordá que la gente con quienes te comunicás, incluidos los
administradores y los miembros de los grupos a los que pertenecés
o que visitás, no cobran por responderte ni tienen obligación de
hacerlo. Son personas que si te atienden te estarán haciendo un
favor. Nunca asumas que tenés derecho a una respuesta. No lo
tenés.
11. Utilizá las mayúsculas y las minúsculas correctamente. LAS
MAYÚSCULAS DAN LA IMPRESIÓN DE QUE ESTUVIERAS GRITANDO. No hace
falta decir que escribir líneas, párrafos y mensajes enteros en
mayúscula es de pésima educación.
12. Utilizá símbolos para dar énfasis: esto *es* lo que quiero decir.
Utilizá guiones bajos para dar a entender un subrayado: _La
Guerra y la Paz_ es mi libro favorito.
13. Sé breve sin ser demasiado conciso. Cuando contestés un mensaje,
incluí el suficiente material original como para ser entendido
pero no más. Es una mala forma contestar un mensaje simplemente
incluyendo todo el mensaje anterior: borrá todo el material
irrelevante.
14. Usá títulos específicos y con sentido. En los grupos de
discusión, el título o asunto (subject) del mensaje es tu
oportunidad de oro para atraer la atención de expertos
calificados en aproximadamente 50 caracteres o menos. No los
desperdicies en balbuceos. No intentes impresionar al resto de
los miembros del grupo con lo profundo de tu angustia; usá el
espacio para una descripción superconcisa del problema en vez de
eso: el mensaje debe tener un asunto que refleje el contenido del
mismo. Los asuntos vacíos como "Urgente", "Una pregunta",
"Necesito ayuda", "Ayuda" y demás frases que no tienen nada que
ver con el contenido sino con su intención, no son adecuados para
la publicación en un grupo de discusión.
15. No envíes mensajes que estén fuera de tema para el grupo, ya que
esto puede molestar a muchos de los miembros del grupo. Tené
cuidado al elegir dónde planteás tu pregunta. Seguramente te
ignorarán o te tildarán de perdedor si publicás tu pregunta en
un grupo en el que se encuentra fuera de lugar (off-topic). Los
miembros más experimentados de los grupos de discusión suelen
descartar las preguntas inapropiadas para intentar proteger sus
canales de comunicación de lo irrelevante. No querés que te
suceda eso.
Muchas veces podés tener la respuesta a tu alcance en otro grupo
dedicado más específicamente al tema sobre el cual trata tu
consulta. Para ello, podés ayudarte con el mensaje titulado
"Grupos de Sistemas, Software, Management y Tecnologías" o
mediante el índice de Yahoo! Grupos. Si aún tomando en cuenta
estas consideraciones necesitás enviar un mensaje fuera de tema,
iniciá el asunto (subject) del mismo con las siglas "OT:", que
significan "off-topic" o "fuera de tema".
16. Tené cuidado cuando escribas la dirección de correo. Hay
direcciones que llegan a un grupo, pero la dirección parece que
va sólo a una persona. Fíjate a quién lo estás mandando.
17. Mirá el campo de "Copia" (CC) cuando contestes. Si la primera
persona que envió el mensaje se lo mandó a varios en su lista de
correo, no hagas lo mismo.
18. A no ser que usés un dispositivo de encriptación por hardware o
software, cosa que no debe hacerse cuando se escribe a un grupo
público de discusión, debés asumir que el correo en Internet no
es seguro. Nunca pongas nada en un correo electrónico que no
pondrías en una postal. Por otro lado, algunos mensajes pueden
aparecer como provenientes de otra persona distinta del autor.
Aplicá tu sentido común antes de asumir que un mensaje es válido.
19. Si pensás que la importancia de un mensaje lo justifica, contestá
inmediatamente a la dirección particular del remitente para que
sepa que lo has recibido y que estás trabajando en la respuesta,
aunque vayas a mandarle una respuesta más larga más tarde por el
grupo de discusión.
20. Las expectitivas razonables sobre conducta en el correo
electrónico dependen de tu relación con la persona y el contexto
de la comunicación, para el caso este grupo. Las normas
aprendidas en este ambiente puede que no sean aplicables para tu
comunicación por correo electrónico con gente a través de
Internet en otros contextos. Ten cuidado con el argot o siglas
locales.
21. La publicidad por correo electrónico no es bienvenida. Abstenete
de hacer publicidad que no haya sido previamente aceptada por el
administrador del grupo, en especial si se trata de publicidad
fuera de tema o que, estando en tema, sean desleales al ofrecer
beneficios inexistentes. Sólo se considerarán ofertas académicas,
bibliográficas o de software que estén relacionadas con el tema
de discusión y que les aporte una ventaja a los miembros del
grupo.
22. Si alguien ofrece un archivo y lo querés, NUNCA se lo pidas por
el grupo, sino mediante su dirección de correo privada. Los
mensajes que sólo incluyen frases como "Quiero ese archivo", "A
mí también", etcétera, son una verdadera falta de consideración
hacia el resto de los miembros del grupo, quienes no tienen por
qué soportar tales abusos.
23. Si ofrecés algún archivo, fijate primero si podés subirlo al área
de archivos del grupo. Si esto es posible, subilo y seleccioná la
opción para que se avise al grupo sobre la carga; de esta forma,
no hará falta ofrecerlo. Si no podés subirlo al área de archivos,
podés ofrecerlo al grupo mediante un mensaje, indicando en qué
formato está y su tamaño: recordá que no todo el mundo tiene
banda ancha ni buzones de 50 Mb.
24. Si alguna de las respuestas que querés enviar son de tipo
personal, incluyendo agradecimientos sin contenido adicional,
hacelo a la dirección de correo privado de la persona
destinataria de tal mensaje personal, nunca al grupo. Por el
contrario, de no ser personal es importante que lo envíes al
grupo, para que todos los miembros puedan aprender de la
experiencia y/o participar de la discusión: eso es bueno para el
grupo.
25. Si por alguna razón alguna de tus consultas se soluciona por vías
privadas, podría ser bueno para el grupo que te tomes la molestia
de avisar que la solucionaste, incluyendo la forma en que se
resolvió. Esto sería bueno para que todos aprendan de tu propia
experiencia.
26. Las medidas punitorias, si es que fueran necesarias por el bien
del grupo, quedan a consideración de la administración del mismo.
Las mismas pueden, dependiendo de la gravedad del incidente, ir
desde la cancelación temporal de determinados beneficios --envío
de mensajes sin moderación (revisión), envío de adjuntos,
etcétera-- hasta la suspensión definitiva de este y otros grupos
--en especial para el caso de insultos gratuitos, publicidades
desleales y/o fuera de tema, repetidos envíos de virus (aunque
sean involuntarios), etcétera.
27. Los antivirus, incluso gratuitos, existen. No te expongas ni
expongas al grupo a los virus. Si no tenés instalado un antivirus
en tu equipo, hacelo a la brevedad. Si no sabés de dónde bajar
uno, podés usar el AVG Anti-Virus System, que puede descargarse
gratuitamente desde http://www.grisoft.com/
28. NUNCA pidas ser desuscripto enviando un mensaje al grupo. Ninguno
de los miembros puede hacer nada para llevar a cabo tal tarea.
Por otro lado, al suscribirte recibís un mensaje que te explica
cómo desuscribirte, ya sea por correo electrónico o por el sitio
del grupo. Asimismo, al pie de todos y cada uno de los mensajes
que se publican en el grupo TAMBIÉN están las instrucciones
necesarias para desuscribirse. Los miembros más experimentados de
los grupos de discusión suelen considerar como "poco inteligente"
a quien solicita su desuscripción mediante un mensaje al grupo.
No querés que te suceda eso.
Una vez que pidas la desuscripción mediante alguno de los medios
adecuados, tené paciencia. La misma se llevará a cabo
automáticamente y la demora en hacerlo está dada por la carga de
trabajo que tengan los servidores de Yahoo! Grupos: puede ser
inmediata o tardar varias horas.
_____________________________________________________________________
Estas reglas están basadas en los lineamientos de netiquette básicos
para correo electrónico propuestos por Netiqueta, un sitio web de la
Sociedad de las Indias Electrónicas (URL: http://www.netiqueta.org/),
el documento "Cómo Hacer Preguntas de Manera Inteligente" escrito por
Eric S. Raymond, por la propia experiencia después de varios años de
administrar foros, listas y grupos de discusión, y por las
sugerencias que los miembros de este y otros grupos van haciendo en
la búsqueda de la mejora de este, su espacio, el espacio de todos.
Cuidémoslo y mejorémoslo entre todos.
Si bien no se plantean como obligatorias, su cumplimiento es
importante por una cuestión de respeto al espacio y al resto de los
miembros.
¿Alguien sabe cómo implementar el pool de conexiones a SQL Server 2000, directamente desde el driver de Microsoft?
Hasta ahora estaba usando el jdbc:odbc bridge de Sun, y con éste no había problemas...
Pero ahora me pidieron para otro proyecto que usara el driver de Microsoft, (Estoy usando el driver para SQL 2005 / 2000 version standard (No la CPT que salió hace unos días) y no encuentro como configurar el pool...
El bridge tiene unos métodos que permiten setear el número mínimo, maximo e inicial de conexiones del pool, así como los timeouts y el tiempo de cleanup del pool, y no encuentro cómo configurar ésto desde el driver de M$...
NO QUIERO usar dbcp, ni ningun otro mecanismo de Poolig externo, sino directamente el ConnectionPoolDataSource del driver... Y que funcione como el bridge, es decir, que si creo un ConnectionPoolDataSource, lo casteo a un DataSource normal y a éste último le pido una conexión, esta ya viene del pool y es el driver el que se encarga de los open lógicos, open y close físicos, reseteo antes de la reutilización, etc...
Vulnerabilidades en Sun ONE y Sun Java System Application Server de Oxygen3 24h-365d por Panda Software www.pandasoftware.es
Madrid, 27 de junio de 2006 - Sun ha publicado una alerta de seguridad para anunciar la publicación de actualizaciones destinadas a evitar una vulnerabilidad en Sun ONE y Sun Java System Application Server.
El problema, anunciado en http://sunsolve.sun.com/search/document.do?assetkey=1-26-102479-1, afecta a Sun Java System Application Server Standard Edition 7, Sun ONE Application Server 7 Standard Edition y Sun Java System Application Server Enterprise Edition 8.1 y puede permitir a un atacante remoto la construcción de ataques de cross-site scripting.
La vulnerabilidad reside en que un usuario podrá crear código script que será ejecutado en el navegador del usuario atacado. Este código malicioso se originará desde el sitio que ejecuta el software de Sun y se ejecutará bajo el contexto de seguridad de dicho sitio.
Como resultado, el código tendrá acceso a las cookies del usuario atacado asociadas con el dispositivo (incluidas las cookies de autenticación), a datos de accesos recientemente introducidos por el usuario al dispositivo a través de formularios web, o podrá realizar acciones sobre el dispositivo actuando como el propio usuario atacado.
Se acaba de celebrar la Open Source Business Conference
en
Londres, el 27 y 28 de Junio. Es la primera vez que se celebra en
Europa, y al ser un evento orientado a negocio han contado con los
grandes pesos pesados del sector: SUN (Simon Phipps), ALFRESCO (Matt
Assay), OBJECTWEB (Jean-Pierre Laisné), MYSQL (Marten Mickos), INTEL
(Danese Cooper), JBOSS (Marc Fleury), JasperSoft (Paul Doscher),
TROLLTECH (Eirik Chambe-Eng), etc incluso MICROSOFT se ha
apuntado como Patrocinador Platinum para poder hablar a la audiencia.
Muchas de las compañías Open Source de éxito están basadas en
tecnología JAVA (ALFRESCO, OBJECTWEB, JBOSS, JASPERSOFT, etc) y suele
ser un tema recurrente el deseo de que Sun cambie la licencia de su
Plataforma JAVA a una licencia libre.
Según declaró allí un ejecutivo de Sun, ya sólo quedan meses.
Los temas que todavían están encima de la mesa son cómo mantener la
compatibilidad, e impedir que alguna compañía aproveche el código
para construir soluciones propietarias.
Por tanto uno de los temas claves es la licencia. A pesar de los escépticos, Jonathan Schwartz ya ha dicho que GPL es una de las opciones que se están considerando seriamente.
Java no sólo es su Kernel (JVM), sino una plataforma completa que
garantiza un contrato a nivel de API con el desarrollador, y esto se
debe seguir manteniendo. Quizás, al igual que Linux, la Java Virtual
Machine (Kernel) podría tener licencia GPL, y el resto de librerías y
toolkits otro tipo de licencias más abiertas (Apache, CDDL u otras).
Por ejemplo, actualmente las librerías XML (JAXP) ya cuentan con
licencia Apache. En cualquier caso habrá que esperar unos meses más
para ver la decisión definitiva.
A mí también me tardan en aparecer los programas de escritorios hechos
en Java. Supongo que no hay ninguna solución... por ahí utilizando otra
plataforma como .NET... ¿quién dice?
El tema de los reintentos podes plantearlo con el siguiente esquema:
1. Capa de datos. Se encarga de interactuar con la base de datos. Conoce el lenguaje SQL, sabe con que motor se esta conectando.
2. Otras partes de la aplicacion que usan la capa de datos. Son clientes que usan el servicio de la capa de datos. No saben el lenguaje SQL ni cual es el motor de datos, ni donde reside fisicamente la base de datos.
Si el error es tecnico de la base de datos, como perdida de conexion que mencionas, el reintento deberia estar dentro de la capa de datos. En este caso, si el reintento fue exitoso, el cliente ni se entera que hubo reintentos de la operacion que solicito. El pseudocodigo seria algo asi:
sigoReintentando = true DOWHILE (sigoReintentando) TRY SQL contra la base de datos (SELECT/INSERT/DELETE/UPDATE) sigoReintentando = false CATCH (SQLException) sigoReintentando = true
CATCH (OtraException)
sigoReintentando = true o false segun la logica que necesites implementar.
ENDTRY ENDDO
Si el error tiene relacion con la logica de negcios, el reintento -si corresponde- deberia estar en la capa cliente.
En este caso, la capa de datos sabe que tuvo una operacion exitosa con el motor de datos; pero para el cliente es un error. El pseudocodigo en la clase cliente seria
algo asi:
sigoReintentando = true
DOWHILE (sigoReintentando)
TRY
instanciar capa de datos. datos.actualizaElClientes() // es un ejemplo.
sigoReintentando = false
CATCH (datosException)
sigoReintentando = true CATCH (OtraException)
sigoReintentando = true o false segun la logica que necesites implementar.
ENDTRY
ENDDO
Obviamente, esto es disenio, no hay una sola palabra de como implementar, y otros pueden denter otra opinion o punto de vista, mejor que este planteo.
Hola Ana, creo que lo expuesto por David está muy bien, desde el punto de vista práctico te recomiendo que en lugar de implementar este mecanismo utilices algunas de las librerías de manejo de conexiones a base de datos, que te proveen manejo de un "pool" de manera transparente para el cliente (evitan las costosas reconexiones), por ej.
Un TechMap es un artículo visual que explica una tecnología con una cantidad mínima de palabras y la mayor cantidad posible de gráficos.
En este caso, el TechMap sobre JasperReports se compone de 8 páginas en PDF de gran calidad. Cada página describe una aspecto del JasperReports y la verdad es que a mi que llevo poca semanas con este framework me ha ayudado a centrar las ideas sobre su funcionamiento. A continuación os muestro dos ejemplos de estos TechMap:
No se vosotros, pero a mi me resulta bastante complicado leerme tediosos manuales o tutoriales para aprender o entender el funcionamiento de nuevas tecnologías y por tanto esto de los TechMap que a simple vista te permiten crear un mapa mental de como funciona la tecnología o framework que vas a utilizar son de agradecer. Tambien resultan de mucha utilidad para cuando tu ya has aprendido como funciona y por ejemplo se lo tienes que explicar al resto del equipo...
Los manuales tecnológicos, los funcionales de las aplicaciones, etc... deben evolucionar. En mi trabajo siempre me han valorado de forma negativa el poco interes por el funcional. Pero es que vamos no se quien puede tener la paciencia de leerse un documento de 200 páginas en Word para empezar a desarrollar una aplicación. Gracias que el diseño en UML con sus diagramas de casos de uso, diagramas de secuencia, etc... y todo esto enlazando con la maqueta de la aplicación es una práctica cada vez más extendida en mi empresa porque si no hace tiempo que hubiese dejado este trabajo. Por todo ello, espero que con el tiempo, cosas tipo los TechMap, el hacer un uso más extensivo de los elementos multimedia, etc... sea una práctica más habitual en el proceso de elaboración de este tipo de documentos.
Parece ser que ya están preparando dos más: una sobre Spring y otra sobre Hibernate.
El tema de los reintentos podes plantearlo con el siguiente esquema:
1. Capa de datos. Se encarga de interactuar con la base de datos. Conoce el lenguaje SQL, sabe con que motor se esta conectando.
2. Otras partes de la aplicacion que usan la capa de datos. Son clientes que usan el servicio de la capa de datos. No saben el lenguaje SQL ni cual es el motor de datos, ni donde reside fisicamente la base de datos.
Si el error es tecnico de la base de datos, como perdida de conexion que mencionas, el reintento deberia estar dentro de la capa de datos. En este caso, si el reintento fue exitoso, el cliente ni se entera que hubo reintentos de la operacion que solicito. El pseudocodigo seria algo asi:
sigoReintentando = true DOWHILE (sigoReintentando) TRY SQL contra la base de datos (SELECT/INSERT/DELETE/UPDATE) sigoReintentando = false CATCH (SQLException) sigoReintentando = true
CATCH (OtraException)
sigoReintentando = true o false segun la logica que necesites implementar.
ENDTRY ENDDO
Si el error tiene relacion con la logica de negcios, el reintento -si corresponde- deberia estar en la capa cliente.
En este caso, la capa de datos sabe que tuvo una operacion exitosa con el motor de datos; pero para el cliente es un error. El pseudocodigo en la clase cliente seria
algo asi:
sigoReintentando = true
DOWHILE (sigoReintentando)
TRY
instanciar capa de datos. datos.actualizaElClientes() // es un ejemplo.
sigoReintentando = false
CATCH (datosException)
sigoReintentando = true CATCH (OtraException)
sigoReintentando = true o false segun la logica que necesites implementar.
ENDTRY
ENDDO
Obviamente, esto es disenio, no hay una sola palabra de como implementar, y otros pueden denter otra opinion o punto de vista, mejor que este planteo.
> Hola Ana,
>
> Para saber que excepcion te tira podes no conectar con la BD, y luego
> intentar alguna operacion. Luego podes imprmir el trace para ver cual es.
Si... ok... pero cuando plantee la cuestión, empecé con esto pero
luego derivé en ¿cómo implementaríais un módulo de reintentos? por si
había algo por ahí más o menos estandarizado...
> De todas formas, es raro que se "pierda" la conexion con la base de
> datos.
¿Raro? En sistemas en red es el pan nuestro de cada
día..................... créeme.
> No seria mejor estudiar por que esta pasando, y atacar ese problema?
> Bah... sugiero... tampoco se bien cual es tu situacion concreta...
> quizas el DBA (si hay uno) esta tirando el fardo a los
> desarrolladores....
En cualquier caso, se trata de aportar robustez a la aplicación. :)
Saludos y gracias. Ana.
************************************************************************************************************************************************
*La información contenida en este mensaje de correo electrónico es confidencial y puede revestir el carácter de reservada. *
*Está dirigida exclusivamente a la persona destinataria. *
*El acceso o cualquier uso por parte de cualquier otra persona de este mensaje no están autorizados y pueden ser ilegales.*
*Si no es Ud. la persona destinataria, le rogamos que proceda a borrarlo. *
*The information in this e-mail is confidential and may be legally privileged. *
*It is intended solely for the addressee. *
*Access or any use by any other person to this Internet e-mail is not authorised and may be unlawful. *
*If you are not the intended recipient, please delete this e-mail. *
************************************************************************************************************************************************
-- ======================= David Brunstein
Java/PB/VFP Developer Winnipeg, MB Canada
Before I speak, I have something important to say. Antes de dar mi discurso, tengo algo importante que decir.
Antes de dar meu discurso, tenho algo importante para dizer. G.M.
Mira mi consejo es que vayas hagas tu experiencia y despues ves, por que siempre vas a encontrar opiniones distintas, mi caso por ejemplo yo trabajao para el LIFIA en la plata y me habian propuesto ir a laburar a LUMINA y en su momento tambien averigue como vos y la cosa es que recibi en algunos casos muchos elogios y en otros puras criticas , asi que para mi es que tenes que ir y hacer tu propia experiencia,.
Salludos.
Martin <martinxyz06@...> escribió:
Hola Aldo, yo estuve laburando en siderar hasta el mes pasado, en el proyecto NCA(nuevo ciclo activo) te comento que el proyecto esta mal manejado, llevan mas de 4 años y tienen como 1.5 de atraso, se manejan tipo fabrica(se hace lo que yo digo y punto, no importa si lo que vos propones es mejor), hacen diferencia entre los
empleados de siderar con los de consultoras. Esa es mi exeriencia en el proyecto, no se si se manejaran en todos los proyectos de la misma forma. Espero haberte ayudado.
----- Original Message ----- From: "Aldo Altamirano" <aldowam@...> To: <DesarrolloJava@...> Sent: Thursday, June 29, 2006 10:48 AM Subject: [Java] [Off-Topic] Consulta empresa SIDERAR
Hola gente,
Consulte la DBde las Consultoras en el grupo, y no hay referencias de la empresa Siderar; pasa que tengo una segunda entrevista (técnica) y queria saber si alguien tuvo entrevistas o estuvo trabajando, y que me comenten su experinecia. Les pido esto ya que yo hace poco cambié a programar en java y en el primer laburo de java la entrevista tecnica no fue tan exigente.
___________________________________________________________ 1GB gratis, Antivirus y Antispam Correo Yahoo!, el mejor correo web del mundo http://correo.yahoo.com.ar
1GB gratis, Antivirus y Antispam Correo Yahoo!, el mejor correo web del mundo Abrí tu cuenta aquí
David Brunstein escribió:
> Hola Ana,
>
> Para saber que excepcion te tira podes no conectar con la BD, y luego
> intentar alguna operacion. Luego podes imprmir el trace para ver cual es.
Si... ok... pero cuando plantee la cuestión, empecé con esto pero
luego derivé en ¿cómo implementaríais un módulo de reintentos? por si
había algo por ahí más o menos estandarizado...
> De todas formas, es raro que se "pierda" la conexion con la base de
> datos.
¿Raro? En sistemas en red es el pan nuestro de cada
día..................... créeme.
> No seria mejor estudiar por que esta pasando, y atacar ese problema?
> Bah... sugiero... tampoco se bien cual es tu situacion concreta...
> quizas el DBA (si hay uno) esta tirando el fardo a los
> desarrolladores....
En cualquier caso, se trata de aportar robustez a la aplicación. :)
Saludos y gracias. Ana.
********************************************************************************\
****************************************************************
*La información contenida en este mensaje de correo electrónico es confidencial
y puede revestir el carácter de reservada. *
*Está dirigida exclusivamente a la persona destinataria.
*
*El acceso o cualquier uso por parte de cualquier otra persona de este mensaje
no están autorizados y pueden ser ilegales.*
*Si no es Ud. la persona destinataria, le rogamos que proceda a borrarlo.
*
*The information in this e-mail is confidential and may be legally privileged.
*
*It is intended solely for the addressee.
*
*Access or any use by any other person to this Internet e-mail is not authorised
and may be unlawful. *
*If you are not the intended recipient, please delete this e-mail.
*
********************************************************************************\
****************************************************************
Antonio:
Lo que buscas está hecho ya, es un proyecto que esta en
http://danadler.com/jacob/
Yo lo uso sin problemas, llamo dentro de Java una dll y funciona muy
bien.
Saludos!
--- En DesarrolloJava@..., Carlos Descalzi
<cdescalzi2001@y...> escribió:
>
> Lo que tenes que hacer es lo siguiente
>
> 1) Codificar una clase java que va a ser la que se
> encargue de operar contra las funciones de dicha dll,
> o sea un wrapper
> Para esto tenes que declararle los metodos que creas
> necesarios con el modificador native y sin el cuerpo
> del metodo (como si fuera una interfaz).
> Aca va un ejemplo:
>
> public class MyWrapper {
> static {
> System.loadLibrary("miwrapper");
> }
>
> public native void doSomething();
> }
>
> 2) Ejecuta el comando javah para que te genere el/los
> archivos de cabecera de c (los .h)
>
> 3) Codificar la implementacion de las funciones que
> van a estar declaradas. Como compilador podes usar
> cualquiera (puede ser el visual C++, el borland
> C++,etc). Tené en cuenta que tenes que referenciar
> tambien a los archivos de cabecera que se encuentran
> en el directorio include del jdk, y a los .lib que
> estan en el directorio lib, esto ultimo al linkear.
> Aca es donde haces las llamadas correspondientes a
> la libreria que queres usar.
> Otra consideración:
> Para que la referencia a esa libreria la resuelva en
> compilacion tenes que tener algun .lib que haya venido
> con la dll, si no no te queda otra que abrir la dll en
> tiempo de ejecucion.
>
>
> En si esto es un resumen muy breve de lo que vas a
> encontrar en el libro de jni.
>
> Algunas consideraciones:
> 1) Si creas desde codigo C instancias de objetos tenes
> que manejar vos las referencias, o sea, cuando no lo
> uses mas hacer (*env)->ReleaseLocalRef(*env,objeto).
> porque si no la maquina virtual no tiene forma de
> saber que este objeto no se usa mas.
> 2) Si usas handles de windows tene en cuenta que no se
> pueden compartir entre threads, esto mas de una vez
> resulta un dolor de cabeza.
>
>
>
> --- Carlos Javier Leiro <carlos.leiro@g...>
> escribió:
>
> > Siempre hay que hacer algun tipo de transformación
> > de datos entre C y Java.
> >
> > La verdad que en eso no soy un experto pero es asi.
> > Hasta donde se no es posible usar una dll del
> > Windows directamente de Java (Por lo menos con el de
> > Sun con el J# no se lo tengo que investigar pero aun
> > no tuve tiempo).
> > ----- Original Message -----
> > From: antonio a
> > To: DesarrolloJava@...
> > Sent: Wednesday, June 28, 2006 12:39 AM
> > Subject: Re: [Java] Utilizar librería .dll en Java
> >
> >
> > Encontré el system.loadlibrary("filename"), pero
> > no entiendo porque debo programar en C, si la
> > librería ya se encuentra empaquetada para ser
> > utilizada?
> > o me equivoco?
> >
> > Carlos Javier Leiro <carlos.leiro@g...>
> > escribió:
> > Fijate en JNI (Java Native Interface). Tenes que
> > programar un poco en C y ademas nadie garantiza que
> > despues esto sea portable a otro sistema Operativo.
> > ----- Original Message -----
> > From: antonio a
> > To: DesarrolloJava@...
> > Sent: Tuesday, June 27, 2006 12:42 AM
> > Subject: [Java] Utilizar librería .dll en Java
> >
> >
> > Hola a todos.
> >
> > Necesito utilizar una librería dentro de una
> > clase, podrían orientarme como realizar la llamada
> > desde java.
> >
> > Gracias
> >
> >
> > __________________________________________________
> > Correo Yahoo!
> > Espacio para todos tus mensajes, antivirus y
> > antispam ¡gratis!
> > Regístrate ya -
> > http://correo.espanol.yahoo.com/
> >
> >
> > __________________________________________________
> > Correo Yahoo!
> > Espacio para todos tus mensajes, antivirus y
> > antispam ¡gratis!
> > Regístrate ya - http://correo.espanol.yahoo.com/
>
>
>
>
> ____________________________________________________
> Esa persona especial te espera en Yahoo! Encuentros.
> ¡Dejate encontrar!
> http://ar.encuentros.yahoo.com/
>
Hola Aldo, yo estuve laburando en siderar hasta el mes pasado, en el
proyecto NCA(nuevo ciclo activo) te comento que el proyecto esta mal
manejado, llevan mas de 4 años y tienen como 1.5 de atraso, se manejan tipo
fabrica(se hace lo que yo digo y punto, no importa si lo que vos propones es
mejor), hacen diferencia entre los empleados de siderar con los de
consultoras.
Esa es mi exeriencia en el proyecto, no se si se manejaran en todos los
proyectos de la misma forma.
Espero haberte ayudado.
----- Original Message -----
From: "Aldo Altamirano" <aldowam@...>
To: <DesarrolloJava@...>
Sent: Thursday, June 29, 2006 10:48 AM
Subject: [Java] [Off-Topic] Consulta empresa SIDERAR
Hola gente,
Consulte la DBde las Consultoras en el grupo, y no hay referencias de
la empresa Siderar; pasa que tengo una segunda entrevista (técnica) y
queria saber si alguien tuvo entrevistas o estuvo trabajando, y que me
comenten su experinecia.
Les pido esto ya que yo hace poco cambié a programar en java y en el
primer laburo de java la entrevista tecnica no fue tan exigente.
Gracias de antemano, y que tengan un buen día,
Aldo.
------------------------------
DesarrolloJava | Desarrollo de Software en Java/J++/J#
------------------------------
Direcciones del grupo:
Publicar un mensaje: DesarrolloJava@...
Suscribirse........: DesarrolloJava-Subscribe@...
Desuscribirse......: DesarrolloJava-Unsubscribe@...
Administrador......: DesarrolloJava-Owner@...
Página del grupo...: http://www.gruposyahoo.com.ar/group/DesarrolloJava
------------------------------
Libros sobre el tema (castellano):
http://www.amazon.com/exec/obidos/external-search?tag=analisiydisen-20&keyword=J\
ava%20spanish&mode=books
Enlaces de Yahoo! Grupos
___________________________________________________________
1GB gratis, Antivirus y Antispam
Correo Yahoo!, el mejor correo web del mundo
http://correo.yahoo.com.ar
Hola gente,
Consulte la DBde las Consultoras en el grupo, y no hay referencias de
la empresa Siderar; pasa que tengo una segunda entrevista (técnica) y
queria saber si alguien tuvo entrevistas o estuvo trabajando, y que me
comenten su experinecia.
Les pido esto ya que yo hace poco cambié a programar en java y en el
primer laburo de java la entrevista tecnica no fue tan exigente.
Gracias de antemano, y que tengan un buen día,
Aldo.
Hola tengo que leer un fichero excel en una aplicacion web (un servlet)y no puedo usar POI.
Hay manera de hacerlo?
Teneis algun ejemplo simple?
estoy haciendo en un servlet esto:
String fichero = request.getParameter("fichero"); String path = request.getParameter("path"); path="c:\\"; fichero="Libro1"; FileInputStream in = new FileInputStream(path + fichero); OutputStream out = response.getOutputStream();
// Copy the contents of the file to the output stream byte[] buf = new byte[1024]; int count = 0; while ((count = in.read(buf)) >= 0) { out.write(buf, 0, count); } in.close(); out.close();
pero no consigo mostrar nada
Me podeis ayudar?
gracias
No virus found in this incoming message. Checked by AVG Free Edition. Version: 7.1.394 / Virus Database: 268.9.5/377 - Release Date: 2006/06/27
Yo creo que hay un error de concepto. Los que deben tener el mismo nombre son los radiobuttons ya que necesitan relacionarse entre ellos porque solo uno debe seleccionarse del grupo. Pero los checkboxes son independientes entre si. Así que lo que normalmente se hace si aún quieres que sean del mismo grupo es llamarlos titulorevista1, titulorevista2, ..., titulorevistan
Normalmente el orden es irrelevante asi que:
String titulo_revista[] = null;
Enumeration campos=request.getParameterNames();//campos del formulario
while (campos.hasMoreElements()){
String titulo=(String)campos.nextElement();
if (titulo.startsWith("titulorevista")){
titulo_revista = request.getParameter(titulo);
}
}
Eso debería bastar.
Saludos,
Carlos
El mié, 28-06-2006 a las 23:08 +0200, Miren Urkijo escribió:
Hola estoy intentando tomar los valores chequeados de uans checkbox de una jsp.
como son checkbox el name es el mismo para todas ellas y trato de tomar las que estan selecionadas y mterlas en un array de strings para pasarselo a una clase java.
estoy haciendo lo siguiente. lo que quiero localizar son los checkboxes que se llamen titulorevista:
String titulo_revista[] = null;
Enumeration campos=request.getParameterNames();//campos del formulario
while (campos.hasMoreElements()){
String titulo=(String)campos.nextElement();
if (titulo.equals("titulorevista")){
titulo_revista = request.getParameterValues(titulo);
}
}
Pero no logro meter en el array titulo_revista los valores.
Hola estoy intentando tomar los valores chequeados de uans checkbox de una jsp.
como son checkbox el name es el mismo para todas ellas y trato de tomar las que estan selecionadas y mterlas en un array de strings para pasarselo a una clase java.
estoy haciendo lo siguiente. lo que quiero localizar son los checkboxes que se llamen titulorevista:
String titulo_revista[] = null; Enumeration campos=request.getParameterNames();//campos del formulario
while (campos.hasMoreElements()){ String titulo=(String)campos.nextElement(); if (titulo.equals("titulorevista")){ titulo_revista = request.getParameterValues(titulo);
} }
Pero no logro meter en el array titulo_revista los valores.
Hola!
if (envioMail.estado)
como le haces para determinar el estado?
Imagino que en tu proceso no sabes si la direccion a la que escribes
es de un grupo de correo o de un usuario individual, asi que quizas
con la respuesta del servidor de correo puedas sacar esta informacion
Saludos!
On 6/28/06, Ana Lorite <alorite@...> wrote:
>
>
>
> Hola David.
>
> Tengo acceso al módulo en el que envia el e-mail a la lista. Ya está. El
servidor de correo es el encargado de distribuir el correo entre los miembros de
la lista... luego no podré saber qué direcciones e-mail han fallado en el envío.
>
> [.........]
>
> EnvioMail envioMail = new EnvioMail(from, to, cabecera, cuerpo){
> public void run(){
> getServletContext().log("EnvioMail::run()--> Se llama a
ejecutar()");
> estado = mensaje.ejecutar(from, to, header, body);
> getServletContext().log("EnvioMail::run() --> ejecutar()
ejecutado");
> }
> };
>
> getServletContext().log("Inicio del hilo envioMail");
> new Thread(envioMail).start();
> try{
> Thread.sleep(6000);
> }catch(InterruptedException e){
> getServletContext().log("Excepcion capturada: " +
e.getMessage());
> e.printStackTrace();
> }
>
> if (envioMail.estado){
> getServletContext().log("Se ha enviado correctamente el e-mail");
> out.println("Correcto");
> }else{
> getServletContext().log("No se ha enviado correctamente el
e-mail");
> out.println("Incorrecto");
> }
>
> [.........]
>
>
--
--- Los que no quieren votar el 2 de Julio en las elecciones de Mexico
en el espacio en blanco pongan "José Fidel Urquiza Yllescas" y denle
su voto de confianza a mi cuate ---
Para saber que excepcion te tira podes no conectar con la BD, y luego intentar alguna operacion. Luego podes imprmir el trace para ver cual es.
De todas formas, es raro que se "pierda" la conexion con la base de datos. No seria mejor estudiar por que esta pasando, y atacar ese problema? Bah... sugiero... tampoco se bien cual es tu situacion concreta... quizas el DBA (si hay uno) esta tirando el fardo a los desarrolladores....
Siempre podes hacer un catch con una generica Exception...y te va a catchear cualquier cosa...pero no es muy recomendable... De todas maneras, podes hacer eso para descubrir cual o cuales son las excepciones que te esta tirando, y despues simplemente acotar a esa y recompilar :)
-Nico
Tengo que implementar un mecanismo de reconexión de un proceso a una bdd antes una eventual pérdida de conexión.
Cuando se pierde una conexión previamente establecida ¿salta alguna excepción? He estado mirando el API
y en el doc del método isClose() me dice que:
* This method generally cannot be called to determine whether a * connection to a database is valid or invalid. A typical client * can determine that a connection is invalid by catching any * exceptions that might be thrown when an operation is attempted.
y claro, la solución pasaría por capturar la excepción... pero no sé cuál se lanza.
Por otro lado... esto que estoy planteando ¿es una buena forma de implementar esta mecanismo? mi idea es capturar la excepción y "reintentar" ¿cómo lo haríais vosotros? nunca me he pegado con conexiones a base de datos.
Muchas gracias de antemano.
Un saludo. Ana.
************************************************************************************************************************************************ *La información contenida en este mensaje de correo electrónico es confidencial y puede revestir el carácter de reservada. * *Está dirigida exclusivamente a la persona destinataria. * *El acceso o cualquier uso por parte de cualquier otra persona de este mensaje no están autorizados y pueden ser ilegales.* *Si no es Ud. la persona destinataria, le rogamos que proceda a borrarlo. * *The information in this e-mail is confidential and may be legally privileged. * *It is intended solely for the addressee.
* *Access or any use by any other person to this Internet e-mail is not authorised and may be unlawful. * *If you are not the intended recipient, please delete this e-mail. * ************************************************************************************************************************************************
Before I speak, I have something important to say. Antes de dar mi discurso, tengo algo importante que decir.
Antes de dar meu discurso, tenho algo importante para dizer. G.M.
Lo que te queda para tener control del error, es que vos misma explotes las direcciones de listas de correos en listas individuales. Podrias tener una tabla en la que tengas dos columnas, una con la direccion de emailTo y otra con el realEmail.
Haces un resultSet con un SELECT donde la clausula WHERE filtra por emailTo y vos instancias la clase EnvioMail tantas veces como realEmail tengas.
Si el emailTo es una direccion individual, va a coincidir con realEmail, y el SELECT te retornara una sola fila. Si el emailTo es una lista de distribucion, tendras varias filas con realEmail, una por cada email que pertence a la lista.
Asi vos tenes control de los errores. En este planteo tenes dos contras: 1. No estas haciendo uso de la posiblidad del servidor de correo de enviar emails a una lista de distribucion. 2. Tenes que hacer mantenimiento de la tabla, o sea mantener las de email actualizada.
3. (se me agrego una desventaja, :-)) Cuando cambias un email de una persona, no se si son clientes o que, tenes que actualizar esta otra tabla.
Lo de usar una tabla de una base de datos es solo por conveniencia, pero podrias usar cualquier tipo de archivos, como TXT, DBFs, XML, etc etc etc
Tengo acceso al módulo en el que envia el e-mail a la lista.
Ya está. El servidor de correo es el encargado de distribuir el correo
entre los miembros de la lista... luego no podré saber qué direcciones
e-mail han fallado en el envío.
[.........]
EnvioMail envioMail = new EnvioMail(from,
to, cabecera, cuerpo){
public void run(){
getServletContext().log("EnvioMail::run()--> Se
llama a ejecutar()");
estado = mensaje.ejecutar(from, to, header, body);
getServletContext().log("EnvioMail::run() -->
ejecutar() ejecutado");
}
};
getServletContext().log("Inicio del hilo envioMail");
new Thread(envioMail).start();
try{
Thread.sleep(6000);
}catch(InterruptedException e){
getServletContext().log("Excepcion capturada: " +
e.getMessage());
e.printStackTrace();
}
if (envioMail.estado){
getServletContext().log("Se ha enviado correctamente el
e-mail");
out.println("Correcto");
}else{
getServletContext().log("No se ha enviado correctamente el
e-mail");
out.println("Incorrecto");
}
[.........]
David Brunstein escribió:
Hola Ana,
No se entiende bien si tenes acceso a modificar el codigo del modulo de
envio de emails o no. Si no tenes acceso, no te va a quedar otra que
hacerte otro modulo, porque como vos decis, solo tenes un resultado
booleano luego del envio de todos los mails a una lista de
distribucion.
Ahora, si sí tenes acceso a modificar el codigo, tenes muchas
posibilidades. Una es la que ya te comente. Otra es grabar un archivo o
una tabla de la base de datos, a medida que envias un email y el
estado. Luego desde la aplicacion consultas el estado de los emails
enviados, y reintentas el que no anduvo bien.
Ya... pero desde mi
aplicación sólo sé que ha fallado el envío a la lista de distribución
pero no qué cuenta en concreto es la que ha cascao.....
¿Habría alguna forma de saber esto? Porque claro... quizá me esté
despistando y busque soluciones en sitios incorrectos.
¡¡Muchas gracias!!
David Brunstein escribió:
Hola Ana,
No se muy bien como son los metodos y que devuelven, pero en principio,
en vez de devolver un boolean podes crearte una Exception en la que
especifiques la cuenta de email sobre la que hay que reintentar. Luego
con un bloque try catch, atrapas la Exception y reintentas solo sobre
esa cuenta.
Otra solucion es que en vez de devolver un boolean, retorna la cuenta
de email sobre la que dio error o, si todo anduvo bien, un String con
null value.
Tengo un problema. En la aplicación en la que trabajo hay un módulo
de envio de e-mails.
El envio de correo se puede efectuar:
- caso 1: bien a una única direccion e-mail
- caso 2: bien a una cuenta multiple o lista de distribución
(como ésta a la que escribo)
La cosa es que la comunicación con el servidor de correo a veces no
es satisfactoria (desde esta aplicación y desde cualquier cliente de
correo.... no saben qué es) y da error. Mi primera solución fue la de
poner reintentos. Y al principio todo parecía ser bastante robusto: la
aplicación no se quedaba "colgada" y el hilo lanzado para el envío de
e-mail se ejecutaba en paralelo además de realizar reintentos. Todo OK.
Hasta que empieza a haber problemas con las cuentas (caso 2)
¿Qué ocurre? Que si un e-mail se tiene que enviar a la cuenta java@yahoogroups.com
que a su vez implica un envio de correos a 5
cuentas, si una de ellas falla, el estado devuelto del envió del e-mail
es false ==> luego lo reintenta. Es decir:
Fase 1) email a
java@yahoogroups.com:
- e-mail a pepe ==> OK
- e-mal a juan ==> OK
- e-mail a rosita ==> NOOK ==> volver a fase
1 ==> volvemos a enviar los correos....
Lo reintenta con TODAS las cuentas asociadas, con lo que hay
ocasiones en que a unos les llega un correo 5 veces porque a otro le
falló el envío. .
Y no sé qué hacer.... estoy completamente en blanco.
Muchisimas gracias de antemano.
Un saludo. Ana.
************************************************************************************************************************************************ *La información contenida en este mensaje de correo electrónico es confidencial y puede revestir el carácter de reservada. *
*Está dirigida exclusivamente a la persona destinataria. * *El acceso o cualquier uso por parte de cualquier otra persona de este mensaje no están autorizados y pueden ser ilegales.*
*Si no es Ud. la persona destinataria, le rogamos que proceda a borrarlo. * *The information in this e-mail is confidential and may be legally privileged. *
*It is intended solely for the addressee. * *Access or any use by any other person to this Internet e-mail is not authorised and may be unlawful. *
*If you are not the intended recipient, please delete this e-mail. * ************************************************************************************************************************************************
--
=======================
David Brunstein
Java/PB/VFP Developer
Winnipeg, MB
Canada
Before I speak, I have something important to say.
Antes de dar mi discurso, tengo algo importante que decir.
Antes de dar meu discurso, tenho algo importante para dizer.
G.M.
************************************************************************************************************************************************ *La informaci�n contenida en este mensaje de correo electr�nico es confidencial y puede revestir el car�cter de reservada. *
*Est� dirigida exclusivamente a la persona destinataria. * *El acceso o cualquier uso por parte de cualquier otra persona de este mensaje no est�n autorizados y pueden ser ilegales.*
*Si no es Ud. la persona destinataria, le rogamos que proceda a borrarlo. * *The information in this e-mail is confidential and may be legally privileged. *
*It is intended solely for the addressee. * *Access or any use by any other person to this Internet e-mail is not authorised and may be unlawful. *
*If you are not the intended recipient, please delete this e-mail. * ************************************************************************************************************************************************
-- ======================= David Brunstein
Java/PB/VFP Developer Winnipeg, MB Canada
Before I speak, I have something important to say. Antes de dar mi discurso, tengo algo importante que decir.
Antes de dar meu discurso, tenho algo importante para dizer. G.M.
Hola Leandro:
> Gracias por aceptar mi ingreso a la lista.
Te felicito. Bienvenido a la lista.
> Soy programador, aunque novato en Java, tengo
> un pasado muy Vil .. perdón es con B larga ...
> muy Bill, pero todos tenemos un pasado que
> ocultar, veremos como me trata mi etapa J
¡Qué bueno! Luego de tu etapa con Java vas a tener dos pasados que ocultar.
Saludos
Lo que tenes que hacer es lo siguiente
1) Codificar una clase java que va a ser la que se
encargue de operar contra las funciones de dicha dll,
o sea un wrapper
Para esto tenes que declararle los metodos que creas
necesarios con el modificador native y sin el cuerpo
del metodo (como si fuera una interfaz).
Aca va un ejemplo:
public class MyWrapper {
static {
System.loadLibrary("miwrapper");
}
public native void doSomething();
}
2) Ejecuta el comando javah para que te genere el/los
archivos de cabecera de c (los .h)
3) Codificar la implementacion de las funciones que
van a estar declaradas. Como compilador podes usar
cualquiera (puede ser el visual C++, el borland
C++,etc). Tené en cuenta que tenes que referenciar
tambien a los archivos de cabecera que se encuentran
en el directorio include del jdk, y a los .lib que
estan en el directorio lib, esto ultimo al linkear.
Aca es donde haces las llamadas correspondientes a
la libreria que queres usar.
Otra consideración:
Para que la referencia a esa libreria la resuelva en
compilacion tenes que tener algun .lib que haya venido
con la dll, si no no te queda otra que abrir la dll en
tiempo de ejecucion.
En si esto es un resumen muy breve de lo que vas a
encontrar en el libro de jni.
Algunas consideraciones:
1) Si creas desde codigo C instancias de objetos tenes
que manejar vos las referencias, o sea, cuando no lo
uses mas hacer (*env)->ReleaseLocalRef(*env,objeto).
porque si no la maquina virtual no tiene forma de
saber que este objeto no se usa mas.
2) Si usas handles de windows tene en cuenta que no se
pueden compartir entre threads, esto mas de una vez
resulta un dolor de cabeza.
--- Carlos Javier Leiro <carlos.leiro@...>
escribió:
> Siempre hay que hacer algun tipo de transformación
> de datos entre C y Java.
>
> La verdad que en eso no soy un experto pero es asi.
> Hasta donde se no es posible usar una dll del
> Windows directamente de Java (Por lo menos con el de
> Sun con el J# no se lo tengo que investigar pero aun
> no tuve tiempo).
> ----- Original Message -----
> From: antonio a
> To: DesarrolloJava@...
> Sent: Wednesday, June 28, 2006 12:39 AM
> Subject: Re: [Java] Utilizar librería .dll en Java
>
>
> Encontré el system.loadlibrary("filename"), pero
> no entiendo porque debo programar en C, si la
> librería ya se encuentra empaquetada para ser
> utilizada?
> o me equivoco?
>
> Carlos Javier Leiro <carlos.leiro@...>
> escribió:
> Fijate en JNI (Java Native Interface). Tenes que
> programar un poco en C y ademas nadie garantiza que
> despues esto sea portable a otro sistema Operativo.
> ----- Original Message -----
> From: antonio a
> To: DesarrolloJava@...
> Sent: Tuesday, June 27, 2006 12:42 AM
> Subject: [Java] Utilizar librería .dll en Java
>
>
> Hola a todos.
>
> Necesito utilizar una librería dentro de una
> clase, podrían orientarme como realizar la llamada
> desde java.
>
> Gracias
>
>
> __________________________________________________
> Correo Yahoo!
> Espacio para todos tus mensajes, antivirus y
> antispam ¡gratis!
> Regístrate ya -
> http://correo.espanol.yahoo.com/
>
>
> __________________________________________________
> Correo Yahoo!
> Espacio para todos tus mensajes, antivirus y
> antispam ¡gratis!
> Regístrate ya - http://correo.espanol.yahoo.com/
____________________________________________________
Esa persona especial te espera en Yahoo! Encuentros.
¡Dejate encontrar!
http://ar.encuentros.yahoo.com/
Siempre podes hacer un catch con una generica Exception...y te va a catchear cualquier cosa...pero no es muy recomendable... De todas maneras, podes hacer eso para descubrir cual o cuales son las excepciones que te esta tirando, y despues simplemente acotar a esa y recompilar :) -Nico
Ana Lorite <alorite@...> escribió:
Hola. Tengo una dudilla.
Tengo que implementar un mecanismo de reconexión de un proceso a una bdd antes una eventual pérdida de conexión.
Cuando se pierde una conexión previamente establecida ¿salta alguna excepción? He estado mirando el API
y en el doc del método isClose() me dice que:
* This method generally cannot be called to determine whether a * connection to a database is valid or invalid. A typical client * can determine that a connection is invalid by catching any * exceptions that might be thrown when an operation is attempted.
y claro, la solución pasaría por capturar la excepción... pero no sé cuál se lanza.
Por otro lado... esto que estoy planteando ¿es una buena forma de implementar esta mecanismo? mi idea es capturar la excepción y "reintentar" ¿cómo lo haríais vosotros? nunca me he pegado con conexiones a base de datos.
Muchas gracias de antemano.
Un saludo. Ana.
************************************************************************************************************************************************ *La información contenida en este mensaje de correo electrónico es confidencial y puede revestir el carácter de reservada. * *Está dirigida exclusivamente a la persona destinataria. * *El acceso o cualquier uso por parte de cualquier otra persona de este mensaje no están autorizados y pueden ser ilegales.* *Si no es Ud. la persona destinataria, le rogamos que proceda a borrarlo. * *The information in this e-mail is confidential and may be legally privileged. * *It is intended solely for the addressee.
* *Access or any use by any other person to this Internet e-mail is not authorised and may be unlawful. * *If you are not the intended recipient, please delete this e-mail. * ************************************************************************************************************************************************
Tengo que implementar un mecanismo de reconexión de un proceso a
una bdd antes una eventual pérdida de conexión.
Cuando se pierde una conexión previamente establecida ¿salta alguna
excepción? He estado mirando el API y en el doc del método isClose() me
dice que:
* This method generally cannot be called to determine whether a
* connection to a database is valid or invalid. A typical client
* can determine that a connection is invalid by catching any
* exceptions that might be thrown when an operation is attempted.
y claro, la solución pasaría por capturar la excepción... pero no
sé cuál se lanza.
Por otro lado... esto que estoy planteando ¿es una buena forma de
implementar esta mecanismo? mi idea es capturar la excepción y
"reintentar" ¿cómo lo haríais vosotros? nunca me he pegado con
conexiones a base de datos.
Muchas gracias de antemano.
Un saludo. Ana.
************************************************************************************************************************************************
*La información contenida en este mensaje de correo electrónico es confidencial y puede revestir el carácter de reservada. *
*Está dirigida exclusivamente a la persona destinataria. *
*El acceso o cualquier uso por parte de cualquier otra persona de este mensaje no están autorizados y pueden ser ilegales.*
*Si no es Ud. la persona destinataria, le rogamos que proceda a borrarlo. *
*The information in this e-mail is confidential and may be legally privileged. *
*It is intended solely for the addressee. *
*Access or any use by any other person to this Internet e-mail is not authorised and may be unlawful. *
*If you are not the intended recipient, please delete this e-mail. *
************************************************************************************************************************************************
Tengo acceso al módulo en el que envia el e-mail a la lista.
Ya está. El servidor de correo es el encargado de distribuir el correo
entre los miembros de la lista... luego no podré saber qué direcciones
e-mail han fallado en el envío.
[.........]
EnvioMail envioMail = new EnvioMail(from,
to, cabecera, cuerpo){
public void run(){
getServletContext().log("EnvioMail::run()--> Se
llama a ejecutar()");
estado = mensaje.ejecutar(from, to, header, body);
getServletContext().log("EnvioMail::run() -->
ejecutar() ejecutado");
}
};
getServletContext().log("Inicio del hilo envioMail");
new Thread(envioMail).start();
try{
Thread.sleep(6000);
}catch(InterruptedException e){
getServletContext().log("Excepcion capturada: " +
e.getMessage());
e.printStackTrace();
}
if (envioMail.estado){
getServletContext().log("Se ha enviado correctamente el
e-mail");
out.println("Correcto");
}else{
getServletContext().log("No se ha enviado correctamente el
e-mail");
out.println("Incorrecto");
}
[.........]
David Brunstein escribió:
Hola Ana,
No se entiende bien si tenes acceso a modificar el codigo del modulo de
envio de emails o no. Si no tenes acceso, no te va a quedar otra que
hacerte otro modulo, porque como vos decis, solo tenes un resultado
booleano luego del envio de todos los mails a una lista de
distribucion.
Ahora, si sí tenes acceso a modificar el codigo, tenes muchas
posibilidades. Una es la que ya te comente. Otra es grabar un archivo o
una tabla de la base de datos, a medida que envias un email y el
estado. Luego desde la aplicacion consultas el estado de los emails
enviados, y reintentas el que no anduvo bien.
Ya... pero desde mi
aplicación sólo sé que ha fallado el envío a la lista de distribución
pero no qué cuenta en concreto es la que ha cascao.....
¿Habría alguna forma de saber esto? Porque claro... quizá me esté
despistando y busque soluciones en sitios incorrectos.
¡¡Muchas gracias!!
David Brunstein escribió:
Hola Ana,
No se muy bien como son los metodos y que devuelven, pero en principio,
en vez de devolver un boolean podes crearte una Exception en la que
especifiques la cuenta de email sobre la que hay que reintentar. Luego
con un bloque try catch, atrapas la Exception y reintentas solo sobre
esa cuenta.
Otra solucion es que en vez de devolver un boolean, retorna la cuenta
de email sobre la que dio error o, si todo anduvo bien, un String con
null value.
Tengo un problema. En la aplicación en la que trabajo hay un módulo
de envio de e-mails.
El envio de correo se puede efectuar:
- caso 1: bien a una única direccion e-mail
- caso 2: bien a una cuenta multiple o lista de distribución
(como ésta a la que escribo)
La cosa es que la comunicación con el servidor de correo a veces no
es satisfactoria (desde esta aplicación y desde cualquier cliente de
correo.... no saben qué es) y da error. Mi primera solución fue la de
poner reintentos. Y al principio todo parecía ser bastante robusto: la
aplicación no se quedaba "colgada" y el hilo lanzado para el envío de
e-mail se ejecutaba en paralelo además de realizar reintentos. Todo OK.
Hasta que empieza a haber problemas con las cuentas (caso 2)
¿Qué ocurre? Que si un e-mail se tiene que enviar a la cuenta java@yahoogroups.com
que a su vez implica un envio de correos a 5
cuentas, si una de ellas falla, el estado devuelto del envió del e-mail
es false ==> luego lo reintenta. Es decir:
Fase 1) email a
java@yahoogroups.com:
- e-mail a pepe ==> OK
- e-mal a juan ==> OK
- e-mail a rosita ==> NOOK ==> volver a fase
1 ==> volvemos a enviar los correos....
Lo reintenta con TODAS las cuentas asociadas, con lo que hay
ocasiones en que a unos les llega un correo 5 veces porque a otro le
falló el envío. .
Y no sé qué hacer.... estoy completamente en blanco.
Muchisimas gracias de antemano.
Un saludo. Ana.
************************************************************************************************************************************************
*La información contenida en este mensaje de correo electrónico es confidencial y puede revestir el carácter de reservada. *
*Está dirigida exclusivamente a la persona destinataria. *
*El acceso o cualquier uso por parte de cualquier otra persona de este mensaje no están autorizados y pueden ser ilegales.*
*Si no es Ud. la persona destinataria, le rogamos que proceda a borrarlo. *
*The information in this e-mail is confidential and may be legally privileged. *
*It is intended solely for the addressee. *
*Access or any use by any other person to this Internet e-mail is not authorised and may be unlawful. *
*If you are not the intended recipient, please delete this e-mail. *
************************************************************************************************************************************************
--
=======================
David Brunstein
Java/PB/VFP Developer
Winnipeg, MB
Canada
Before I speak, I have something important to say.
Antes de dar mi discurso, tengo algo importante que decir.
Antes de dar meu discurso, tenho algo importante para dizer.
G.M.
************************************************************************************************************************************************
*La información contenida en este mensaje de correo electrónico es confidencial y puede revestir el carácter de reservada. *
*Está dirigida exclusivamente a la persona destinataria. *
*El acceso o cualquier uso por parte de cualquier otra persona de este mensaje no están autorizados y pueden ser ilegales.*
*Si no es Ud. la persona destinataria, le rogamos que proceda a borrarlo. *
*The information in this e-mail is confidential and may be legally privileged. *
*It is intended solely for the addressee. *
*Access or any use by any other person to this Internet e-mail is not authorised and may be unlawful. *
*If you are not the intended recipient, please delete this e-mail. *
************************************************************************************************************************************************
Siempre hay que hacer algun tipo de transformación de datos entre C y Java.
La verdad que en eso no soy un experto pero es asi.
Hasta donde se no es posible usar una dll del Windows directamente de Java (Por lo menos con el de Sun con el J# no se lo tengo que investigar pero aun no tuve tiempo).
Subject: Re: [Java] Utilizar librería .dll en Java
Encontré el system.loadlibrary("filename"), pero no entiendo porque debo programar en C, si la librería ya se encuentra empaquetada para ser utilizada?
Fijate en JNI (Java Native Interface). Tenes que programar un poco en C y ademas nadie garantiza que despues esto sea portable a otro sistema Operativo.
Necesito utilizar una librería dentro de una clase, podrían orientarme como realizar la llamada desde java.
Gracias
__________________________________________________ Correo Yahoo! Espacio para todos tus mensajes, antivirus y antispam ¡gratis! Regístrate ya - http://correo.espanol.yahoo.com/
__________________________________________________ Correo Yahoo! Espacio para todos tus mensajes, antivirus y antispam ¡gratis! Regístrate ya - http://correo.espanol.yahoo.com/
bueno no puedo incluir el archivo porque no hay lugar si alguien esta
dipuesto a ayudarme me avisa y se l oenvio o vemos como hacemos.
gracias y por favor ayudenme
Bueno pid oayuda a todos los que me la puedan dar, necesito resolver
algo y no se como, se que es una boludes pero nose y lo tengo que
entregar el viernes 30/6, pro favor el que pueda me da una manito.
desde ya muchas grcias a todos.
Nacho
PD: pongo el diagrama de clases en al parte de archivos.
Porque la idea es que las llamadas a las dll las hagas desde un código C así estas seguro de las conversiones de datos y esas cosas. Puedes manipular las clases de java desde C y no estas por decir "ciego" entre Java y el DLL. Ese load library sólo sirve para cargar una libreria generada con el código fuente que te crea javah a partir de una clase con métodos nativos. Lee la dirección que te mandaron esa es la única manera estándar (y la única que conozco) de usar un dll en java. La tecnología es JNI.
Saludos,
Carlos
El mar, 27-06-2006 a las 17:39 -0500, antonio a escribió:
Encontré el system.loadlibrary("filename"), pero no entiendo porque debo programar en C, si la librería ya se encuentra empaquetada para ser utilizada?
o me equivoco?
Carlos Javier Leiro <carlos.leiro@...> escribió:
Fijate en JNI (Java Native Interface). Tenes que programar un poco en C y ademas nadie garantiza que despues esto sea portable a otro sistema Operativo.
Necesito utilizar una librería dentro de una clase, podrían orientarme como realizar la llamada desde java.
Gracias
__________________________________________________
Correo Yahoo!
Espacio para todos tus mensajes, antivirus y antispam ¡gratis!
Regístrate ya - http://correo.espanol.yahoo.com/
__________________________________________________
Correo Yahoo!
Espacio para todos tus mensajes, antivirus y antispam ¡gratis!
Regístrate ya - http://correo.espanol.yahoo.com/