Mysql has a nice “if exists” addition to the drop table statement. If the table to be dropped does not exists, it doesn’t raise an exception but only creates a warning.
In Oracle RDMBS you can emulate this behavior like so:
BEGIN EXECUTE immediate 'drop table INSERT_TABLE_NAME_HERE'; EXCEPTION WHEN others THEN IF SQLCODE != -942 THEN RAISE; END IF; END;
/
Ugly, but it works very well.
Share This
Java has the nice Iterable interface (since Java 5, i guess) that allows object oriented loops like
List<String> strings = new ArrayList<String>();
for(String string : strings)
System.out.println(string);
but guess what, a simple array is not iterable…
In case you need one, feel free to use this one:
package ac.simons;
import java.util.Iterator;
public class IterableArray<T> implements Iterable<T> {
private class ArrayIteratorImpl implements Iterator<T> {
private int position = 0;
@Override
public boolean hasNext() {
return data != null && this.position < data.length;
}
@Override
public T next() {
return data[position++];
}
@Override
public void remove() {
throw new UnsupportedOperationException();
}
}
private final T[] data;
public IterableArray(T[] data) {
this.data = data;
}
@Override
public Iterator<T> iterator() {
return new ArrayIteratorImpl();
}
}
Share This
Some would say, i have 3 problems
private final static Pattern placeholder = Pattern.compile("#\\{(\\w+?)\\}");
won’t match “Mot#{ö}rhead” for example.
To replace the word character \w you either need the list of possible unicodeblocks like [\p{InLatin}|\p{InEtc}] (you get the codes for the blocks through “Character.UnicodeBlock.forName” or you’re lazy like me and just use the dot:
private final static Pattern placeholder = Pattern.compile("#\\{(.+?)\\}");
Oh what a day… :/
Share This
The default behavior for quite a long time was :hard_breaks in the textilize helper method in rails.
Hard Breaks means: All line breaks are turned into <br />’s.
Somebody changed the textilize helper in “actionpack-2.3.4/lib/action_view/helpers/text_helper.rb” in 2.3.4 and added the ability to pass some options but broke the default behavior here:
def textilize(text, *options)
options ||= [:hard_breaks]
# ...
Options will never be null.
I fixed this by monkey patching the module through the following code in config/initializers/textilizepatch.rb
module ActionView
module Helpers
module TextHelper
def textilize(text, *options)
options = [:hard_breaks] if options == nil || options.size == 0
if text.blank?
""
else
textilized = RedCloth.new(text, options)
textilized.to_html
end
end
end
end
end
Such changes should be tested… *grml*
Share This
You can use
RAILS_DEFAULT_LOGGER.log "foobar"
# or
Rails.logger.log "blah"
outside a controller for logging.
Share This