-
Celeste
Celeste is a mail reading and organizing program. The name "Celeste" is a reference to an earlier mail reader named Baba, which was written at Xerox PARC by Steve Putz and John Maloney.
Nowadays, Celeste is maintained by Giovanni Giorgi (me).Latest Feature
A new revision is planned for the end of September 2006, and code name will be "Sonic". Sonic will include a smart mailing-list filter and a better "leave message on server" option. I implemented years ago an auto-filtering system in AppleScript. The filtering engine used the RFC2369 and some other tricks to detect yahoo mailing list. Sonic will have also an auto-filter for google mailing list too.The leave message on server option is quite bad now. It creates a lot of duplicated messages.
The new implementation will avoid dowloading twice a message, using a mix of messageId and timestamp to detect duplicated messages.
Read More -
Ma come fare a gestire la biancheria in questi casi? Ebbene il vostro mentore (cioè io...) ha la soluzione. Grazie a Radio Deejay, ho scoperto il seguente fantastico servizio: http://www.stendibiancheria.net/
che vi dice quando vi conviene stendere la biancheria. Questo modesto servizio, migliora le probabilià di essere più puliti del solito, ed evita che i panni bianchi si sporchino senza una valida ragione.
Read More -
聽聽聽 public static final String convertToString(HttpServletRequest request) {
聽聽聽聽聽聽聽 StringBuffer msg = new StringBuffer();
聽聽聽聽聽聽聽 try {
聽聽聽聽聽聽聽聽聽聽聽 msg.append("*RequestURI:" + request.getRequestURI() + "\n");
聽聽聽聽聽聽聽聽聽聽聽 msg.append("*ContentType:" + request.getContentType() + "\n");
聽聽聽聽聽聽聽聽聽聽聽 msg.append("== Request Header\n");
聽聽聽聽聽聽聽聽聽聽聽 Enumeration headers = request.getHeaderNames();
聽聽聽聽聽聽聽聽聽聽聽 while (headers.hasMoreElements()) {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 String headerName = "" + headers.nextElement();
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 msg.append(headerName + ":" + request.getHeader(headerName) + "\n");
聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽 msg.append("\n");
聽聽聽聽聽聽聽聽聽聽 聽
聽聽聽聽聽聽聽聽聽聽聽 Enumeration attr = request.getParameterNames();聽聽聽聽聽聽聽聽 聽
聽聽聽聽聽聽聽聽聽聽 聽
聽聽聽聽聽聽聽聽聽聽聽 ArrayList l = new ArrayList();
聽聽聽聽聽聽聽聽聽聽聽 String att;
聽聽聽聽聽聽聽聽聽聽聽 while (attr.hasMoreElements()) {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 att = (String) attr.nextElement();
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 l.add(att + " -> " + request.getParameter(att));
聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽 聽
聽聽聽聽聽聽聽聽聽聽聽 msg.append("=== Request ( " + l.size() + " ) ===\n");
聽聽聽聽聽聽聽聽聽聽聽 Object a[] = l.toArray();
聽聽聽聽聽聽聽聽聽聽聽 Arrays.sort(a);
聽聽聽聽聽聽聽聽聽聽聽 for (int i = 0; i < a.length; i++) {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 msg.append((String) a[i]);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 msg.append("\n");
聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽 msg.append("===聽聽 ===聽聽 ===\n");
聽聽聽聽聽聽聽聽聽聽 聽
聽聽聽聽聽聽聽聽聽聽聽 // Process the Session
聽聽聽聽聽聽聽聽聽聽聽 HttpSession session = request.getSession();
聽聽聽聽聽聽聽聽聽聽聽 // msg.append("\n");
聽聽聽聽聽聽聽聽聽聽 聽
聽聽聽聽聽聽聽聽聽聽聽 Enumeration e = session.getAttributeNames();
聽聽聽聽聽聽聽聽聽聽 聽
聽聽聽聽聽聽聽聽聽聽聽 TreeMap t = new TreeMap();
聽聽聽聽聽聽聽聽聽聽聽 String k;
聽聽聽聽聽聽聽聽聽聽聽 while (e.hasMoreElements()) {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 k = (String) e.nextElement();
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 Object oggetto;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 try {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 oggetto = session.getAttribute(k);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 } catch (Throwable notSerializableException) {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 oggetto = "NON DESERIALIZZABILE. Chiave:" + k;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 t.put(k, oggetto);
聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 聽
聽聽聽聽聽聽聽聽聽聽聽 Object orderedKeys[] = t.keySet().toArray();
聽聽聽聽聽聽聽聽聽聽聽 msg.append("=== Session聽 ( " + orderedKeys.length + " " + (usertempz != null ? "+ 1UT" : " NO UT!") + " )===\n");
聽聽聽聽聽聽聽聽聽聽聽 Object elem;
聽聽聽聽聽聽聽聽聽聽聽 for (int i = 0; i < orderedKeys.length; i++) {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 elem = t.get(orderedKeys[i]);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 msg.append(orderedKeys[i]);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 msg.append("\t-> ");
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if (elem != null) {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 nicePrintSessionObj(msg, elem);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 } else {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 msg.append("null");
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 msg.append("\n");
聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽 return msg.toString();
聽聽聽聽聽聽聽 } catch (RuntimeException e) {
聽聽聽聽聽聽聽聽聽聽聽 return msg + "\nERR: Cannot print session/request!!" + e.getMessage();
聽聽聽聽聽聽聽 }
聽聽聽 }
Read More -
Dynamic languages troubles
Jan 30, 2008 路 3 min read en blog-objectsrootcom 路 again ant api arc build business car code complex database design easy eclipse example fix hard hosting http ibm import java lion microsoft perl php plugin project projects python ruby simple small smalltalk software sql system tools trouble ui unix war web world 路I have read http://www.manageability.org/blog/stuff/chandler-failure and I think it is very danger way of exposing concepts.
Read More -
We read in wikipedia:
"Mac OS X is the successor to the original Mac OS, which had been Apple's primary operating system since 1984 [...] The first version released was Mac OS X Server 1.0 in 1999, and a desktop-oriented version, Mac OS X v10.0 followed in March 2001"
The funny thing about MacOSX launch was the huge hype on the retail box: it was named "The world's most advanced operating system" and really it was very huge leap ahead.
Read More -
There is a future for SmallTalk? I was a very strong fan of the SmallTalk language, but in the last five years I have seen more and more contraction of its usage in the IT field.
Read More