-
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 -
聽聽聽 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 -
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 -
Sage e Mathematica, per il vostro agosto matematico