Arg! Java i PPC Linux
Escrit per Aaloy a 31 de July , 2005 a les 11:11 p.m.
Doncs això, avegades és desesperant. Se suposa que tenc una maquinota i va molt més lent que la màquina que tenc a la feina. A més l'Eclipse es mor a la mínima. Quan vaig comprar el PPC la veritat és que m'esperava més rendiment i m'esta defraudant.
M'estic plantejant sèriament comprar una màquina nova per al desenvolupament Java i destinar el G5 a tasques no relacionades amb la programació amb Eclipse i Java. La veritat és que va molt bé com a servidor, he fet algunes proves amb Postgres i tira molt bé, el problema és no poder desenvolupar en condicions... No és que desenvolupi a casa, però m'agrada investigar i provar coses que a la feina no tenc temps de provar i és desmoralitzant veure que no puc avançar al ritme que m'agradaria per mor del maquinari.
Les màquines de nucli dual de Dell estan molt bé de preu, o els de Miró, que tenen Compaq AMD Duron, en ambdos casos amb pantalla TFT de 17" inclosa per menys de 1200 Eur IVA inclòs. Estaria bé poder fer una comprarativa de rendiment d'aquestes màquines. La versión 5 del JDK té port per AMD 64 bits i també en tenen moltes de les distribucions Linux, en concret Debian i Ubuntu, així que no em faria res poder provar aquestes maquinetes. Ara tot és saber d'on treure 1200 Eur :O
Traducciones/Translations by apertium
0 comentaris, 0 trackbacks (URL) , Tags: Java
Velocity
Escrit per Aaloy a 31 de July , 2005 a les 10:45 p.m.
Ahir vaig estar llegint-me la documentació de Velocity un sistema de plantilles fet en Java i que es pot integrar dins aplicacions clàssiques o web. La integració dins una aplicació de consola ha estat trivial, sols seguir l'exemple de la documentació. L'únic entrebanc que m'he trobat ha estat amb la part del loggin. Velocity fa servir per defecte el logger del projecte Avalon, projecte que està tancat. Així que m'he disposat a canviar de logger pel més habitual Log4j i aquí han començat els problemes, ja que Velocity està prepart per fer servir Category com a mecanisme per establir el tipus de log (info, debug, warn, ...) i les noves versions de Log4j han abandonat aquesta via i sols utilitzen el logger. Això ha fet que m'estigués barrallant una bona estona amb tot això, primer per descobrir que em faltava el l'Avalon LogKit i després per substituïr-ho per Log4j. Finalment l'exemple ha quedat així:
/*
- Copyright 2000-2001,2004 The Apache Software Foundation.
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
*/ import org.apache.velocity.app.Velocity; import org.apache.velocity.VelocityContext; import org.apache.velocity.Template; import org.apache.log4j.; import org.apache.log4j.Logger; import org.apache.velocity.exception.ParseErrorException; import org.apache.velocity.exception.ResourceNotFoundException; import java.io.; import java.util.ArrayList;
/
- This class is a simple demonstration of how the Velocity Template Engine
- can be used in a standalone application.
- Fent servir log4j com a logger. *
- @author Jason van Zyl
- @author Geir Magnusson Jr.
- @author aaloy
- @version $Id: Example.java,v 1.4.8.1 2004/03/04 00:18:29 geirm Exp $ */
public class Example
{ static Category logger = Logger.getLogger(Example.class.getName()); public Example(String templateFile) { BasicConfigurator.configure(); // Now set its priority. logger.info("Proves ...."); logger.debug("Iniciant"); try { /* * setup / logger.debug("Carregant les propietats"); Velocity.init("velocity.properties"); logger.debug("Propietats carregades"); //Velocity.init(); / * Make a context object and populate with the data. This * is where the Velocity engine gets the data to resolve the * references (ex. $list) in the template */
logger.debug("Carregam el contexte");
VelocityContext context = new VelocityContext();
logger.debug("Contexte carregat");
context.put("list", getNames());
/*
* get the Template object. This is the parsed version of your
* template input file. Note that getTemplate() can throw
* ResourceNotFoundException : if it doesn't find the template
* ParseErrorException : if there is something wrong with the VTL
* Exception : if something else goes wrong (this is generally
* indicative of as serious problem...)
*/
Template template = null;
try
{
template = Velocity.getTemplate(templateFile);
}
catch( ResourceNotFoundException rnfe )
{
logger.debug("Example : error : cannot find template " + templateFile );
}
catch( ParseErrorException pee )
{
logger.debug("Example : Syntax error in template " + templateFile + ":" + pee );
}
/*
* Now have the template engine process your template using the
* data placed into the context. Think of it as a 'merge'
* of the template and the data to produce the output stream.
*/
BufferedWriter writer = writer = new BufferedWriter(
new OutputStreamWriter(System.out));
if ( template != null)
template.merge(context, writer);
/*
* flush and cleanup
*/
writer.flush();
writer.close();
}
catch( Exception e )
{
System.out.println(e);
}
}
public ArrayList getNames()
{
ArrayList list = new ArrayList();
list.add("ArrayList element 1");
list.add("ArrayList element 2");
list.add("ArrayList element 3");
list.add("ArrayList element 4");
return list;
}
public static void main(String[] args)
{
//Log myLog;
Example t;
Example.logger.info("Arrancant");
//myLog = LogFactory.getLog(Example.class);
//myLog.info("Iniciant");
t = new Example("example.vm");
//myLog.info("Acabat");
}
}
El arxiu de plantilla està agafat directament de l'exemple de velocity així que m'estalvio de posar-ho.
Els arxius de configuració que he fet servir són
log4j.properties
log4j.rootLogger=DEBUG, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
#log4j.appender.stdout.layout.ConversionPattern=%p [%t] [%c] %C{1}.%M(%L) | %m%n
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
velocity.properties
runtime.log = velocity_example.log
runtime.log.logsystem.class=org.apache.velocity.runtime.log.SimpleLog4JLogSystem
log4j.logger.org.apache.velocity.runtime.log.SimpleLog4JLogSystem=DEBUG
Pel rootLogger he anat a sac, però s'ha d'anar alerta si feim servir aquesta configuració en un altre tipus d'entorn, una aplicació J2EE per exemple, la quantitat d'informació que surt enlenteix molt la posada en marxa de l'aplicatiu.
Amb tot això ja tenc mig enllestit el primer projecte que em permetrà tenir la base de futurs desenvolupaments: Struts, Velocity, JSP2 i Hibernate ja funcionen plegats i sols falta que l'aplicatiu faci alguna cosa de profit, com escriure a la base de dades quelcom interessant, però encara no he decidit quina miniaplicació fer.
Em falta ara integrar una parell de d'utilitats d'interfície d'usuari (ja tenc el calendari i l'editor de texts), menús i posar un mini-exemple d'Ajax. A l'inici tot això duu una feinada, costa molt lligar-ho tot i fer un mini projecte així, però una vegada fet servirà de base a futurs desenvolupaments. Esper poder-ho penjar per aquí aviat.
Traducciones/Translations by apertium
0 comentaris, 0 trackbacks (URL) , Tags: Java
De vacances
Escrit per Aaloy a 29 de July , 2005 a les 1:12 a.m.
- Professional Java Development with the Spring Framework
- Ant: The Definitive Guide, 2nd Edition
Traducciones/Translations by apertium
0 comentaris, 0 trackbacks (URL)
Desenvolupant amb Java
Escrit per Aaloy a 10 de July , 2005 a les 3:45 a.m.
L'anada a Londres va ser productiva. És bo poder parlar d'informàtica i programari lliure amb gent de la teva mateixa empresa, encara que sigui de països diferents. L'estada a Londres va coincidir amb la proclamació d'aquesta ciutat com a seu dels jocs olímpics del 2010, no ho vaig notar gaire de totes maneres, si no fos perquè ho posava els diaris ni ho hagués notat.
Em va anar d'unes hores no trobar-me amb l'embolic de l'atemptat. Vaig passar per una de les estacions afectades damunt les cinc de la tarda. Està clar que estadísticament això no és significatiu, ja que com jo milers de persones hi passaren el dia anterior, però fa pensar que davant una situació com aquestes tothom és una víctima indefensa. No arribaré a entendre mai el perquè d'aquestes barbàries i menys que es faci en nom d'un Deu. Això em referma amb el meu agnosticisme.
Aquests dies he estat jugant amb l'entorn Java i el G5. Pareix que la única alternativa viable per ara és fer servir el Netbeans 4.1. A l'Eclipse no hi ha manera de tenir un resaltat de sintaxi decent per jsp i molt menys l'ajuda i completat. Els pluggins no acaben de funcionar, ni JBooss ni Lomboz ni tampoc el de Sysdeo per fer anar el Tomcat des de l'entorn.
Al final he optat pel Netbeans que encara que no té un depurador tan potent com el de l'Eclipse ni tants de pluggins al manco funcina en el 90% de coses que vull fer: programació de POJOs, JSP i configuració d'arxius XML.
El que sí he notat és que ni Eclipse ni Netbeans es duen gaire bé amb el Tomcat 5.5. No sé si és la configuració especial que tinc o què, però la veritat és que el Tomcat 5.0.30 és molt més ràpid a l'hora de carregar i recarregar una aplicació que la versió 5.5, i no estam parlant de dècimes de segons, la diferència pot ser de varis minuts :O
Així que per ara desenvoluparé amb Netbeans i Tomcat 5. He configurat l'entorn per a que ho admeti, així que ara per ara ja sols em quedarà configurar el tema del JNDI i Hibernate. Ja tenc enllestida la part d'Struts i EL. En la part d'EL és curiós veure que els assistents de Netbeans encara venen amb la versió anterior de JSP i hi ha que personaltizar la capçalera de l'arxiu web.xml per a tenir accés a l'especificació JSP 2.0.
Per mi és important tenir activa la opció del Expression Languaje, ja que fa que no sigui necessàri posar codi java dins la capa de presentació. Amb això i el Velocity, la propera llibreria que vull mirar me crec que ja tendré la part de presentació llesta.
Una altra cosa que he notat per ara és que l'entorn de desenvolupament Java no està pensat per a PowerPC, o al manco no per als Macs que funcionen amb Linux. No sé si és la Fedora que està carregant molt la màquina o què, però la veritat és que hi trob molta diferència entre la màquina que faig servir a la feina, un Dell a 3 GHz i 1 Gb de RAM i el meu G5 de doble processador a 2 GHz. Guanya de molt la màquina Dell i a més puc fer servir el darrer JSDK. Pel que vull fer a casa el PPC ja em va bé, però si tingués que desenvolupar aplicacions Java a casa per viure tendria que passar a màquina AMD o Intel. Això sí la pantalla d'Apple no la canvio per la TFT que tenc a la feina, està clar que els preus no són comparables ;)
De totes maneres crec que en alguns departaments de programació encara es fa feina amb màquines velles o pantalles CRT de 17". No ho acab d'entendre jo a això: un programador que fa feina amb pocs recursos vol dir que perd molt del temps esperant a a que acabi una compilació, moguent una finestra d'aquí cap allà perquè no té espai per veure el depurador i el codi a la vegada, etc. Suposem que es perd mitja hora diaria amb això, i suposem que el cost mig és de 30 Eur/hora, els càlculs són molts bons de fer i surten al voltant dels 3600 Eur de pèrdua anual per l'empresai.
Si aquesta perdua d'invertís en bon material, que suposem que anam canviant cada dos anys, tindriem un guany adicional de 5200 Eur, més i tot en funció del que es pugui treure per l'equip antic. Ara multipliquem-ho per 10 programadors: 52.000 Eur!!! Divertit, veritat?
Traducciones/Translations by apertium
0 comentaris, 0 trackbacks (URL) , Tags: Java
G5 amb Fedora Core 4
Escrit per Aaloy a 05 de July , 2005 a les 10:17 p.m.
Traducciones/Translations by apertium
0 comentaris, 0 trackbacks (URL)
