czwartek, 29 stycznia 2009

Jazoon09 - Neal Ford

Dzisiaj postanowiłem przybliżyć sylwetkę Neal'a Ford'a jednej z gwiazd tegorocznej konfekcji Jazzon09 która odbędzie się w Zurichu w terminie od 22 do 25 czerwca.
Neal Ford pracuje w firmie ThoughtWorks jako software architect i konsultant w branży IT. Jest ekspertem w takich językach programowania jak:
  • Java
  • C#/.NET
  • Ruby
  • Groovy
  • functional languages
  • Scheme
  • Object Pascal
  • C++
  • C
Jest autorem takich książek jak:




Ci którzy byli na JDD08 pamiętają jego świetny wykład, chcesz posłuchać go jeszcze raz:) wybierz się na Jazzon09 :) A na koniec link do jego bloga Neal Ford.

poniedziałek, 26 stycznia 2009

6. Spotkanie Śląskiej Grupy Użytkowników Technologii Java ( Silesia JUG )

Śląska Grupa Użytkowników Technologii Java (Silesia JUG) serdecznie
zaprasza wszystkich na szóste spotkanie, które odbędzie się
27.01.2009 o godzinie 18:30 w COIG (Centralny Ośrodek Informatyki
Górnictwa S.A.) w sali 136 na pierwszym piętrze, ul.Mikołowska 100.

Temat: EJB - Enterprise JavaBeans

Prowadzący: Piotr Bochyński

Plan prezentacji:
- Architektura EJB
- Rola serwera aplikacyjnego
- Wyjaśnienie na przykładzie:
- ORM
- JPA
- Session Bean
- Transakcje
- Messsage Driven Bean
- Inversion of Control
- Dependency Injection


Piotr Bochyński jest głównym architektem IT w departamencie informatyki firmy Wasko.

Po prezentacji (1,5h) odbędzie się krótka pogawędka (15 - 30 minut).
Po prezentacji pytania dla obecnych, gdzie będzie można wygrać:
a. IntelliJ IDEA Personal License
b. ReSharper Personal License
c. TeamCity Build Agent
d. Ruby IDE Personal License

Wstęp wolny!


Zapraszam wszystkich w imieniu Piotra i Silesia JUG.

niedziela, 25 stycznia 2009

Cooluary

Rzutem na taśmę zdecydowałem się wybrać na Cooluary na pierwszą w Polsce konferencję Unconference albo inaczej Open Space. Wszystko zaczęło się o 10:00 w Krakowie, po rejestracji i wygraniu nagrody:) Grzegorz Duda przez jakieś 30 minut poprowadził wykład inspirujący plus wprowadził nas w idea całej konferncji.

Idea konferencji polegała na tym, że agendę tworzyli sami uczestnicy podając tematy do rozmów. Równolegle toczyły się rozmowy przy 5 stolikach na różne tematy. Uczestnicy mogli się przemieszczać między stolikami uwzględniając swoje zainteresowanie danym tematem :)

Tematy które mnie najbardziej zainteresowały:
- przyszłość Javy, Java 7
- AOP wady i zalety
- Spring licencjonowanie i czego nam w nim brakuje
- ESB - integracja systemów
- Groove
- Scala
- refaktoryzacja.
Konferencję uważam za bardzo udaną dlatego, że mogłem bliżej poznać bardzo dużo osób pasjonujących się Java i nie tylko, takich jak Waldemar Kot i wielu innych świetnych fachowców (między innymi osoby piszące artykuły do JavaExpress). Mam nadzieje, że następnym razem poza Markiem Kliśiem i mną będzie więcej reprezentantów z Silesia JUG. Już się nie mogę doczekać następnej takiej konferencji:)
A na koniec wygrałem darmową wejściówkę na GeeCon2009 :)

środa, 21 stycznia 2009

Debugging Mule

Dzisiaj postanowiłem przedebugować aplikację która uruchamiana jest na serwerze Mule.
Remote debugging has been simplified starting with Mule 1.4.4. One only has to add the -debug switch when running Mule.
Więc testujemy:
mule -debug -config mule-config.xml

Potem wystarczy podłączyć się przez Eclipse zdalnie na porcie 5005 i ustawić break-points w kodzie.


W Remote Java Application klikamy New
Ustawiamy projekt do którego się chcemy podłączyć i port na którym działa Mule 5005
I teraz Debug i można dokładnie przeanalizować co się dzieje w naszym kodzie.

niedziela, 11 stycznia 2009

5. Spotkanie Śląskiej Grupy Użytkowników Technologii Java ( Silesia JUG )

Śląska Grupa Użytkowników Technologii Java (Silesia JUG) serdecznie
zaprasza wszystkich na piąte spotkanie, które odbędzie się
13.01.2009 o godzinie 18:30 w COIG (Centralny Ośrodek Informatyki
Górnictwa S.A.) w sali 136 na pierwszym piętrze, ul.Mikołowska 100.

Temat: Wprowadzenie w tematykę platformy Eclipse w zakresie Eclipse
RCP i BIRT.

Prowadzący: Anna Książek

Spotkanie 1 przedstawienie ogólnej charakterystyki Eclipse RCP na
przykładzie funkcji do obsługi faktur
1. Krótka charakterystyka platformy
2. Tworzenie projektu opartego o plugin'y - prezentacja i omówienie
przygotowanego kodu
a) utworzenie projektu w workspace
a.1) plugin.xml jako łącznik z platformą Eclipse
b) zdefiniowanie własnego układu ekranu
c) budowa menu i pojęcie akcji
d) ekrany zbudowane w oparciu o perspektywy
d.1) podział na części oraz rozmieszczenie view w perspektywie
d.2) akcje view a akcje menu
d.3) kilka wskazówek na co zwrócić uwagę
Planowany czas części prezentacji - 1 godzina

3. Część praktyczna
a) zmiana układu perspektywy celem przygotowania miejsca na podgląd
wydruku faktury
b) obsługa akcji uruchamiającej wydruk

Planowany czas części praktycznej - 30 minut

Po prezentacji (1,5h) odbędzie się krótka pogawędka (15 - 30 minut).
Po prezentacji pytania dla obecnych, gdzie będzie można wygrać:
a. IntelliJ IDEA Personal License
b. ReSharper Personal License
c. TeamCity Build Agent
d. Ruby IDE Personal License

Wstęp wolny!


Zapraszam wszystkich w imieniu Anny i Silesia JUG.

sobota, 10 stycznia 2009

Jazoon09

W tym roku czeka nas kilka wielkich konferencji Javowych zarówno w Polsce jak i zagranicą, ciekawie zapowiada się Jazoon09. Konferencja odbędzie się w Szwajcarii w pięknym mieście Zurich w dniach od 22 do 25 czerwca 2009. Aktualna lista prelegentów to: Neal Ford - ThoughtWorks, Danny Coward - Sun Microsystems, Roberto Chinnici - Sun Microsystems, Jérôme Dochez - Sun Microsystems. Call for Paper będzie trwał do 15 stycznia, po tym terminie przybliżę wizerunek co niektórych prelegentów.

Ja się wybieram a Ty :)?
Cennik konferencji znajduje się tutaj.

Z lokalnego podwórka najciekawiej zapowiada się GeeCON który odbędzie się 7 - 8 maja 2009.

piątek, 9 stycznia 2009

Mule: wysyłanie e-maili z konsolii

Dzisiaj postanowiłem napisać prosty program, powiedzmy taki mały system w której jedna osoba wystukuje w konsoli jakie produkty z magazynu mają zostać wysłane do klienta, a osoba w magazynie jak ma czas to realizuje przesyłki.
Czego będziemy używali Mule 1.2.1 i to wystarczy:)
Więc co mi potrzeba: po pierwsze komponentu który będzie wczytywał to co ktoś pisze w konsoli, po drugie komponent który tę wiadomość przekształci do formatu (nazwa produktu plus aktualna data), napiszemy prostą transformację, po trzecie komponent odpowiedzialny za wysłanie wiadomości e-mail.
Ostatnio przeczytałem artykuł z Java exPress o mavenie. Więc zaczynamy, tworzymy projekt za pomocą mavena:
  1. mvn archetype:create -DgroupId=com.itsilesia.email -DartifactId=SendEmail  

Potem wchodzimy do katalogu projektu i przystosowujemy projekt do naszego ulubionego IDE w tym wypadku Eclipse
  1. mvn eclipse:eclipse  


Więc zaczynamy pierwszy komponent który, będzie czytał nam dane ze standardowego wejścia(konsoli):

  1. <inbound>  
  2.  <stdio:inbound-endpoint system="IN">  
  3. </inbound>  


Teraz należy napisać prostą transformację, która doda datę do tego co zostało napisane w konsoli, żeby coś takiego osiągnąć trzeba napisać klasę, która będzie dziedziczyć po AbstractTransformer.
  1. package com.itsilesia.email;  
  2.   
  3. import java.util.Date;  
  4.   
  5. import org.mule.api.transformer.TransformerException;  
  6. import org.mule.transformer.AbstractTransformer;  
  7.   
  8. /** 
  9.  * @author lipka 
  10.  * 
  11.  */  
  12. public class MessageTransformer extends AbstractTransformer {  
  13.   
  14.  protected Object doTransform(Object arg0, String arg1)  
  15.    throws TransformerException {  
  16.    String oldMessage = (String) arg0;  
  17.    oldMessage += new Date();  
  18.   return oldMessage;  
  19.  }  
  20.   
  21. }  

Ostatni etap to dodanie do obsługi wysyłania e-maili.
  1. <pass-through-router>  
  2.      <smtp:outbound-endpoint user="lip*****" password="******" host="poczta.o2.pl" port="25" to="*******@o2.pl" from="lip*****@o2.pl" subject="Just do it!!!" refs="AddDateToMessage StringToEmailMessage">  
  3.     </pass-through-router>  

Zauważcie, że obok standardowej konfiguracji użytkownik, hasło, port itd. trzeba dodać naszą transformację która doda datę do naszej wiadomości i potem jeszcze transformacja "out of the box" która zamienia wiadomość do postaci Stringa na email.
To już mamy wszystko, cały plik konfiguracyjny wygląda tak:
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <mule xmlns="http://www.mulesource.org/schema/mule/core/2.1" xsi="http://www.w3.org/2001/XMLSchema-instance" spring="http://www.springframework.org/schema/beans" context="http://www.springframework.org/schema/context" file="http://www.mulesource.org/schema/mule/file/2.1" jms="http://www.mulesource.org/schema/mule/jms/2.1" smtp="http://www.mulesource.org/schema/mule/smtp/2.1" email="http://www.mulesource.org/schema/mule/email/2.1" xm="http://www.mulesource.org/schema/mule/xml/2.1" jdbc="http://www.mulesource.org/schema/mule/jdbc/2.1" stdio="http://www.mulesource.org/schema/mule/stdio/2.1" schemalocation="        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd        http://www.mulesource.org/schema/mule/core/2.1 http://www.mulesource.org/schema/mule/core/2.1/mule.xsd        http://www.mulesource.org/schema/mule/file/2.1 http://www.mulesource.org/schema/mule/file/2.1/mule-file.xsd        http://www.mulesource.org/schema/mule/jms/2.1 http://www.mulesource.org/schema/mule/jms/2.1/mule-jms.xsd        http://www.mulesource.org/schema/mule/smtp/2.1 http://www.mulesource.org/schema/mule/smtp/2.1/mule-smtp.xsd        http://www.mulesource.org/schema/mule/email/2.1 http://www.mulesource.org/schema/mule/email/2.1/mule-email.xsd        http://www.mulesource.org/schema/mule/xml/2.1 http://www.mulesource.org/schema/mule/xml/2.1/mule-xml.xsd        http://www.mulesource.org/schema/mule/jdbc/2.1 http://www.mulesource.org/schema/mule/jdbc/2.1/mule-jdbc.xsd http://www.mulesource.org/schema/mule/stdio/2.1  http://www.mulesource.org/schema/mule/stdio/2.1/mule-stdio.xsd">  
  3.  <email:string-to-email-transformer name="StringToEmailMessage">  
  4.  <custom-transformer name="StringToMimeMessage" class="org.mule.transport.email.transformers.StringToEmailMessage">  
  5.  <custom-transformer name="AddDateToMessage" class="com.itsilesia.email.MessageTransformer"></custom-transformer>  
  6.   
  7.  <model name="InToEmail">  
  8.   <service name="sendMeEmail">  
  9.    <inbound>  
  10.     <stdio:inbound-endpoint system="IN">  
  11.    </inbound>  
  12.    <outbound>  
  13.     <pass-through-router>  
  14.      <smtp:outbound-endpoint user="lip****" password="*****" host="poczta.o2.pl" port="25" to="lip*****@o2.pl" from="lip****@o2.pl" subject="Just do it!!!" refs="AddDateToMessage StringToEmailMessage">  
  15.     </pass-through-router>  
  16.    </outbound>  
  17.   </service>  
  18.  </model>  
  19. </mule>  

Jeszcze plik pom.xml:
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xsi="http://www.w3.org/2001/XMLSchema-instance" schemalocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  
  2.  <modelversion>4.0.0</modelversion>  
  3.  <groupid>com.itsilesia.email</groupid>  
  4.  <artifactid>SendEmail</artifactid>  
  5.  <packaging>jar</packaging>  
  6.  <version>1.0-SNAPSHOT</version>  
  7.  <name>SendEmail</name>  
  8.  <url>http://maven.apache.org</url>  
  9.    
  10.    
  11.  <properties>  
  12.   <muleversion>2.1.2</muleversion>  
  13.  </properties>  
  14.    
  15.  <dependencies>  
  16.   <dependency>  
  17.    <groupid>org.mule</groupid>  
  18.    <artifactid>mule-core</artifactid>  
  19.    <version>${muleVersion}</version>  
  20.   </dependency>  
  21.   <dependency>  
  22.    <groupid>junit</groupid>  
  23.    <artifactid>junit</artifactid>  
  24.    <version>3.8.1</version>  
  25.    <scope>test</scope>  
  26.   </dependency>  
  27.  </dependencies>  
  28. </project>  


Teraz uruchamiamy naszą aplikację:
  1. mule -config conf/mule.xml   


Sprawdzamy e-mail:

Jak widać wszystko działa i gra:)