Thursday, June 24, 2010

Wily Code

Ok, so it all started when I encountered this curiously laborious little line of code in a client's app:
String s = String.valueOf(" ");
As I said, it's quite a laborious way to initialize a string to a space. Never mind that the code in question didn't actually need that space for anything. I thought it was quaint, and wondered what other creative idioms we might employ to initialize a string to a single space character.

So Eric Galluzzo and I came up with some "brilliant ideas." Most of the samples will actually work if you compile and run them.

New
String space = new String(MessageFormat.format(
 new String(new byte[]{123,48,125}), new String(new byte[]{32})));

Symmetrical
/*/
/*/; String space = "" + " " + ""  /* | *\ "" + " " + "" = space String ;/*/;
/*/
/*/

Bees!
String space = "b\bb\bb\bb\bb\bb\bb\bb\bb\bb\bb\bb\b ";
  // only works if you write this to something that will actually execute the backspace.

Binary-Encoded Space
String charCode = "100000";
        int chr = Integer.parseInt(charCode.substring(5)) 
         + (Integer.parseInt(charCode.substring(4, 5)) << 1)
         + (Integer.parseInt(charCode.substring(3, 4)) << 2)
         + (Integer.parseInt(charCode.substring(2, 3)) << 3)
         + (Integer.parseInt(charCode.substring(1, 2)) << 4)
         + (Integer.parseInt(charCode.substring(0, 1)) << 5);
        String space = String.valueOf((char)chr);
Bit Twiddler
String space = String.valueOf((char) (32&1 + 32&2 + 32&4 + 32&8 + 32&16 + 32&32); 

ASCII Art
String space = (
                  "#####                               " +                            
                  "#     # #####    ##    ####  ###### " +
                  "#       #    #  #  #  #    # #      " +     
                  " #####  #    # #    # #      #####  " +
                  "      # #####  ###### #      #      " +
                  "#     # #      #    # #    # #      " +
                  " #####  #      #    #  ####  ######. "  ).replaceAll("#", "").trim().replaceAll(".", " ");
Around-The-World
// get space from China
    HttpClient client = new HttpClient();
    GetMethod get = new GetMethod("http://www.china.cn");
    client.executeMethod(get);
    String response = get.getResponseBodyAsString();
    String space = response.charAt(response.indexOf(" ")) + "";
    
    // or if you're feeling more poetic, get your space from space at nasa.gov
Wait for space to come to you
DatagramSocket udpSock = new DatagramSocket(68);  // get data from DHCP requests on the network
 DatagramPacket packet = new DatagramPacket(new byte[5120], 5120);
 boolean found = false;
 while (!found) { 
   udpSock.receive(packet);
   byte[] data = packet.getData();
   Arrays.sort(data);
   int indx = Arrays.binarySearch(data, 32);
   if (indx >= 0) {
  String space = String.valueOf((char) data[indx]);
  found = true;
          }
        }

 // disclaimer: your network security group might not like you sniffing the wire, so although
        // this code works, I recommend you don't ever use it, even though it's an irresistible way
        // to initialize a string ;-)

Java Intermediate Language (IL)
0  ldc  [16]
    2  astore_1 [space]

Perl programmer
String exp = "/( {1})/";
Pattern.compile(exp)... ah forget it, I can do this in Perl without even typing anything !!

Vendor-Specific
/*
 * Thanks to Eric Galluzzo for reminding us of the importance of vendor-specific implementations!
 * I wouldn't doubt that someone, somewhere is doing this...
 */ 

import com.vendor.string.String;
import com.vendor.string.StringInitializer;
import com.vendor.string.StringUsingApplication;
 

public class MyApplication extends StringUsingApplication {

    private String myString;

    @Override
    protected void initializeStrings() {
        myString = StringInitializer.getInstance().initializeString( " " );
    }
}

String-Definition Domain Specific Language
# file space.stringdef
 define string {
    immutable
    encoding UTF-8
    locale en-us
    initialize with \s
 }
// file SomeClass.java
String space = StringDSLEngine.loadString("space.stringdef");
    
// implementation of StringDSLEngine is left to the reader as an exercise.


Enterprise Architecture

It has been recommended, in keeping with corporate architectural strategies and best practices, that the new string initialization service be designed to be as simple as possible, while leveraging key synergies across business unit infrastructure.  We have achieved this goal, and, as required by the SOA governance board, provide for all critical SLAs.

    All applications going forward will be required to use the string initialization service, as an enterprise best practice, to ensure optimal flexibility, uniformity and reliability.

    Initial development and deployment is projected to see an initial $2 million investment, it is also projected to produce $10 Million ROI per annum.

    Among key benefits of this architecture are the new character database that allows seamless support for new character encodings, a vital capability if new character sets are ever introduced.  This uniquely positions the organization to respond quickly as Unicode is retired in favor of the Intergalactic Character Set (IGCS).

2 comments:

  1. I definitely advocate the enterprise architect's solution. That's really the only way to make string initialization truly scalable.

    Now how do you initialize superstrings?

    ReplyDelete
  2. After all this time, I just noticed your question, Eric.

    How to initialize superstrings? The Big Bang, I think. :-)

    ReplyDelete