open-menu closeme
Home
RetroComp icon
Retro Computing Articles Composition Notebooks 8bit
DevOps icon
Automation K8s Done Right
GenAI icon
Fatlama Newsletter Generative AI
Projects icon
Software Projects Arduino Esp8266 SQLite
Status
Links icon
GitHub LinkedIn
About
馃寪
English Italiano
github linkedin rss
  • Celeste

    calendar Aug 17, 2006 路 2 min read
     blog-objectsrootcom en  路 ant apple arc bad code development email engine example giovanni google http list reader sage script smart squeak steve system test tutorial ui vi
     路
    Share on: twitter facebook linkedin copy
    Celeste

    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
  • Java Session Fancy Printing

    calendar Mar 27, 2007 路 2 min read
     blog-objectsrootcom en  路 http java list sage
     路
    Share on: twitter facebook linkedin copy
    Java Session Fancy Printing

    聽聽聽 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
  • Javascript and Smalltalk

    calendar Feb 15, 2008 路 3 min read
     blog-objectsrootcom en software  路 ajax ant build car code development easy features fix future git good hard html http interface java javascript jquery performance ping programming project sage script simple small smalltalk squeak system tip ui usa vi war web
     路
    Share on: twitter facebook linkedin copy
    Javascript and Smalltalk

    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

    calendar Aug 30, 2010 路 3 min read
     it knowledgebase software  路 development matematica python sage
     路
    Share on: twitter facebook linkedin copy
    Sage e Mathematica, per il vostro agosto matematico
    Ad agosto ci siamo dedicati ad un po' di matematica, e vogliamo recensire due software che possono semplificare i vostri esperimenti.
    Sage
    Il primo 猫 open source e si chama Sage:http://www.sagemath.org/

    Read More

Giovanni Giorgi

Master Solution Architect, father and free spirit.
Read More

Recent Posts

  • Interludio sul value investing
  • Anubis: DDos Protection
  • KarmaKit and Watchtower
  • FatLama for GenAI: The comeback!

Latest comments

    Disclaimer

    Gioorgi is a participant in the Amazon Services LLC Associates Program, an affiliate advertising program designed to provide a means for website owners to earn advertising fees by advertising and linking to amazon.com, audible.com, and any other website that may be affiliated with Amazon Service LLC Associates Program. As an Amazon Associate we earn from qualifying purchases.
    Last updated:2025-05-27 02:00
    Giovanni Giorgi

    Copyright 1999-  GIOVANNI GIORGI. All Rights Reserved

    to-top