22 november, 2010

Lärarjobb för Informator

Denna vecka jobbar jag som lärare/utbildare för Informators räkning. Jag håller en företagsanpassad kurs där kunden har beställt en skräddarsydd kurs som behandlar nyheterna i Java 5 & Java 6 samt nyheterna i JEE 5.

Kursmaterialet består av två delar, den första delen som behandlar skillnaderna mellan Java 1.4 och Java 6 (framtaget av mig). Den andra delen är utvalda delar av Informators EJB 3.0-kurs.

I vilket fall är det är roligt att vara lärare igen!

18 november, 2010

WSDL/Webservice prototyping i JDK 6

 JDK 6 har stöd för WebServices i form av JAX-WS 2.0. Detta är i sig en trevlig feature men det finns ännu en som jag upptäckte nyligen. JDK 6 är bundlat med en enkel HTTP-Server som kan användas för att enkelt testa sina JAX-WS WebServices. En enkel POJO-WebService kan (i sin enklaste form) se ut enligt såhär.

@WebService
public class Calculator {

 public int sum(int... numbers){
  int result = 0;
  for(int number : numbers){
   result += number;
  }
  return result;
 }

}

Inga konstigheter här, men här kommer det som är intressant. För att publicera denna WebService i JDK 6 inbyggda server lägger vi till en körbar main-metod.

@WebService
public class Calculator {

 public int sum(int... numbers){
  int result = 0;
  for(int number : numbers){
   result += number;
  }
  return result;
 }
 
 public static void main(String[] a){
  Endpoint.publish("http://localhost:8080/ws/calculator", new Calculator());
 }

}

Öppna en browser och peka på http://localhost:8080/ws/calculator?WSDL för att se tjänstens WSDL.
<definitions name="CalculatorService" targetnamespace="http://ws.se/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://ws.se/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/">
 <types>
  <xsd:schema>
   <xsd:import namespace="http://ws.se/" schemalocation="http://localhost:8080/ws/calculator?xsd=1"></xsd:import>
  </xsd:schema>
 </types>

 <message name="sum">
  <part element="tns:sum" name="parameters"></part>
 </message>
 <message name="sumResponse">
  <part element="tns:sumResponse" name="parameters"></part>
 </message>

 <porttype name="Calculator">
  <operation name="sum">
   <input message="tns:sum" />
   <output message="tns:sumResponse"></output>
  </operation>
 </porttype>

 <binding name="CalculatorPortBinding" type="tns:Calculator">
  <soap:binding transport="http://schemas.xmlsoap.org/soap/http"></soap:binding>
  <operation name="sum">
   <soap:operation soapaction=""></soap:operation>
   <input />
    <soap:body use="literal"></soap:body>
   
   <output>
    <soap:body use="literal"></soap:body>
   </output>
  </operation>
 </binding>

 <service name="CalculatorService">
  <port binding="tns:CalculatorPortBinding" name="CalculatorPort">
   <soap:address location="http://localhost:8080/ws/calculator"></soap:address>
  </port>
 </service>
</definitions>
Riktigt trevligt! Detta ger bra möjligheter att snabbt ta fram en tjänst via prototyping, genom att använda andra JAX-WS annotations (@WebParam, @WebMethod, @WebResult m.fl.) kan vi skräddarsy utseendet på tjänstens WSDL. För snabbt kunna testa sin tjänst skulle jag rekommendera gratisverktyget Soap UI. Det skönt att slippa generera klientkod för varje förändring man gör i sin WSDL, då kan ett verktyg som Soap UI vara en riktigt bra kompis att hålla i handen.

15 november, 2010

Solid State Drive

Intel X25-M SSD och USB-SATA kloningskit

Förra veckan installerade jag en SSD (Solid State Drive) i min Macbook Pro 15" (2009). Jag ville se om det skulle bli någon prestandaförbättning samt ha den driftsäkerhet det innebär med en HD utan rörliga delar. Min MBP får utstå en hel del med det dagliga släpandet till och från jobbet.

Grundforskning
Men hur hittar man en SSD som är bra? Jag ägnade lite tid till efterforskning och hittade några tester som verkade seriösa, bl.a . dessa (ganska färskt, lite äldre) hos sweclockers.com. Båda hyllar en viss SSD, Intel X25-M G2. Den har väldigt bra prestanda sett till helheten. 160 GB versionen kändes mest prisvärd (större diskar blir väldigt dyra).

Kloningskit in action

Klona gamla disken
Instinkten säger att det är jobbigt att byta hårddisk, men nu vet jag att det går att göra smidigt! Jag köpte ett "klonings-kit" tillsammans med disken, beståenden av en USB 2.0 till SATA-sladd (adapter?) samt lite mjukvara (SuperDuper! för Mac). (Såhär i efterhand hade det såklart räckt med att köpa ett SATA-case och använda Carbon Copy Cloner för att göra samma sak, man lär så länge man lever.) Kopplade in disken med hjälp av sladden, formaterade den (Mac OS X Extended Journaled) till Mac-format med hjälp av Disk Utility (i MacOS) och sen var det bara att köra igång med kloningen.

Kopierar alles

SuperDuper! gör en exakt klon av den interna disken, bootbar och allt. Efter detta var det bara att installera SSD'n (vilket jag lät någon annan göra) och starta datorn. Vips så funkade allt igen, helt magiskt. Däremot tog booten längre tid än jag trott, därför följde jag intruktionerna här, och det funkade perfekt! Jag kan bara säga wow! Vilken skillnad i prestanda!

Några icke vetenskapliga benchmarks för just min dator:
Boota datorn: innan 45 sekunder, efter 17 sekunder
Starta Firefox: innan 15 sekunder, efter 5 sekunder
Starta Eclipse: innan 45 sekunder, efter 15 sekunder

Jag kan skarpt rekommendera att skaffa en SSD om ni tycker att datorn börjar bli lite seg. Tillsammans med lite mer RAM kan en SSD kanske ge ett par års livslängd på datorn.

Nedan är en video jag hittade när jag letade efter SSD som är ganska imponerande (i.a.f. de gånger man behöver starta 50 program samtidigt)

04 november, 2010

Stavas framtiden "Light Peak"?

Det skrivs en hel del om USB 3 som framtidens standardport för snabb dataöverföring. Men det visar sig att varken Apple (som ofta visat vägen när det gäller portar/interfaces) eller Intel har velat bygga in USB 3 i sina produkter, trots att specifikationen varit klar en tid nu. Antagligen beror detta på att de istället kommer presentera produkter med stöd för Intel´s Light Peak under 2011 (enligt rykten...).

Vad är då Light Peak?
Tekniken som Intel och Apple utvecklat bygger på fiberoptik som har flera fördelar jämfört med koppar, bl.a. stor bandbredd (ca. 10GB/s i dagsläget, kommer kunna skala upp till det 100GB/s om 10 år) och att det går att skicka signalen med långa sladdar, vilket är viktigt i vissa tillämpningar. Light Peak kommer kunna ersätta i princip alla portar en modern dator har idag (USB, FireWire, HDMI, DisplayPort m.fl.). Detta kommer i slutändan kunna ge produkter med en sorts port vilket gör alla glada.
Men det blir mer spännande vad tekniken kan göra för smartphones/tablets. Dåliga nyheter för USB 3 med andra ord.

Det skulle inte förvåna mig om Apple och Intel visar vägen under nästa år och att USB 3 blir ett onödigt mellansteg (lite som BluRay i.m.h.o.)

01 november, 2010

iOS-försovning imorse

Och jag var inte ensam.  Ingen katastrof, men eftersom Apple uppenbarligen känt till detta ett tag nu så borde de kunnat leverera en fix för det. Troligen blir det en fix lagom till USA's tidsomställning, mr. Jobs vill ju inte komma sent till jobbet!

Update 2010-11-04!
Nu har Apple bekräftat problemet och det gäller tydligen iOS 4.1 enheter och repeterande alarm (mitt fungerar fortfarande inte). Den workaround som Apple föreslår är att manuellt ställa in sitt alarm varje dag ända tills måndagen den 8/11-2010, då kommer larmen börja fungera igen (då har USA/Kanada bytt till vintertid). Hilarious!