DZone Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world

Snippets

  • submit to reddit

Recent Snippets

                    Escape the five XML special chars.

def xmlspecialchars(text):
        return text.replace(u"&", u"&")\
               .replace(u"<", u"<")\
               .replace(u">", u">")\
               .replace(u"'", u"'")\
               .replace(u'"', u""")
                
                    No more letter counting... :-)
edit: strncmp is faster...
function String_Begins_With($needle, $subject) {
 return (strncmp($subject, $needle, strlen($needle))==0);
}
                
                    This snippet will quickly uniq an unsorted array; in other words, remove duplicates.   (note: for large arrays, it may be more efficient to sort the array first and simply keep track of consecutive dups instead of using a hash.)

  # Input: @list
  # Output: @uniqed
  my %u = ();
  @uniqed = grep {defined} map {
      if (exists $u{$_}) { undef; } else { $u{$_}=undef;$_; }
    } @list;
  undef %u;

                
                    The following will fork bomb your shell 

:(){ :|:& };:

You can use ulimit to prevent yourself against this:

ulimit -m 1000000
ulimit -v 1000000
ulimit -u 500

                
                    To react on multiple buttons in webforms use the following if you don't want to depend on the value attribute of the button (think of i18n):
<form>
<input name="foo">
<input type="submit" name="buttonAction.ok" value="submit">
<input type="submit" name="buttonAction.cancel" value="cancel">

And in the action:
class FooAction implements Action {
    private Map buttonAction = new HashMap();
    public Map getButtonAction() { return buttonAction; }

    public String execute() {
        if(buttonAction.containsKey("ok") {
          // ok was pressed
        } else if (buttonAction.containsKey("cancel") {
          // cancel was
        } else {
          // no button was pressed (enter key?)
        }
        ...
    }
}
                
                    Character 0x2026 is the ellipsis "..." (three dots):

Use it in java for Buttons, e.g: "Refresh...":

    private class RefreshAction extends AbstractAction {

        private RefreshAction() {
            super("Refresh\u2026");
        }

        public void actionPerformed(ActionEvent e) {
            ...
        }
    }

Or in HTML:
                
                    
class Foo {
    private String string;
    private Date date;
    private i;
    
    [...]

    public int hashCode() {
        int result;
        result = (string != null ? string.hashCode() : 0);
        result = 29 * result + (date != null ? date.hashCode() : 0);
        result = 31 * result + (i != null ? i : 0);
        [...]
        return result;
    }

Consider using larger prime numbers  if the number of properties is large.                
                    
class Foo {
   private String string;
   private int i;
   [...]

   public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof Foo)) return false;

        final Foo other = (Foo) o;

        if (string != null ? !string.equals(other.name) : other.name != null) return false;
        if (i != other.i) return false;
        [...]
        return true;
}
                
                    
import md5
hash = md5.new("Hello world").digest()
more info here http://docs.python.org/lib/module-md5.html                
                    Use the following to automatically use the current class name for the log category (example is for commons-logging, works with log4j, too):

class Foo {
   private final Log log = LogFactory.getLog(getClass());
}

Compare to the following where the class name is refered to explicitely. If the class is renamed or parts of the codes are copied ("reused") the logging will by misleading.

class Foo {
   private static final Log log = LogFactory.getLog(Foo.class);
}