Dzisiejszym zadaniem jest zorganizowanie struktury repozytorium pod główny projekt w repozytorium subversion. Podstawowe informacje jak uruchomić svn można przeczytać w wpisie Mariusza Lipińskiego. Dobra a teraz do dzieła tworzymy trzy główne katalogi:
- trunk
- branches
- tags
W trunk trzymamy główną część projektu (najbardziej rozwojowa gałąź), branches przeznaczamy na poprawianie błędów i na eksperymentowanie developerów, jako ostatni został nam katalog tags gdzie zamrażamy konkretne wydania naszego projektu, jakieś ważne wydarzenie z cyklu życia naszego projektu (z reguły koresponduje on do konkretnego podkatalogu branches). Dobrze jest zrobić katalog tags jak katalog tylko do odczytu. Hmm chyba wszystko na początek jakieś uwagi?
piątek, 25 kwietnia 2008
poniedziałek, 7 kwietnia 2008
Eclipse Mule IDE
Dodajemy teraz możliwość tworzenia Mule projektów w Eclipse postępujemy z godnie z instrukcja Mule IDE 2.0 Pre-release User Guide Instalujemy niezbędne komponenty do Eclipse 3.3
No i na koniec sama wtyczka z Mule IDE. Dodajemy nowe URL do Software Updates http://dist.muleforge.org/mule-ide/updates-2.0.0/ . Restartujemy Eclipse i tworzymy nowy Mule Project.
No i na koniec sama wtyczka z Mule IDE. Dodajemy nowe URL do Software Updates http://dist.muleforge.org/mule-ide/updates-2.0.0/ . Restartujemy Eclipse i tworzymy nowy Mule Project.
Potem musimy jeszcze skonfigurować domyślne ustawienia dla Mule.
Teraz jeszcze tworzymy plik konfiguracyjny za pomocą IDE
Nasz Eclipse IDE zostało przystosowane do pracy z Mule:) W następnym wpisie stworzymy najprostszy działający projekt z użyciem Mule, FTP i mavena.
Nasz Eclipse IDE zostało przystosowane do pracy z Mule:) W następnym wpisie stworzymy najprostszy działający projekt z użyciem Mule, FTP i mavena.
Apache ActiveMQ instalacja
Instalacja ApacheMQ tak zwanego Message Broker sprowadza się do ściągnięcia źródeł i ich rozpakowania, korzystamy z ActiveMQ 5.0.0 Release. Uruchomianie samego serwisu bez jakiej kol wiek konfiguracji z naszej strony, sprowadza się do przejścia do rozpakowanego katalogu, później podkatalog bin i uruchomienie skryptu uruchamiającego.
lukasz-lipkas-computer:~/Library/apache-activemq-5.0.0/bin lipka$ ./activemq
Na kosoli po chwili można zobaczyć następujące logi:
Loading message broker from: xbean:activemq.xml
INFO BrokerService - Using Persistence Adapter: AMQPersistenceAdapter(/Users/lipka/Library/apache-activemq-5.0.0/data/localhost)
INFO BrokerService - ActiveMQ 5.0.0 JMS Message Broker (localhost) is starting
INFO BrokerService - For help or more information please see: http://activemq.apache.org/
INFO AMQPersistenceAdapter - AMQStore starting using directory: /Users/lipka/Library/apache-activemq-5.0.0/data/localhost
INFO KahaStore - Kaha Store using data directory /Users/lipka/Library/apache-activemq-5.0.0/data/localhost/kr-store/state
INFO ManagementContext - JMX consoles can connect to service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi
INFO AMQPersistenceAdapter - Active data files: []
INFO KahaStore - Kaha Store using data directory /Users/lipka/Library/apache-activemq-5.0.0/data/localhost/kr-store/data
INFO TransportServerThreadSupport - Listening for connections at: tcp://lukasz-lipkas-computer.local:61616
INFO TransportConnector - Connector openwire Started
INFO TransportServerThreadSupport - Listening for connections at: ssl://lukasz-lipkas-computer.local:61617
INFO TransportConnector - Connector ssl Started
INFO TransportServerThreadSupport - Listening for connections at: stomp://lukasz-lipkas-computer.local:61613
INFO TransportConnector - Connector stomp Started
INFO TransportServerThreadSupport - Listening for connections at: xmpp://lukasz-lipkas-computer.local:61222
INFO TransportConnector - Connector xmpp Started
INFO NetworkConnector - Network Connector org.apache.activemq.transport.discovery.multicast.MulticastDiscoveryAgent@28bdf4 Started
INFO BrokerService - ActiveMQ JMS Message Broker (localhost, ID:lukasz-lipkas-computer.local-50886-1207581085279-0:0) started
INFO TransportConnector - Connector vm://localhost Started
INFO log - Logging to org.slf4j.impl.JCLLoggerAdapter(org.mortbay.log) via org.mortbay.log.Slf4jLog
INFO log - jetty-6.1.4
INFO WebConsoleStarter - ActiveMQ WebConsole initialized.
INFO /admin - Initializing Spring FrameworkServlet 'dispatcher'
INFO log - ActiveMQ Console at http://0.0.0.0:8161/admin
INFO log - ActiveMQ Web Demos at http://0.0.0.0:8161/demo
INFO log - Started SelectChannelConnector@0.0.0.0:8161
Żeby sprawdzić czy działa otwieramy przeglądarkę i sprawdzamy adres http://0.0.0.0:8161/admin
Ostatni test czy wszystko działa poprawnie uruchamiamy przykład dostarczony przez dystrybutora (typowy przykład klient (czeka na 10 wiadomość) producent (produkuje 10 wiadomości)). Do uruchomienia przykładu musimy mieć zainstalowanego Anta. W katalogu gdzie rozpakowaliśmy źródła przechodzimy do pod katalogu examples i w jednej konsoli uruchamiamy klienta w drugiej producenta.
Klient:
lukasz-lipkas-computer:~/Library/apache-activemq-5.0.0/example lipka$ ant consumer
Producent:
lukasz-lipkas-computer:~/Library/apache-activemq-5.0.0/example lipka$ ant producer
Wszystko działa:) Teraz już tylko połączyć to z Mule:)
lukasz-lipkas-computer:~/Library/apache-activemq-5.0.0/bin lipka$ ./activemq
Na kosoli po chwili można zobaczyć następujące logi:
Loading message broker from: xbean:activemq.xml
INFO BrokerService - Using Persistence Adapter: AMQPersistenceAdapter(/Users/lipka/Library/apache-activemq-5.0.0/data/localhost)
INFO BrokerService - ActiveMQ 5.0.0 JMS Message Broker (localhost) is starting
INFO BrokerService - For help or more information please see: http://activemq.apache.org/
INFO AMQPersistenceAdapter - AMQStore starting using directory: /Users/lipka/Library/apache-activemq-5.0.0/data/localhost
INFO KahaStore - Kaha Store using data directory /Users/lipka/Library/apache-activemq-5.0.0/data/localhost/kr-store/state
INFO ManagementContext - JMX consoles can connect to service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi
INFO AMQPersistenceAdapter - Active data files: []
INFO KahaStore - Kaha Store using data directory /Users/lipka/Library/apache-activemq-5.0.0/data/localhost/kr-store/data
INFO TransportServerThreadSupport - Listening for connections at: tcp://lukasz-lipkas-computer.local:61616
INFO TransportConnector - Connector openwire Started
INFO TransportServerThreadSupport - Listening for connections at: ssl://lukasz-lipkas-computer.local:61617
INFO TransportConnector - Connector ssl Started
INFO TransportServerThreadSupport - Listening for connections at: stomp://lukasz-lipkas-computer.local:61613
INFO TransportConnector - Connector stomp Started
INFO TransportServerThreadSupport - Listening for connections at: xmpp://lukasz-lipkas-computer.local:61222
INFO TransportConnector - Connector xmpp Started
INFO NetworkConnector - Network Connector org.apache.activemq.transport.discovery.multicast.MulticastDiscoveryAgent@28bdf4 Started
INFO BrokerService - ActiveMQ JMS Message Broker (localhost, ID:lukasz-lipkas-computer.local-50886-1207581085279-0:0) started
INFO TransportConnector - Connector vm://localhost Started
INFO log - Logging to org.slf4j.impl.JCLLoggerAdapter(org.mortbay.log) via org.mortbay.log.Slf4jLog
INFO log - jetty-6.1.4
INFO WebConsoleStarter - ActiveMQ WebConsole initialized.
INFO /admin - Initializing Spring FrameworkServlet 'dispatcher'
INFO log - ActiveMQ Console at http://0.0.0.0:8161/admin
INFO log - ActiveMQ Web Demos at http://0.0.0.0:8161/demo
INFO log - Started SelectChannelConnector@0.0.0.0:8161
Żeby sprawdzić czy działa otwieramy przeglądarkę i sprawdzamy adres http://0.0.0.0:8161/admin
Ostatni test czy wszystko działa poprawnie uruchamiamy przykład dostarczony przez dystrybutora (typowy przykład klient (czeka na 10 wiadomość) producent (produkuje 10 wiadomości)). Do uruchomienia przykładu musimy mieć zainstalowanego Anta. W katalogu gdzie rozpakowaliśmy źródła przechodzimy do pod katalogu examples i w jednej konsoli uruchamiamy klienta w drugiej producenta.
Klient:
lukasz-lipkas-computer:~/Library/apache-activemq-5.0.0/example lipka$ ant consumer
Producent:
lukasz-lipkas-computer:~/Library/apache-activemq-5.0.0/example lipka$ ant producer
Wszystko działa:) Teraz już tylko połączyć to z Mule:)
Mule instalacja
Dzisiaj czas zacząć przygodę z jednym z najbardziej popularnych, darmowych ESB MULE. Nie będę robił wprowadzenia do ESB, napiszę w skrócie do czego może się przydać.
Moja definicja ESB to:
- szyna umożliwiająca komunikacje pomiędzy różnymi serwisami, jej główne założenie to uproszczenie tworzenia architektury SOA(Service Oriented Architecture) (architektura zorientowana na usługi).
Dobra zobaczymy jak to działa w praktyce, pojawiła się nowa wersja Mule 2.o.o idziemy do Download ściągamy źródła i je rozpakowujemy. Zerkamy jeszcze co nowego w wersji 2.0.0 z ciekawych rzeczy widzę, że w następnych wersjach ma być wsparcie dla OSGi.
The Registry architecture will continue to evolve a bit in future releases and will form the basis of OSGi support in Mule.
Wracając do Mule przed rozpoczęciem całej zabawy należy zainstalować niezbędne oprogramowanie(jvm, maven, ...). Po ściągnięciu i rozpakowaniu , czytamy INSTALL.txt, i wykonujemy następujące polecenia (w zależności od systemu operacyjnego, u mnie mac):
export MULE_HOME=/Users/lipka/Library/mule-2.0.0
export PATH=$PATH:$MULE_HOME/bin
Potem w konsoli piszemy:
mule
podczas pierwszego uruchomienia musimy zaakceptować licencje.
Do you accept the terms and conditions of this license agreement [y/n]?
y
i potem widzimy (maven ściągą niezbędne jary) i na końcu:
Starting the Mule Server...
Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
Copyright 1999-2006 Tanuki Software, Inc. All Rights Reserved.
WARN 2008-04-07 13:57:39,559 [WrapperListener_start_runner] org.mule.MuleServer: A configuration file was not set, using default: mule-config.xml
*******************************************************************************
No config file specified and no config by the name of mule-config.xml
found on the classpath.
Usage: mule -config [-builder ] [-debug] [-version]
mule-configuration - a URL for the Mule Config XML to use,
if not specified the config will be loaded from
the classpath
config-builder - a fully qualified class name of the builder to use
to configure Mule.
debug - configure Mule for JPDA remote debugging.
Customize settings by editing a JPDA_OPTS variable
in the mule startup script
version - print full product information
*******************************************************************************
INFO 2008-04-07 13:57:39,594 [Thread-0] org.mule.MuleServer: Mule server shutting down due to normal shutdown request
INFO 2008-04-07 13:57:39,603 [Thread-0] org.mule.MuleServer:
**************************************************************************************
* The server is shutting down due to normal shutdown request *
* Server shutdown: 07.04.08 13:57 *
**************************************************************************************
<-- Wrapper Stopped
Teraz jak już wszystko działa, można uruchomić najprostszy przykład, dostarczony z dystrybucją, w naszym wypadku to będzie Echo Example.
lukasz-lipkas-computer:~/Library/mule-2.0.0 lipka$ cd examples/echo/
lukasz-lipkas-computer:~/Library/mule-2.0.0/examples/echo lipka$ mule -config conf/echo-config.xml
Na konsoli powinna się pokazać możliwość wpisania jakiegoś przykładowego teksty (potem ENTER) i jeszcze raz go wyświetlenie, takie systemowe echo tylko za pomocą UMOComponentu:
**********************************************************************
* Mule ESB and Integration Platform *
* Version: 2.0.0 Build: 11521 *
* MuleSource, Inc. *
* For more information go to http://mule.mulesource.org *
* *
* Server started: 01.01.70 01:00 *
* Server ID: 8e67013c-049b-11dd-b60e-f34003987973 *
* JDK: 1.5.0_13 (mixed mode) *
* OS: Mac OS X (10.4.11, i386) *
* Host: lukasz-lipkas-computer.local (192.168.123.3) *
* *
* Agents Running: None *
**********************************************************************
Please enter something:
helloWorld :)
INFO 2008-04-07 14:10:17,896 [EchoUMO.2] org.mule.component.simple.LogComponent:
********************************************************************************
* Message received in service: EchoUMO. Content is: 'helloWorld :)' *
********************************************************************************
INFO 2008-04-07 14:10:17,911 [SystemStreamConnector.dispatcher.1] org.mule.transport.stdio.StdioMessageDispatcher: Connected: StdioMessageDispatcher{this=185633, endpoint=stdio://system.out, disposed=false}
helloWorld :)
Please enter something:
Mule już działa więc teraz trzeba będzie się przyjrzeć jak można go zastosować w projektach informatycznych.
PS. dla tych co mają maci, krótkie wprowadzenie do shella pod mac OS.
Moja definicja ESB to:
- szyna umożliwiająca komunikacje pomiędzy różnymi serwisami, jej główne założenie to uproszczenie tworzenia architektury SOA(Service Oriented Architecture) (architektura zorientowana na usługi).
Dobra zobaczymy jak to działa w praktyce, pojawiła się nowa wersja Mule 2.o.o idziemy do Download ściągamy źródła i je rozpakowujemy. Zerkamy jeszcze co nowego w wersji 2.0.0 z ciekawych rzeczy widzę, że w następnych wersjach ma być wsparcie dla OSGi.
The Registry architecture will continue to evolve a bit in future releases and will form the basis of OSGi support in Mule.
Wracając do Mule przed rozpoczęciem całej zabawy należy zainstalować niezbędne oprogramowanie(jvm, maven, ...). Po ściągnięciu i rozpakowaniu , czytamy INSTALL.txt, i wykonujemy następujące polecenia (w zależności od systemu operacyjnego, u mnie mac):
export MULE_HOME=/Users/lipka/Library/mule-2.0.0
export PATH=$PATH:$MULE_HOME/bin
Potem w konsoli piszemy:
mule
podczas pierwszego uruchomienia musimy zaakceptować licencje.
Do you accept the terms and conditions of this license agreement [y/n]?
y
i potem widzimy (maven ściągą niezbędne jary) i na końcu:
Starting the Mule Server...
Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
Copyright 1999-2006 Tanuki Software, Inc. All Rights Reserved.
WARN 2008-04-07 13:57:39,559 [WrapperListener_start_runner] org.mule.MuleServer: A configuration file was not set, using default: mule-config.xml
*******************************************************************************
No config file specified and no config by the name of mule-config.xml
found on the classpath.
Usage: mule -config
mule-configuration - a URL for the Mule Config XML to use,
if not specified the config will be loaded from
the classpath
config-builder - a fully qualified class name of the builder to use
to configure Mule.
debug - configure Mule for JPDA remote debugging.
Customize settings by editing a JPDA_OPTS variable
in the mule startup script
version - print full product information
*******************************************************************************
INFO 2008-04-07 13:57:39,594 [Thread-0] org.mule.MuleServer: Mule server shutting down due to normal shutdown request
INFO 2008-04-07 13:57:39,603 [Thread-0] org.mule.MuleServer:
**************************************************************************************
* The server is shutting down due to normal shutdown request *
* Server shutdown: 07.04.08 13:57 *
**************************************************************************************
<-- Wrapper Stopped
Teraz jak już wszystko działa, można uruchomić najprostszy przykład, dostarczony z dystrybucją, w naszym wypadku to będzie Echo Example.
lukasz-lipkas-computer:~/Library/mule-2.0.0 lipka$ cd examples/echo/
lukasz-lipkas-computer:~/Library/mule-2.0.0/examples/echo lipka$ mule -config conf/echo-config.xml
Na konsoli powinna się pokazać możliwość wpisania jakiegoś przykładowego teksty (potem ENTER) i jeszcze raz go wyświetlenie, takie systemowe echo tylko za pomocą UMOComponentu:
**********************************************************************
* Mule ESB and Integration Platform *
* Version: 2.0.0 Build: 11521 *
* MuleSource, Inc. *
* For more information go to http://mule.mulesource.org *
* *
* Server started: 01.01.70 01:00 *
* Server ID: 8e67013c-049b-11dd-b60e-f34003987973 *
* JDK: 1.5.0_13 (mixed mode) *
* OS: Mac OS X (10.4.11, i386) *
* Host: lukasz-lipkas-computer.local (192.168.123.3) *
* *
* Agents Running: None *
**********************************************************************
Please enter something:
helloWorld :)
INFO 2008-04-07 14:10:17,896 [EchoUMO.2] org.mule.component.simple.LogComponent:
********************************************************************************
* Message received in service: EchoUMO. Content is: 'helloWorld :)' *
********************************************************************************
INFO 2008-04-07 14:10:17,911 [SystemStreamConnector.dispatcher.1] org.mule.transport.stdio.StdioMessageDispatcher: Connected: StdioMessageDispatcher{this=185633, endpoint=stdio://system.out, disposed=false}
helloWorld :)
Please enter something:
Mule już działa więc teraz trzeba będzie się przyjrzeć jak można go zastosować w projektach informatycznych.
PS. dla tych co mają maci, krótkie wprowadzenie do shella pod mac OS.
wtorek, 1 kwietnia 2008
Zarządzanie grupą rozproszonych programistów
Rozpoczynam temat z myślą, że jakieś bardziej doświadczone osoby pomogą mi w doborze jak najlepszych praktyk pracy zdalnej grupy programistów.
Z tego co mi się wydaje jedną z ważniejszych rzeczy w udanym projekcie informatycznym jest komunikacja w zespole. Do jak najlepszej komunikacji jak na razie został wybrany skype (nie ma problemu z tworzeniem konferencji paro osobowych).
Skype w praktyce (jeśli zespół jest rozproszony wtedy może zastępować codziennie spotkania w pracy):
- codziennie ta sama godzina konferencji, na której każdy z programistów opisuje co zrobił wczoraj i co planuje na dzisiaj (maksymalny czas na osobę nie powinien przekroczyć 3 -4 min).
Jak jest zaleta tej technologi ? Każdy z programistów wie co dzieje się w projekcie i do kogo się można zwrócić w razie wystąpienia jakiegoś problemu.
W jaki sposób zorganizować programowanie w parach (XP)? W tym wypadku przychodzi nam z pomocą NX dzięki któremu możemy współdzielić ekran, myszkę i klawiaturę z osobą po drugiej stronie globu.
Co do innych narzędzi usprawniających pracę programistów to zastanawiam się nad:
- cruise control (zautomatyzowane budowanie całego projektu uwzględniające junit i generujące raporty o aktualnym stanie projektu)
- trac + mylyn (jako w tyczka do Eclipse) (organizacja zadań z priorytetami)
- do tworzenia dokumentacji jakieś wiki (osobiście polecam jedno z prostszych dokuwiki)
- maven + svn (tutaj chyba nic nie muszę pisać:))
Jeżeli już ktoś pracował w rozproszonym środowisku programistów, proszę o wskazówki jak można usprawnić pracę i komunikację w takim zespole (i jakie narzędzia, praktyki były stosowane).
Z tego co mi się wydaje jedną z ważniejszych rzeczy w udanym projekcie informatycznym jest komunikacja w zespole. Do jak najlepszej komunikacji jak na razie został wybrany skype (nie ma problemu z tworzeniem konferencji paro osobowych).
Skype w praktyce (jeśli zespół jest rozproszony wtedy może zastępować codziennie spotkania w pracy):
- codziennie ta sama godzina konferencji, na której każdy z programistów opisuje co zrobił wczoraj i co planuje na dzisiaj (maksymalny czas na osobę nie powinien przekroczyć 3 -4 min).
Jak jest zaleta tej technologi ? Każdy z programistów wie co dzieje się w projekcie i do kogo się można zwrócić w razie wystąpienia jakiegoś problemu.
W jaki sposób zorganizować programowanie w parach (XP)? W tym wypadku przychodzi nam z pomocą NX dzięki któremu możemy współdzielić ekran, myszkę i klawiaturę z osobą po drugiej stronie globu.
Co do innych narzędzi usprawniających pracę programistów to zastanawiam się nad:
- cruise control (zautomatyzowane budowanie całego projektu uwzględniające junit i generujące raporty o aktualnym stanie projektu)
- trac + mylyn (jako w tyczka do Eclipse) (organizacja zadań z priorytetami)
- do tworzenia dokumentacji jakieś wiki (osobiście polecam jedno z prostszych dokuwiki)
- maven + svn (tutaj chyba nic nie muszę pisać:))
Jeżeli już ktoś pracował w rozproszonym środowisku programistów, proszę o wskazówki jak można usprawnić pracę i komunikację w takim zespole (i jakie narzędzia, praktyki były stosowane).
Subskrybuj:
Posty (Atom)