Resulta que había una gordita cabrona que siempre siempre tenia que hacer algo.... ella convivía con enanito quejón que quería que la casa siempre este en orden, pero no se bancaba hacer todo solo, entonces obligaba a la gorda, a veces en malos moditos( según la gordis) a que lo ayude, pero ella siempre rezongaba!!!!
NOOOO!! QUE ESTOY TRABAJANDO
NOOOO!! QUE ESTOY ESTUDIANDO
Hasta ahí el enano se la bancaba, a veces ponía cara de orto pero se la comía... hasta que un día le pidió( quizás de mala forma) que lo ayudara a cambiar las sabanas, ojo la gorda estaba jugando( MUY MAL) al pro evolución soccer??? ¿¿¿????
Entonces se inicio un conflicto heavy, una guerra violenta de palabras donde se dijeran muchas cosas, llantos, gritos, perros negros huyendo al balcón, intentos de ir a dormir sin cenar, intentos fallidos.. que termino con la vida de un queso pategras reservado para una picada...
Conclusión: no discutir antes de cenar, puede terminar con la vida del queso pategras!
jueves, 24 de septiembre de 2009
viernes, 7 de agosto de 2009
Mathix - Successions
Mi segundo juego Flash está terminado.
La idea es llenar el número faltante en la sucesión matemática.
La idea es llenar el número faltante en la sucesión matemática.
Etiquetas:
casual,
flash,
game,
matemática,
math,
successions,
sucesiones
sábado, 11 de julio de 2009
viernes, 12 de junio de 2009
viernes, 3 de abril de 2009
Un Hombre de Bronce
Raúl Ricardo Alfonsín, primer presidente argentino desde la recuperación de la democracia en 1983, falleció el martes 31 de marzo.
Si existiera la posibilidad de poner su vida en dos columnas, en la del "debe" se encontrarían una extraña amistad con Galtieri, las leyes de obediencia debida y punto final y el pacto de Olivos con Carlos Menem. En la columna del "haber" de este auténtico héroe de la democracia, encontraríamos que fue el primer presidente en toda América Latina en juzgar a los militares golpistas asesinos que lo precedieron, jamás hubo ninguna expresión de censura durante su gobierno, salió del gobierno con el mismo patrimonio con el que entró. Alfonsín fue, además, el último gran orador de la política argentina.
Como diría Dostoievski a través de Raskolnikoff en "Crimen y Castigo": "... esos hombres están hechos de bronce, no de carne."
lunes, 30 de marzo de 2009
Sistema Monetario
Este fin de semana vi las dos películas de la saga Zeitgeist.
Ambas películas hablan de cómo las grandes corporaciones manejan a su antojo lo que pasa en nuestro planeta utilizando a los Estados Unidos como brazo ejecutor de sus planes, sobre todo, en Latinoamérica.
Estos documentales han conmovido a muchas personas de mi entorno y de ellos me han llegado elogiosos comentarios. Sin embargo, lo que ellos cuentan, ha sido transmitido previamente por Pino Solanas en La Hora de Los Hornos(1968) y posteriormente por Eduardo Galeano en Las Venas Abiertas de América Latina(1971).
Etiquetas:
independencia,
latinoamérica
jueves, 19 de marzo de 2009
Marcha de los seguros inseguros
Ellos están asustados. Desde sus autos blindados y casas amuralladas, ellos tienen miedo.
Tienen miedo de ser asaltados, violados o golpeados. Tienen miedo a ser como nosotros, quizás su mayor flagelo.
Piden que el que mate muera desconociendo cuántos niños dejan de jugar en la Tierra por día a causa del hambre. Cuántos de ellos, tras vivir sus primeros años en condiciones paupérrimas, no pueden luego ni siquiera pensar. Cuántos de sus propios empleados necesitan cubrir sus necesidades básicas y, sin embargo, los tienen en negro. Porque desconocer estos datos es negarlos. Negar esta realidad genera violencia. En definitiva, son coautores de esa inseguridad que piden que termine.
Creen que el pagar sus impuestos los hacen mejores que aquéllos que no pueden.
Creen que el problema de la inseguridad se soluciona "metiendo bala". Es que eso es más fácil de asociar que pensar que los asaltantes y drogadictos se van a terminar cuando el pueblo tenga acceso a la educación, al trabajo, a la salud; que ésa es la tarea que tiene que encarar el Estado y que debemos controlar nosotros como sociedad. Sociedad que posee el elemento más importante de la democracia: el voto.
Cuando gritan "el que mata tiene que morir" ¿son concientes de lo que dicen? ¿Son un instrumento más de la derecha para "sacar los tanques"?¿Son idiotas o hijos de puta?
Ellos, que se dicen inseguros, están seguros de algo: mano dura.
Ellos, que se dicen inseguros, están seguros de algo: mano dura.
Nosotros, ubicados en un nivel inferior en la escala económica (y- según ellos- también en la evolutiva) estamos condenados a ser destinatarios de ese accionar violento.
Etiquetas:
argentina,
latinoamérica
lunes, 16 de marzo de 2009
Flex + Web Services
Declaramos el web service.
...
<mx:Script>
<![CDATA[
import mx.controls.Alert;
]]>
</mx:Script>
<mx:WebService
id="service"
wsdl="services/TestService?wsdl"
service="TestService"
port="TestServiceHttpPort">
<mx:operation name="echo"
fault="Alert.show(event.fault.faultString)"
result="Alert.show(event.target.lastResult)">
<mx:request>
<text>{inputText.text}</text>
</mx:request>
</mx:operation>
</mx:WebService>
<mx:TextInput x="229" y="8" id="inputText"/>
<mx:Button x="397" y="8" label="Echo" click="{service.echo.send()}"/>
...
inputText es un campo de texto (tipo TextInput de ActionScript).
El ejemplo es simple y claro como para que no se necesite más.
El servicio "TestService.echo" va a devolver la palabra ingresada en el campo "inputText" mostrándola en un popup.
El servicio "TestService.echo" va a devolver la palabra ingresada en el campo "inputText" mostrándola en un popup.
Etiquetas:
flex,
web services
martes, 10 de marzo de 2009
Independiente
Domingo 8 de marzo.
Independiente enfrenta en condición de local (en cancha de Huracán) a Boca.
Banderas de Bolivia y Paraguay y escudos de Boca inundan la tribuna del Rojo.
Muy gracioso.
Folclore del fútbol, que le dicen.
"Rolfi" Montenegro emboca dos pepas. Independiente 2, Boca 0.
Martes 10 de marzo.
Por la mañana, escuchando la radio, me entero de que Sergio Pezzota, réferi del encuentro, tiene que ir a declarar por discriminación. "No debería haber empezado el segundo tiempo con las banderas ahí" sentenció el INADI (ente que defiende a ciudadanos contra la discriminación).
¿Es discriminatorio decirle a un hincha de Boca que es boliviano o paraguayo?
Sin dudas sí es discriminatorio decir que asociar a alguien con Bolivia o Paraguay es discriminatorio.
Independiente enfrenta en condición de local (en cancha de Huracán) a Boca.
Banderas de Bolivia y Paraguay y escudos de Boca inundan la tribuna del Rojo.
Muy gracioso.
Folclore del fútbol, que le dicen.
"Rolfi" Montenegro emboca dos pepas. Independiente 2, Boca 0.
Martes 10 de marzo.
Por la mañana, escuchando la radio, me entero de que Sergio Pezzota, réferi del encuentro, tiene que ir a declarar por discriminación. "No debería haber empezado el segundo tiempo con las banderas ahí" sentenció el INADI (ente que defiende a ciudadanos contra la discriminación).
¿Es discriminatorio decirle a un hincha de Boca que es boliviano o paraguayo?
Sin dudas sí es discriminatorio decir que asociar a alguien con Bolivia o Paraguay es discriminatorio.
Etiquetas:
discriminación
viernes, 27 de febrero de 2009
Cambiar usuario y password de Subclipse bajo Window$
Esta entrada fue movida a mi blog de Programación Java
jueves, 26 de febrero de 2009
Spring + Hibernate + Llamadas a Stored Procedures
En un nuevo proyecto, me encontré con que sólo tengo acceso a la Base de Datos a través de llamadas a Stored Procedures y Funciones.
Como me resultó un poco tedioso, les mando un paso a paso de lo que hice:
1. Crear la llamada a la función; en este caso, una NamedNativeQuery:
@Entity
@NamedNativeQueries(value={@NamedNativeQuery( callable=true
,name="USER_PKG.fetchUsers"
,query="{ ? = call USER_PKG.fetchUsers(:code, :userName) }"
,resultClass=User.class
)}
)
public class User implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
private Long code;
@Column(name="nombre_usuario")
private String userName;
//Continúa el código
...
}
2. En el DAO (o lo que sea que tengan para acceder a la BD) hice lo siguiente:
...
@SuppressWarnings("unchecked")
public List fetchUsers(final long code, final String userName) {
return (List) getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(final Session session) throws HibernateException, SQLException {
Query query = session.getNamedQuery("USER_PKG.fetchUsers");
query.setParameter("code", code)
.setParameter("userName", userName);
return query.list();
}
});
}
...
3. Finalmente, un caso de prueba para cerrar el ciclo:
...
public void testFetchUsers() {
Long code = new Long(10);
List queryResult = dao.fetchUsers(code, "yo");
for (User user : queryResult) {
assertEquals(code,user.getCode());
}
}
...
Espero que sirva de algo. Yo estuve un rato largo para hacerlo andar =P.
Como me resultó un poco tedioso, les mando un paso a paso de lo que hice:
1. Crear la llamada a la función; en este caso, una NamedNativeQuery:
@Entity
@NamedNativeQueries(value={@NamedNativeQuery( callable=true
,name="USER_PKG.fetchUsers"
,query="{ ? = call USER_PKG.fetchUsers(:code, :userName) }"
,resultClass=User.class
)}
)
public class User implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
private Long code;
@Column(name="nombre_usuario")
private String userName;
//Continúa el código
...
}
2. En el DAO (o lo que sea que tengan para acceder a la BD) hice lo siguiente:
...
@SuppressWarnings("unchecked")
public
return (List
public Object doInHibernate(final Session session) throws HibernateException, SQLException {
Query query = session.getNamedQuery("USER_PKG.fetchUsers");
query.setParameter("code", code)
.setParameter("userName", userName);
return query.list();
}
});
}
...
3. Finalmente, un caso de prueba para cerrar el ciclo:
...
public void testFetchUsers() {
Long code = new Long(10);
List
for (User user : queryResult) {
assertEquals(code,user.getCode());
}
}
...
Espero que sirva de algo. Yo estuve un rato largo para hacerlo andar =P.
Etiquetas:
hibernate,
java,
namednativequeries,
spring
martes, 24 de febrero de 2009
Conflicto con El Campo
Mientras la mesa de enlace tiene la cabeza puesta en convertirse en la oposición al Gobierno, fracturas internas dentro de la Federación Agraria y la Sociedad Rural demuestran que no todos tienen los mismos intereses.
La Sociedad Rural, fortalecida como nunca en cuanto a su imagen va por lugares en las cámaras de diputados y senadores. Son coherentes, esta vez saben que pueden y se quieren llevar todo.
La Federación Agraria vive un duelo interno, una lucha por ver quién será su próximo representante en las elecciones, su Robin Hood (¿o Hood Robin?): Buzzi o De Ángeli.
Sequía:
Según datos de la Agencia Agropecuaria no todas las zonas fueron afectadas por la sequía. Sin dudar ni por un instante que aquellos perjudicados por la falta de lluvias deben ser subsidiados, quienes no sufrieron pérdidas no deben recibir beneficio alguno. ¿Por qué recibirlos? ¿No quiere el campo un trato especial?¿No son ellos quienes agitan banderas argentinas mientras los verdaderos patriotas- sus peones- están, en un 80%, empleados en negro?
Banderas:
Con respecto a esta última cuestión, para la próxima, los representantes del campo deberían alzar banderas que digan Rodríguez, Fernández y cada uno de sus apellidos.
Porque no nos representan como argentinos, y menos aún representan a los más de veinte millones de seres humanos que se encuentran en situación de pobreza, mientras ellos- gorditos rubios de camisas Legacy y alpargatas- agitan nuestra bandera para defender su propia causa.
La Sociedad Rural, fortalecida como nunca en cuanto a su imagen va por lugares en las cámaras de diputados y senadores. Son coherentes, esta vez saben que pueden y se quieren llevar todo.
La Federación Agraria vive un duelo interno, una lucha por ver quién será su próximo representante en las elecciones, su Robin Hood (¿o Hood Robin?): Buzzi o De Ángeli.
Sequía:
Según datos de la Agencia Agropecuaria no todas las zonas fueron afectadas por la sequía. Sin dudar ni por un instante que aquellos perjudicados por la falta de lluvias deben ser subsidiados, quienes no sufrieron pérdidas no deben recibir beneficio alguno. ¿Por qué recibirlos? ¿No quiere el campo un trato especial?¿No son ellos quienes agitan banderas argentinas mientras los verdaderos patriotas- sus peones- están, en un 80%, empleados en negro?
Banderas:
Con respecto a esta última cuestión, para la próxima, los representantes del campo deberían alzar banderas que digan Rodríguez, Fernández y cada uno de sus apellidos.
Porque no nos representan como argentinos, y menos aún representan a los más de veinte millones de seres humanos que se encuentran en situación de pobreza, mientras ellos- gorditos rubios de camisas Legacy y alpargatas- agitan nuestra bandera para defender su propia causa.
jueves, 19 de febrero de 2009
Tartagal
La ineludible avalancha de vicios asesinos que aparecen en nombre de la civilización nos demuestra irrevocablemente qué poco aprendimos, en nuestra eterna lucha por no pertenecer a donde nacimos, de los que día a día pretenden- en vano- ser legítimos dueños de su tierra que ya no es ni volverá a ser la de sus antepasados.
Los brotes letales de fiebres maderera y sojera han dejado pobreza, muerte, cambios climáticos y tierra seca (en el mejor de los casos).
Las inundaciones en Tartagal demuestran que la reglamentación de la Ley de Bosques de Miguel Bonasso era necesaria. Que, por miedo a tocarle el bolsillo a los poderosos, estábamos hipotecando nuestras vidas y la de nuestros descendientes.
La escena se plantea en un marco donde los funcionarios creen que política y negocios van de la mano, que los países latinoamericanos deben depender del monocultivo. ¿Es así? ¿Es ése el camino del desarrollo? ¿Que se enriquezcan los terratenientes, los propietarios y que el pueblo muera de hambre o durante un alud? ¿Se puede hacer un uso racional de los recursos (LIMITADOS) del planeta como hacían los antiguos habitantes de estas tierras?
Los brotes letales de fiebres maderera y sojera han dejado pobreza, muerte, cambios climáticos y tierra seca (en el mejor de los casos).
Las inundaciones en Tartagal demuestran que la reglamentación de la Ley de Bosques de Miguel Bonasso era necesaria. Que, por miedo a tocarle el bolsillo a los poderosos, estábamos hipotecando nuestras vidas y la de nuestros descendientes.
La escena se plantea en un marco donde los funcionarios creen que política y negocios van de la mano, que los países latinoamericanos deben depender del monocultivo. ¿Es así? ¿Es ése el camino del desarrollo? ¿Que se enriquezcan los terratenientes, los propietarios y que el pueblo muera de hambre o durante un alud? ¿Se puede hacer un uso racional de los recursos (LIMITADOS) del planeta como hacían los antiguos habitantes de estas tierras?
Etiquetas:
argentina,
latinoamérica
miércoles, 18 de febrero de 2009
Luces
Llegar al puerto de Buenos Aires por la noche debe ser uno de los espectáculos más hermosos de estas latitudes. La atractiva iluminación de sus modernos y altísimos edificios es tan bella que parece creada por la naturaleza y no por el hombre.
Estas construcciones, que por las noches nos reciben con elegancia y sofisticación mientras la ciudad duerme, durante el día sirven de escenario para que el progreso continúe: corrupción, miseria y desigualdad son algunas de las bondades que éste acentúa mientras arrolla todos los seres que se le interpongan y sus sueños.
Estas construcciones, que por las noches nos reciben con elegancia y sofisticación mientras la ciudad duerme, durante el día sirven de escenario para que el progreso continúe: corrupción, miseria y desigualdad son algunas de las bondades que éste acentúa mientras arrolla todos los seres que se le interpongan y sus sueños.
Etiquetas:
argentina,
latinoamérica
miércoles, 11 de febrero de 2009
Elecciones
"Por ese gran argentino, que se supo conquistar, a la gran masa del pueblo, combatiendo al capital" No, no estoy hablando de Juan Domingo sino de Lucas Agustín, ganador de las elecciones para el comité de empresa de Effico.
Sindicato Libre de Trabajadores de Madrid 84 votos
UGT 62 votos
Comisiones Obreras 30 votos
Ahora, a descansar... digo, eh, si, este, a trabajar...
P.D. Perdón, nico, pero tenía que poner algo.
Sindicato Libre de Trabajadores de Madrid 84 votos
UGT 62 votos
Comisiones Obreras 30 votos
Ahora, a descansar... digo, eh, si, este, a trabajar...
P.D. Perdón, nico, pero tenía que poner algo.
Etiquetas:
Elecciones,
Perón,
Revolución,
Sindicalismo
(Falta de) Inspiración
Hace días que Raskolnikoff asesinó a la usuarera, que Galeano no me moviliza, que la creación del mundo Quiché terminó para mí. Hace días que, obsesivo con esto como soy, estoy enfrascado en un problema de laburo al que no le puedo escapar ni en sueños.
Se nota un desmejoramiento en mis posts (que, por otro lado, nunca fueron gran cosa) y es debido a que hace días que no saco mi cabeza de Java, JSF y AJAX para ponerla en algo que me haga sentir HUMANO.
Se nota un desmejoramiento en mis posts (que, por otro lado, nunca fueron gran cosa) y es debido a que hace días que no saco mi cabeza de Java, JSF y AJAX para ponerla en algo que me haga sentir HUMANO.
lunes, 9 de febrero de 2009
Software tercerizado
Los países desarrollados desarrollan productos.
¿Los países subdesarrollados, donde los primeros tercerizan su producción, subdesarrollan?
¿Los países subdesarrollados, donde los primeros tercerizan su producción, subdesarrollan?
Etiquetas:
software
miércoles, 4 de febrero de 2009
Comité de Empresa
Guerra, hambre, pobreza...
.... pero la vida sigue.
El miércoles 11 de Febrero, elecciones para el comité de empresa. Lucas cabeza de lista. "La clase obrera es lo mejor. Burgueses, atrás, atrás, atrás".
Votalo a Cavallo!
Más noticias en los próximos días....
.... pero la vida sigue.
El miércoles 11 de Febrero, elecciones para el comité de empresa. Lucas cabeza de lista. "La clase obrera es lo mejor. Burgueses, atrás, atrás, atrás".
Votalo a Cavallo!
Más noticias en los próximos días....
Etiquetas:
Perón,
Revolución,
Sindicalismo
lunes, 2 de febrero de 2009
Receta: Independencia latinoamericana
Ingredientes:
entre 10 y 15 presidentes latinoamericanos.
realidades distintas, a gusto.
1 meta en común: marcar el rumbo del nuevo mundo tras el zafarrancho del Capital en el último año.
Preparación:
Batir una nueva generación de funcionarios públicos y gobernantes hasta que se mezclen con el pueblo, dejen de lado sus intereses personales, de robar, de vender la tierra del pueblo a extranjeros.
Una vez que los gobernantes se fundan con el pueblo y entiendan que somos todos una sola cosa y que Latinoamérica va a despegar cuando tomen medidas con y para el pueblo, cocinar la independencia de la región a fuego lento.
entre 10 y 15 presidentes latinoamericanos.
realidades distintas, a gusto.
1 meta en común: marcar el rumbo del nuevo mundo tras el zafarrancho del Capital en el último año.
Preparación:
Batir una nueva generación de funcionarios públicos y gobernantes hasta que se mezclen con el pueblo, dejen de lado sus intereses personales, de robar, de vender la tierra del pueblo a extranjeros.
Una vez que los gobernantes se fundan con el pueblo y entiendan que somos todos una sola cosa y que Latinoamérica va a despegar cuando tomen medidas con y para el pueblo, cocinar la independencia de la región a fuego lento.
Etiquetas:
independencia,
latinoamérica
domingo, 1 de febrero de 2009
Toda la bronca del mundo
La crisis de 2008 trajo consigo que él perdiera su cargo como gerente de un importante banco internacional.
Mientras esperaba encontrar otra cosa, salía con un Martini a observar la ciudad desde su balcón terraza.
El tiempo pasaba y ninguno de los trabajos que le ofrecían estaba a su altura. Él seguía esperando; "la oportunidad llegará", se decía.
Las membresías de sus exclusivos clubes y fraternidades se hicieron impagables. Se tuvo que deshacer de su chofer, de su automóvil, de su sirvienta.
Aprendió a vivir sin coche, a caminar, a hablar con la gente. Así conoció al diariero, al almacenero, se volvió a contactar con compañeros del colegio.
Se sentía ajeno. Ellos eran felices, sí. Pero nunca tuvieron lo que él había sostenido, nunca estuvieron en la cima del mundo empresarial, nunca viajaron al extranjero. Pero eran felices.
Luego fue más allá e hizo lo que no muchos hacemos: pensó.
Al pensar notó que todo lo que hablaba aquélla gente no le interesaba. Que esa gente, como animales (que somos) sólo sobrevivía.
Al pensar descubrió que la realidad no había cambiado. Que vivía en carne propia lo que él mismo había ayudado a construir.
Otra vez salió al balcón, pero sin Martini. Miró la ciudad desde ahí.
Abrió su mano y cerró el puño como si en su palma pudiera encerrar, no sólo su ira sino, toda la bronca del mundo.
Eso no alcanzó.
La caída fue el purgatorio; el impacto, el paraíso.
Mientras esperaba encontrar otra cosa, salía con un Martini a observar la ciudad desde su balcón terraza.
El tiempo pasaba y ninguno de los trabajos que le ofrecían estaba a su altura. Él seguía esperando; "la oportunidad llegará", se decía.
Las membresías de sus exclusivos clubes y fraternidades se hicieron impagables. Se tuvo que deshacer de su chofer, de su automóvil, de su sirvienta.
Aprendió a vivir sin coche, a caminar, a hablar con la gente. Así conoció al diariero, al almacenero, se volvió a contactar con compañeros del colegio.
Se sentía ajeno. Ellos eran felices, sí. Pero nunca tuvieron lo que él había sostenido, nunca estuvieron en la cima del mundo empresarial, nunca viajaron al extranjero. Pero eran felices.
Luego fue más allá e hizo lo que no muchos hacemos: pensó.
Al pensar notó que todo lo que hablaba aquélla gente no le interesaba. Que esa gente, como animales (que somos) sólo sobrevivía.
Al pensar descubrió que la realidad no había cambiado. Que vivía en carne propia lo que él mismo había ayudado a construir.
Otra vez salió al balcón, pero sin Martini. Miró la ciudad desde ahí.
Abrió su mano y cerró el puño como si en su palma pudiera encerrar, no sólo su ira sino, toda la bronca del mundo.
Eso no alcanzó.
La caída fue el purgatorio; el impacto, el paraíso.
jueves, 29 de enero de 2009
VAAAAAMOOOSSSS Adolf!!!
"Ante los anuncios de recortes de plantel de la firma de Redmond (Microsoft) un congresal republicano solicitó despedir a los empleados extranjeros que tengan visas temporarias" (http://www.lanacion.com.ar/nota.asp?nota_id=1093865)
En el país de las oportunidades, parece que el Tío Sam no quiere ver cristalizadas las ilusiones de los extranjeros.
Si no naciste en suelo estadounidense, no sirve.
¡Qué suerte que los Estados Unidos bregan contra los regímenes discriminadores y autoritarios del mundo!
¿No será que están tan ocupados liberando a los afganos a los iraquíes, a los pakistaníes (y la lista sigue) que no se dieron cuenta de liberarse ellos mismos?
En el país de las oportunidades, parece que el Tío Sam no quiere ver cristalizadas las ilusiones de los extranjeros.
Si no naciste en suelo estadounidense, no sirve.
¡Qué suerte que los Estados Unidos bregan contra los regímenes discriminadores y autoritarios del mundo!
¿No será que están tan ocupados liberando a los afganos a los iraquíes, a los pakistaníes (y la lista sigue) que no se dieron cuenta de liberarse ellos mismos?
Etiquetas:
discriminación,
usa
martes, 27 de enero de 2009
Boludo
- Hola Lucas.
- Hola Alvaro.
- ¿Tienes que hacer algo la próxima semana?
- La verdad es que no, estoy al pedo.
- Perfecto, necesito que me hagas un trabajo de 20 páginas de Teoría y Práctica de la Democracia para el miércoles. Es fácil, ya sabes, los griegos, Roma, Schumpeter, Huntington, Michels.
- Ehhh, bueno, este, si, no sé, en fin..
- Muchas gracias. Sabía que me ibas a ayudar. Un abrazo.
(nota mental: nunca decirle a Alvaro que no tenés nada que hacer)
jueves, 22 de enero de 2009
Guarismo
1. m. Cada uno de los signos o cifras arábigas que expresan una cantidad.
2. Cantidad expresada por medio de dos o más cifras.
"Fecha incorrecta en el salvado por guarismos".
La piedra que tengo encima quedó evidenciada esta mañana cuando desde la página del banco pude comprobar que había rebotado el cheque.
¿Puede ser que en el departamento de administración de una empresa no sepan llenar un cheque?
¿Puedo tener tanta mala leche que esta gente justo se equivoque en un cheque y que justo ése sea el mío?
¡Qué piedra! ¡La puta madre! ¡Qué piedra!
2. Cantidad expresada por medio de dos o más cifras.
"Fecha incorrecta en el salvado por guarismos".
La piedra que tengo encima quedó evidenciada esta mañana cuando desde la página del banco pude comprobar que había rebotado el cheque.
¿Puede ser que en el departamento de administración de una empresa no sepan llenar un cheque?
¿Puedo tener tanta mala leche que esta gente justo se equivoque en un cheque y que justo ése sea el mío?
¡Qué piedra! ¡La puta madre! ¡Qué piedra!
Etiquetas:
cheque,
liquidación
lunes, 19 de enero de 2009
Mi viaje a Guatemala
Esutve diez días en Tierras Mayas.
En la Tierra de los Mayas encontré también que los que descienden de estos son el 65% de la población.
En SU tierra, los descendientes de los Mayas reclaman suelo para trabajar.
Los mestizos odian a los indígenas porque estos últimos no pagan impuestos y usan la escuela y la salud públicas.
Los indígenas odian a los mestizos porque comen todos los días y tienen dinero para pagar impuestos mientras ellos apenas subsisten.
A veces da la impresión de que los ricos y las grandes empresas son los únicos que tienen las cosas claras, están unidos y se llevan todo. Los pobres, sin embargo, peleamos entre nosotros por las migajas.
En la Tierra de los Mayas encontré también que los que descienden de estos son el 65% de la población.
En SU tierra, los descendientes de los Mayas reclaman suelo para trabajar.
Los mestizos odian a los indígenas porque estos últimos no pagan impuestos y usan la escuela y la salud públicas.
Los indígenas odian a los mestizos porque comen todos los días y tienen dinero para pagar impuestos mientras ellos apenas subsisten.
A veces da la impresión de que los ricos y las grandes empresas son los únicos que tienen las cosas claras, están unidos y se llevan todo. Los pobres, sin embargo, peleamos entre nosotros por las migajas.
Etiquetas:
conflicto,
guatemala,
latinoamérica,
viajes
viernes, 16 de enero de 2009
Andrés
Santiago Atitlán, 11 de enero, 12:15.
Me tocan la espalda.
- Ya me gasté el dinero- dice un pequeño.
- ¿En serio? ¿En qué te los gastaste?- contesto con insólito y estúpido tono paternal.
- Una sandía y un ahuacate. Ya almorcé- me cuenta Andrés.
Andrés vive en Santiago. Tiene unos siete años y habla cinco idiomas.
Andrés pide dinero en las calles a los turistas.
Los cinco quetzales que le di aquella mañana se convirtieron en la única comida de su día.
Me tocan la espalda.
- Ya me gasté el dinero- dice un pequeño.
- ¿En serio? ¿En qué te los gastaste?- contesto con insólito y estúpido tono paternal.
- Una sandía y un ahuacate. Ya almorcé- me cuenta Andrés.
Andrés vive en Santiago. Tiene unos siete años y habla cinco idiomas.
Andrés pide dinero en las calles a los turistas.
Los cinco quetzales que le di aquella mañana se convirtieron en la única comida de su día.
Etiquetas:
atitlán,
guatemala,
latinoamérica,
viajes
sábado, 10 de enero de 2009
Ciudad de Guatemala: Indígenas Centroamericanos, Mapa en Relieve y Embajada Invisible de los Estados Unidos
Llegamos el 9 a la tarde tras un viaje de 13 horas. Por tal motivo se nos hizo imposible ver mucho aquel día.
Hoy nos levantamos temprano y aprovechamos la mañana para desayunar y recorrer el museo Popol Vuh (algo así como "Libro de la comunidad") y conocimos bastante del arte y la vida de las culturas precolombinas. Luego paseamos por las zonas 10 y 4, donde encontramos la Torre del Reformador (réplica de la Torre Eiffel).
El Mapa en Relieve fue nuestra primera visita de la tarde. Apreciamos Guatemala en relieve y a escala: muy original.
Luego fuimos a la Plaza Principal donde conocimos el Palacio de Gobierno y la Catedral (aunque no por dentro ya que estaban cerrados). Sin intención participamos de una Marcha Cristiana por la Paz
Algo en común que tenemos todas las republiquetas latinoamericanas (salvo Cuba, único territorio libre de América Latina) son las riquezas naturales y las grandes embajadas de Estados Unidos. Ésta última no puede ser fotografiada.
Hoy nos levantamos temprano y aprovechamos la mañana para desayunar y recorrer el museo Popol Vuh (algo así como "Libro de la comunidad") y conocimos bastante del arte y la vida de las culturas precolombinas. Luego paseamos por las zonas 10 y 4, donde encontramos la Torre del Reformador (réplica de la Torre Eiffel).
El Mapa en Relieve fue nuestra primera visita de la tarde. Apreciamos Guatemala en relieve y a escala: muy original.
Luego fuimos a la Plaza Principal donde conocimos el Palacio de Gobierno y la Catedral (aunque no por dentro ya que estaban cerrados). Sin intención participamos de una Marcha Cristiana por la Paz
Algo en común que tenemos todas las republiquetas latinoamericanas (salvo Cuba, único territorio libre de América Latina) son las riquezas naturales y las grandes embajadas de Estados Unidos. Ésta última no puede ser fotografiada.
Etiquetas:
guatemala,
latinoamérica,
viajes
viernes, 9 de enero de 2009
El Cheque
La.
La liquidación.
La liquidación final.
La liquidación final de mi trabajo anterior.
Ayer encontré el cheque. Me olvidé de cobrarlo. Lleva seis meses vencido.
Qué boludo! No puedo creer que se me haya pasado.
Qué boludo! No puedo creer.
Qué boludo!
Qué.
La liquidación.
La liquidación final.
La liquidación final de mi trabajo anterior.
Ayer encontré el cheque. Me olvidé de cobrarlo. Lleva seis meses vencido.
Qué boludo! No puedo creer que se me haya pasado.
Qué boludo! No puedo creer.
Qué boludo!
Qué.
Etiquetas:
boludo,
cheque,
liquidación
martes, 6 de enero de 2009
Clasificador de Texto (Näive Bayes + Weka): Parte 1
Nota: Esta entrada fue migrada a mi nuevo sitio de Programación Java.
La clasificación de textos puede ser muy útil para varias tareas. Tomemos, por ejemplo, la tarea de distinguir entre distintos sitios de internet cuáles son interesantes para mí o identificar a qué categoría (éstas podrían ser: policiales, deportes, internacionales, etc) pertenece un determinado texto.
Antispam
Para este pequeñíiiiiiiiisimo (y muy simple) ejemplo, vamos a utilizar Näive Bayes (NB) como algoritmo de clasificación por ser uno de los métodos de aprendizaje más fáciles de implementar y uno de los más efectivos para clasificación de textos.
La herramienta para llevar a cabo la clasificación será Weka
Para este caso particular vamos a asumir que hay independencia entre las palabras cosa que NO es cierta. En nuestro caso, este clasificador dará como iguales las frases "no quiero, no quiero, no quiero" y "quiero! quiero! quiero! no! no! no!".
Codificación de ejemplos:
Set de entrenamiento (training-set.csv):
text,class
'hey, buy this from me!',SPAM
'do you want to buy?',SPAM
'I have a party tonight!',NO_SPAM
'today it is a nice weather',NO_SPAM
'you are best',SPAM
'I have a horse',NO_SPAM
'you are my friend',NO_SPAM
'buy, buy, buy',SPAM
'it is spring in the air',NO_SPAM
'do you want to come?',NO_SPAM
Set de pruebas (test-set.csv):
text,class
'you want to buy from me?',?
'usually I run in stairs',?
'buy it now!',?
'buy, buy, buy!',?
'you are the best, buy!',?
'it is spring in the air',?
Filtros:
Abrimos el Weka.
En Filter, presionamos "Choose" y seleccionamos "Miltifilter", ahí mismo, seleccionamos dos filtros más que irán combinados por acción del primero: NominalToString y StringToWordVector.
No voy a explicar mucho este último filtro y lo voy a utilizar con su configuración estándar, pero jueguen con él y prueben distintas cosas.
Den "Apply" para aplicar el filtro.
Clasificación
Una vez hecho esto, vamos a la solapa de "Classify".
Seleccionanos "Naive Bayes" como clasificador (weka -> classifiers -> bayes -> Naive Bayes).
Seleccionamos "Use training set" y "(Nom) class", para que clasifique en función de ese atributo (que es la clase).
100%. Bueno, ya tenemos la primera parte =P.
CONTINUARÁ...
Referencia:
El ejemplo lo saqué de http://www.hakank.org/weka/.
Antispam
Para este pequeñíiiiiiiiisimo (y muy simple) ejemplo, vamos a utilizar Näive Bayes (NB) como algoritmo de clasificación por ser uno de los métodos de aprendizaje más fáciles de implementar y uno de los más efectivos para clasificación de textos.
La herramienta para llevar a cabo la clasificación será Weka
Para este caso particular vamos a asumir que hay independencia entre las palabras cosa que NO es cierta. En nuestro caso, este clasificador dará como iguales las frases "no quiero, no quiero, no quiero" y "quiero! quiero! quiero! no! no! no!".
Codificación de ejemplos:
Set de entrenamiento (training-set.csv):
text,class
'hey, buy this from me!',SPAM
'do you want to buy?',SPAM
'I have a party tonight!',NO_SPAM
'today it is a nice weather',NO_SPAM
'you are best',SPAM
'I have a horse',NO_SPAM
'you are my friend',NO_SPAM
'buy, buy, buy',SPAM
'it is spring in the air',NO_SPAM
'do you want to come?',NO_SPAM
Set de pruebas (test-set.csv):
text,class
'you want to buy from me?',?
'usually I run in stairs',?
'buy it now!',?
'buy, buy, buy!',?
'you are the best, buy!',?
'it is spring in the air',?
Filtros:
Abrimos el Weka.
En Filter, presionamos "Choose" y seleccionamos "Miltifilter", ahí mismo, seleccionamos dos filtros más que irán combinados por acción del primero: NominalToString y StringToWordVector.
No voy a explicar mucho este último filtro y lo voy a utilizar con su configuración estándar, pero jueguen con él y prueben distintas cosas.
Den "Apply" para aplicar el filtro.
Clasificación
Una vez hecho esto, vamos a la solapa de "Classify".
Seleccionanos "Naive Bayes" como clasificador (weka -> classifiers -> bayes -> Naive Bayes).
Seleccionamos "Use training set" y "(Nom) class", para que clasifique en función de ese atributo (que es la clase).
100%. Bueno, ya tenemos la primera parte =P.
CONTINUARÁ...
Referencia:
El ejemplo lo saqué de http://www.hakank.org/weka/.
Etiquetas:
java,
machine learning,
näive bayes,
weka
Snowball Stemmer en Español para Weka
Nota: Esta entrada fue migrada a mi nuevo sitio de Programación Java.
Para utilizar Snowball Stemmer en Español con Weka deben:
a) Bajar el Jar de Snowball (http://www.cs.waikato.ac.nz/~ml/weka/stemmers/snowball.jar).
b) Guardarlo en el directorio raíz del Weka.
c) Agregar el texto en negrita a la siguiente entrada en el archivo RunWeka.ini:
cp=%CLASSPATH%;snowball.jar
Al seleccionar el filtro "StringToWordVector" aparece "Stemmer Chose". Al hacer click sobre el botón "Choose" se despliegan distintas posibilidades entre la que está "Snowball". Editamos la única propiedad que tiene: en el "text box" colocamos "spanish" (sin las comillas).
Cuando uno utiliza Stemmer + Blacklist, el filtro "StringToWordVector" aplica primero el stemming y luego filtra con la lista de palabras prohibidas.
Deben tener en cuenta, entonces, escribir las raíces de las palabras en la blacklist, si se va a utilizar esta modalidad.
Teniendo en cuenta esta restricción, lo que pueden hacer es primero filtrar las palabras de la list negra (por fuera del Weka) y luego aplicar stemmer sin setearle la opción antes mencionada.
Link en inglés: http://weka.sourceforge.net/wekadoc/index.php/en:Stemmers_(3.5.2)
a) Bajar el Jar de Snowball (http://www.cs.waikato.ac.nz/~ml/weka/stemmers/snowball.jar).
b) Guardarlo en el directorio raíz del Weka.
c) Agregar el texto en negrita a la siguiente entrada en el archivo RunWeka.ini:
cp=%CLASSPATH%;snowball.jar
Al seleccionar el filtro "StringToWordVector" aparece "Stemmer Chose". Al hacer click sobre el botón "Choose" se despliegan distintas posibilidades entre la que está "Snowball". Editamos la única propiedad que tiene: en el "text box" colocamos "spanish" (sin las comillas).
Cuando uno utiliza Stemmer + Blacklist, el filtro "StringToWordVector" aplica primero el stemming y luego filtra con la lista de palabras prohibidas.
Deben tener en cuenta, entonces, escribir las raíces de las palabras en la blacklist, si se va a utilizar esta modalidad.
Teniendo en cuenta esta restricción, lo que pueden hacer es primero filtrar las palabras de la list negra (por fuera del Weka) y luego aplicar stemmer sin setearle la opción antes mencionada.
Link en inglés: http://weka.sourceforge.net/wekadoc/index.php/en:Stemmers_(3.5.2)
Pasos para utilizar JBossWS Con Seguridad a Nivel Mensaje
Nota: Esta entrada fue migrada a mi nuevo sitio de Programación Java.
Instalar JBossAS 4.2.3.GA
Para instalar JbossAS 4.2.3.GA:
• Ingresar a http://www.jboss.org/jbossas/downloads/
• Buscar la versión deseada (en nuestro caso, 4.2.3.GA).
• Hacer click en “Download”
• Descomprimir el zip en algún lugar del disco siendo ésa, nuestra carpeta de instalación (desde acá, nos referiremos a la carpeta de instalación de JBoss como JBOSS_HOME)
Instalar JbossWS 3.0.5.GA
La versión 4.2.3.GA de JBoss viene con jbossws-3.0.1.GA.
Para instalar la última versión de JbossWS (al día de hoy, 3.0.5.GA) debemos:
• Ingresar a http://www.jboss.org/jbossws/downloads/
• Descargar la versión deseada (en nuestro caso, native-3.0.5.GA)
• Hacer click en “Download”
• Descomprimir el zip en alguna carpeta temporal
• Copiar el archivo ant.properties.example a ant.properties.
• Modificar el archivo ant.properties con los datos en negrita:
#
# A sample ant properties file
#
# Optional JBoss Home
jboss422.home=@jboss422.home@
jboss423.home=JBOSS_HOME
jboss424.home=@jboss424.home@
jboss500.home=@jboss500.home@
jboss501.home=@jboss501.home@
jboss510.home=@jboss510.home@
# The JBoss server under test. This can be [jboss422|jboss423|jboss424|jboss500|jboss501|jboss510]
jbossws.integration.target=jboss423
# The JBoss settings
jboss.server.instance=all
jboss.bind.address=localhost
# JBoss Repository
#jboss.repository=file:/home/tdiesler/svn/jboss.local.repository
jboss.repository=http://repository.jboss.org
# JBoss JMX invoker authentication
#jmx.authentication.username=admin
#jmx.authentication.password=admin
# Java Compiler options
javac.debug=yes
javac.deprecation=no
javac.fail.onerror=yes
javac.verbose=no
• Parado en el directorio raíz, ejecutar: ant deploy-jboss423
Creando un Proyecto Web Service
En principio, estas indicaciones son para el uso de WTP 2.0.4 (Eclipse plugin). Como, en nuestro entorno, también usamos MyEclipse, voy a tratar de hacerlo lo más genérico posible.
• Crear un proyecto Web (en mi caso, lo nombré test-jbossws).
• Crear la clase example.impl.SampleServiceImpl y la clase example.bean.Person:
package example.impl;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import org.jboss.ws.annotation.EndpointConfig;
import example.bean.Person;
@WebService
@SOAPBinding ( parameterStyle = SOAPBinding.ParameterStyle.BARE )
public class SampleServiceImpl {
@WebMethod
public Person getPerson(String dni) {
return new Person(dni, "Peter Capusotto", 45);
}
}
package example.bean;
public class Person {
private String dni;
private String name;
private int yearsOld;
public Person(){super();}
public Person(String dni, String name, int yearsOld) {
this.dni = dni;
this.name = name;
this.yearsOld = yearsOld;
}
public String getDni() {
return dni;
}
public void setDni(String dni) {
this.dni = dni;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getYearsOld() {
return yearsOld;
}
public void setYearsOld(int yearsOld) {
this.yearsOld = yearsOld;
}
@Override
public String toString() {
return this.name + " DNI: " + this.dni;
}
}
• Para que el proyecto compile, se deben agregar los siguientes jars:
o %JBOSS_HOME%/server/all/lib/jboss-native-jaxws.jar
o %JBOSS_HOME%/server/all/deploy/jbossws.sar/jboss-native-core.jar
Importante: los jars no deben ser empaquetados en el war.
o MyEclipse: para no exportar los jars
• Pararse sobre el proyecto y dar click derecho
• Propiedades -> MyEclipse ->Web
• Seleccionar el tab “Deployment”
• Tildar “Ignore dependant Java projects…” y destildar el resto.
• Levantar el servidor.
• Ir a algún navegador y ejecutar: http://localhost:8080/test-jbossws?wsdl
• Deberían ver la definición del servicio (un XML).
Creando un Cliente de Web Service
• Crear un proyecto Java. Yo lo nombré test-jbossws-client.
• Dentro del proyecto, ejecutar %JBOSS_HOME%/bin/wsconsume.bat –k –o http://localhost:8080/test-jbossws?wsdl
• Copiar la estructura que se ha creado dentro de “generated” a la carpeta donde tenemos el resto de los fuentes.
• Crear un testcase. Yo lo llamé example.WSTest:
package example;
import javax.xml.ws.Service;
import junit.framework.TestCase;
import example.impl.Person;
import example.impl.SampleServiceImpl;
import example.impl.SampleServiceImplService;
public class WSTest extends TestCase {
public void testWS() {
System.out.println("Starting Test...");
try {
Service service = new SampleServiceImplService();
SampleServiceImpl port = service.getPort(example.impl.SampleServiceImpl.class);
Person person = port.getPerson("27668277");
assertNotNull(person);
assertEquals("27668277",person.getDni());
System.out.printf("Name: %s, DNI: %s, Age: %d\n", person.getName(),person.getDni(),person.getYearsOld());
} catch (Exception e) {
e.printStackTrace();
assertNull(e.getMessage(),e);
} finally {
System.out.println("...The End");
}
}
}
• Agregar los jars:
o %JBOSS_HOME%/client/jaxb-api.jar
o %JBOSS_HOME%/client/jbossall-client.jar
o %JBOSS_HOME%/client/jboss-native-client.jar
o %JBOSS_HOME%/client/jboss-native-jaxws.jar
o Mail.jar
o Xalan.jar
o xercesImpl.jar
• Correr el caso de prueba.
• El test da “verde”.
Agregando Seguridad
Agregando seguridad en el servidor
En la clase que define el Web Service, agregar la annotation @EndpointConfig como muestra el ejemplo:
…
@WebService
@SOAPBinding ( parameterStyle = SOAPBinding.ParameterStyle.BARE )
@EnpointConfig( configName = “Standard WSSecurity Endpoint” )
public class SampleServiceImpl {
…
Dentro de la carpeta WEB-INF se debe agregar el archivo jboss-wsse-server.xml:
C:\workspace-ws\test-jbossws-certificates\wssop.keystore
wssoppwd
C:\workspace-ws\test-jbossws-certificates\wssop.trustore
wssoppwd
Agregando seguridad en el cliente
En la carpeta donde están los fuentes (o bien en la raíz del proyecto) debemos crear la carpeta META-INF con dos archivos: jboss-wsse-client.xml y standard-jaxws-client-config.xml.
standard-jaxws-client-config.xml:
xsi:schemaLocation="urn:jboss:jaxws-config:2.0 jaxws-config_2_0.xsd">
Standard WSSecurity Client
##SOAP11_HTTP
WSSecurityHandlerOutbound
org.jboss.ws.extensions.security.jaxws.WSSecurityHandlerClient
jboss-wsse-client.xml:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.jboss.com/ws-security/config
http://www.jboss.com/ws-security/schema/jboss-ws-security_1_0.xsd">
C:\workspace-ws\test-jbossws-certificates\user1.keystore
user1pwd
C:\workspace-ws\test-jbossws-certificates\user1.keystore
C:\workspace-ws\test-jbossws-certificates\user1.trustore
user1pwd
alias="user1"/>
Referencias
Instalación JbossWS: http://jbossws.jboss.org/mediawiki/index.php?title=Install_JBossWS
Para instalar JbossAS 4.2.3.GA:
• Ingresar a http://www.jboss.org/jbossas/downloads/
• Buscar la versión deseada (en nuestro caso, 4.2.3.GA).
• Hacer click en “Download”
• Descomprimir el zip en algún lugar del disco siendo ésa, nuestra carpeta de instalación (desde acá, nos referiremos a la carpeta de instalación de JBoss como JBOSS_HOME)
Instalar JbossWS 3.0.5.GA
La versión 4.2.3.GA de JBoss viene con jbossws-3.0.1.GA.
Para instalar la última versión de JbossWS (al día de hoy, 3.0.5.GA) debemos:
• Ingresar a http://www.jboss.org/jbossws/downloads/
• Descargar la versión deseada (en nuestro caso, native-3.0.5.GA)
• Hacer click en “Download”
• Descomprimir el zip en alguna carpeta temporal
• Copiar el archivo ant.properties.example a ant.properties.
• Modificar el archivo ant.properties con los datos en negrita:
#
# A sample ant properties file
#
# Optional JBoss Home
jboss422.home=@jboss422.home@
jboss423.home=JBOSS_HOME
jboss424.home=@jboss424.home@
jboss500.home=@jboss500.home@
jboss501.home=@jboss501.home@
jboss510.home=@jboss510.home@
# The JBoss server under test. This can be [jboss422|jboss423|jboss424|jboss500|jboss501|jboss510]
jbossws.integration.target=jboss423
# The JBoss settings
jboss.server.instance=all
jboss.bind.address=localhost
# JBoss Repository
#jboss.repository=file:/home/tdiesler/svn/jboss.local.repository
jboss.repository=http://repository.jboss.org
# JBoss JMX invoker authentication
#jmx.authentication.username=admin
#jmx.authentication.password=admin
# Java Compiler options
javac.debug=yes
javac.deprecation=no
javac.fail.onerror=yes
javac.verbose=no
• Parado en el directorio raíz, ejecutar: ant deploy-jboss423
Creando un Proyecto Web Service
En principio, estas indicaciones son para el uso de WTP 2.0.4 (Eclipse plugin). Como, en nuestro entorno, también usamos MyEclipse, voy a tratar de hacerlo lo más genérico posible.
• Crear un proyecto Web (en mi caso, lo nombré test-jbossws).
• Crear la clase example.impl.SampleServiceImpl y la clase example.bean.Person:
package example.impl;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import org.jboss.ws.annotation.EndpointConfig;
import example.bean.Person;
@WebService
@SOAPBinding ( parameterStyle = SOAPBinding.ParameterStyle.BARE )
public class SampleServiceImpl {
@WebMethod
public Person getPerson(String dni) {
return new Person(dni, "Peter Capusotto", 45);
}
}
package example.bean;
public class Person {
private String dni;
private String name;
private int yearsOld;
public Person(){super();}
public Person(String dni, String name, int yearsOld) {
this.dni = dni;
this.name = name;
this.yearsOld = yearsOld;
}
public String getDni() {
return dni;
}
public void setDni(String dni) {
this.dni = dni;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getYearsOld() {
return yearsOld;
}
public void setYearsOld(int yearsOld) {
this.yearsOld = yearsOld;
}
@Override
public String toString() {
return this.name + " DNI: " + this.dni;
}
}
• Para que el proyecto compile, se deben agregar los siguientes jars:
o %JBOSS_HOME%/server/all/lib/jboss-native-jaxws.jar
o %JBOSS_HOME%/server/all/deploy/jbossws.sar/jboss-native-core.jar
Importante: los jars no deben ser empaquetados en el war.
o MyEclipse: para no exportar los jars
• Pararse sobre el proyecto y dar click derecho
• Propiedades -> MyEclipse ->Web
• Seleccionar el tab “Deployment”
• Tildar “Ignore dependant Java projects…” y destildar el resto.
• Levantar el servidor.
• Ir a algún navegador y ejecutar: http://localhost:8080/test-jbossws?wsdl
• Deberían ver la definición del servicio (un XML).
Creando un Cliente de Web Service
• Crear un proyecto Java. Yo lo nombré test-jbossws-client.
• Dentro del proyecto, ejecutar %JBOSS_HOME%/bin/wsconsume.bat –k –o http://localhost:8080/test-jbossws?wsdl
• Copiar la estructura que se ha creado dentro de “generated” a la carpeta donde tenemos el resto de los fuentes.
• Crear un testcase. Yo lo llamé example.WSTest:
package example;
import javax.xml.ws.Service;
import junit.framework.TestCase;
import example.impl.Person;
import example.impl.SampleServiceImpl;
import example.impl.SampleServiceImplService;
public class WSTest extends TestCase {
public void testWS() {
System.out.println("Starting Test...");
try {
Service service = new SampleServiceImplService();
SampleServiceImpl port = service.getPort(example.impl.SampleServiceImpl.class);
Person person = port.getPerson("27668277");
assertNotNull(person);
assertEquals("27668277",person.getDni());
System.out.printf("Name: %s, DNI: %s, Age: %d\n", person.getName(),person.getDni(),person.getYearsOld());
} catch (Exception e) {
e.printStackTrace();
assertNull(e.getMessage(),e);
} finally {
System.out.println("...The End");
}
}
}
• Agregar los jars:
o %JBOSS_HOME%/client/jaxb-api.jar
o %JBOSS_HOME%/client/jbossall-client.jar
o %JBOSS_HOME%/client/jboss-native-client.jar
o %JBOSS_HOME%/client/jboss-native-jaxws.jar
o Mail.jar
o Xalan.jar
o xercesImpl.jar
• Correr el caso de prueba.
• El test da “verde”.
Agregando Seguridad
Agregando seguridad en el servidor
En la clase que define el Web Service, agregar la annotation @EndpointConfig como muestra el ejemplo:
…
@WebService
@SOAPBinding ( parameterStyle = SOAPBinding.ParameterStyle.BARE )
@EnpointConfig( configName = “Standard WSSecurity Endpoint” )
public class SampleServiceImpl {
…
Dentro de la carpeta WEB-INF se debe agregar el archivo jboss-wsse-server.xml:
Agregando seguridad en el cliente
En la carpeta donde están los fuentes (o bien en la raíz del proyecto) debemos crear la carpeta META-INF con dos archivos: jboss-wsse-client.xml y standard-jaxws-client-config.xml.
standard-jaxws-client-config.xml:
jboss-wsse-client.xml:
xsi:schemaLocation="http://www.jboss.com/ws-security/config
http://www.jboss.com/ws-security/schema/jboss-ws-security_1_0.xsd">
Referencias
Instalación JbossWS: http://jbossws.jboss.org/mediawiki/index.php?title=Install_JBossWS
Etiquetas:
java,
jboss,
keystore,
trustore,
web services,
ws security
Suscribirse a:
Entradas (Atom)