Tag: file

  • Nicolas performing You should be dancing tonight

    Hilarious, isn't it?

  • Spring and Logback

    IoC, or DI definitely takes a perspective turnaround inside your head, but you get around it slowly.  I was playing around ways to integrate LogBack, and Spring – essentially around having Spring give me a pre-created instance of LogBack logger.

    I searched around posts, but most people seem to be against using Spring just for substituting one-line of Logback (Logger log = LoggerFactory.getLogger("LogbackTest");) to get your logger.

    I, on the other hand, was more interested in how to get Spring give me a LogBack logger instance without too much contrived hand-written code to achieve so. And with a bit of reading through Spring principles, documentation I found the way.

    Essentially, when using Logback’s LoggerFactory you have access to only a single getLogger() factory method. This is static which makes things a bit different for what Spring would call a bean – a class providing constructor, getter, setter methods. To circumvent this non-bean style, Spring provides what you call as static initializers a.k.a substitutes for constructors, which allow you to call a static method in lieu of calling a constructor on an object.

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
     "http://www.springframework.org/dtd/spring-beans.dtd">
    
    <beans>
     <bean id="bean1" class="org.slf4j.LoggerFactory" factory-method="getLogger">
     <constructor-arg value="LogbackTest" />
     </bean>
    </beans>

    Now, this bean1 can be used as a regular bean inside your class

    ApplicationContext ctx = new FileSystemXmlApplicationContext("logbacktest.xml");
     Logger log = (Logger) ctx.getBean("bean1");
    
     log.debug("This is my first message");
     log.info("How about this information message");

    Throw in a logback.xml in your classpath, and viola you have a nice Spring injected dependency – log in your code, while still using Logback!

  • Outlook export to Thunderbird

    There is no straight (should I say “easy”) way to export Outlook mails to Thunderbird. Using Thunderbird’s import from Outlook did not work since quite a few emails came up as raw HTML, and I had to manually change Automatic encoding detection to OFF, Universal to see the contents each time.
    A sure-shot (well… which took me 99% of the) way was Outlook –> Import into Outlook Express –> Import into Thunderbird. This worked, but with one sad issue – non-English attachment names are not as original. If you can live with that, then this is the surest way to go !

    Few references which helped-
    Import .pst files – MozillaZine KB

  • Change VMWare Workstation language to English

    Rename folders present in C:\Program Files\VMware\VMware Workstation\messages, and restart VMWare Workstation. This will make VMWare start in English.

  • Extremely useful tips for Java

    1. A .java class can contain only one top-level public class.  All other top level classes in same .java file cannot be private or protected or public, only default (package-level access) is allowed.
    2. If no package is specified for class, it belongs to unnamed package – which cannot be imported.
    3. Unlike Linux utilities, long parameters or short parameters to java(c) need just a space before parameter value. e.g. -classpath <classpath> or -cp <classpath> are same. There is no -classpath=<classpath> syntax in java(c) command line.
    4. 8 primitive types (byte, short, int, long, float, double, char, boolean), special type void, and base type for all objects – java.lang.Object.
    5. null is not a keyword, type. It is a value.
    6. String objects created using short-hand String A= "a string";
      syntax creates Strings on pool in heap. A is pointer (32-bit to max. 64-bit) to a String object “a string” on heap memory allocated to your program. Using short-hand syntax to “a string” on String B= "a string"; will point to same string object on heap.
    7. Object gets garbage-collected, not it’s reference.
    8. Garbage collection is indeterminate. You cannot guarantee freeing of memory by forcing System.gc()
    9. finalize method is invoked only once before being removed from memory. Always call super.finalize() if you override it.
    10. Parameters (primitive, references) are always passed-by-value. There is no pass-by-reference in Java. The references passed can be used to modify the object the reference points, but not the reference itself is not modified.
    11. Return values from function are also passed by value, never by reference.
    12. Compound operators (+=, -=, *= etc) automatically cast. Compiler never throws any error on data mismatch.
    13. & (and) results in 1 if both are 1, | (or) results in 0 if both are 0, ^ (xor) results in 1 if either operand is 1
    14. char supports increment, decrement operators.
    15. The default isequal() implementation of Object tests for reference equality, which is same as ==.
    16. When using operators, Java automatically promotes values to int or higher. For values below int – byte, short – an explicit cast is required.
    17. extends comes first then implements
    18. Java tokenizes your source into separators (tab or space), keywords, operators, literals, identifiers (variable names).
    19. new zeroes Object’s fields (instance variables), hence explicit initialization can be skipped.
    20. import static allows importing static variables like System.out into your program. Hence, you can simply use out without prefixing it with class name System.
    21. local variables must be initialized before using. Though method parameters are local variables too, since methods are called with parameters, they are initialized.
    22. arrays are fixed size data structures, where as collections are dynamically sized data structures.
    23. For multidimensional arrays, it is easier to imagine the first dimension as a single row containing the other dimensions.
    24. Array initialization always requires dimension to be provided when initializing through new (caught at compile time). If using array initializer, you can specify {} empty braces, but accessing any index at runtime will only result in index out of bounds exception.
    25. There is always a default constructor – empty body – available for your class only if you do not declare any constructor.
    26. super, this must be the first line in constructor. this() or super() both cannot be placed.
    27. Parent class constructor super() is always called. For this reason, you need to have an empty constructor always in parent class.
    28. Method signature is composed of method name and parameters. Modifiers, return type, exception list has nothing to do with it. Access-specifiers however control visibility.
    29. Javabean properties are get-, set- methods provided over a field in Javabean style.
    30. Variable length parameters always come at the end of the list, and they can be empty (meaning nothing was passed). Being at end of the list automatically implies that only variable length parameters is allowed. (Java 5.0)
    31. Overloading means providing different method signatures in same or inheriting class. Overriding means providing same return type, method signature in inheriting class.
    32. Covariant return types means overriding method returns a subclass of return type in parent class. (Java 5.0)
    33. Method hiding means overriding of static methods.
    34. Abstract method has no body. Interface methods are all abstract, while Abstract class can contain zero or more abstract methods.
    35. All abstract method of Interface are public, it’s fields are public, static and final. No static methods are allowed.
    36. Abstract method compiles with static modifier, but generates runtime error if directly accessed. If abstract static method is overridden in child class, child class works fine.
    37. Enum constructors are invoked for each element.
    38. Anonymous inner class can have only one instance. Local inner class can have multiple instances.
    39. Static nested class is similar to any top-level class.
    40. Static fields in class always need default value; otherwise code does not compile.
    41. false is boolean, 0 is not false, it is int zero
    42. switch…case does not allow case null, since a constant (and final) expression is required for case
    43. You can put break in default for switch
    44. enum classes can have main method
    45. for(;;) is a valid for-loop. It never finishes, since it is an infinite loop.
    46. In enhanced for loop, the variable used for iteration must be declared only in for loop, not outside it.
    47. Java complains if you have unreachable while loop code e.g while(false) is not allowed. However, contrarily if(false) is allowed!
    48. Variables declared inside do…while loop are not available in while to test for condition!
    49. It is a good idea to add labels to your loops to enhance readability
    50. Assertion is put in places in your code where you think it should be always true
    51. Though not a good design, but assertions do allow modification on variables while asserting them e.g. assert ++i
    52. try…catch – catch can never have an exception which is a subclass of previous catch clause. It throws compile error.
    53. Checked exceptions always derive from Exception, runtime exceptions derive from RuntimeException, errors derive from Error. Java enforces checked exceptions are either handled or thrown. For runtime, error there is no such rule, even if RuntimeException derives from Exception.
    54. try… must have either catch or finally atleast, otherwise compile gives error
  • https in 5 easy steps

    Simple 5 step guide to setting up https with your own self-signed certificate
    Prerequisites: Apache2, Ubuntu Server

    1. Generate local keypair
      /usr/bin/openssl genrsa -des3 -out {your domain name}.key 3072
    2. Create self-signed certificate
      /usr/bin/openssl req -new -key {your domain name}.key -x509 -out {your domain name}.crt

    3. Configure your host on port 443 to use the certificate
      <VirtualHost {your ip}:443>
      ...
      SSLEngine on
      SSLCertificateFile {path where certificate is}/{your domain name}.crt
      SSLCertificateKeyFile {path where key file is}/{your domain name}.key

      SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
      ...
      </VirtualHost>
    4. Optional: If you do not want to enter key password each you restart Apache, you can embed the password in key itself.
      /usr/bin/openssl rsa -in
      {path where key file is}/{your domain name}.key -out {path where key file is}/{your domain name}.key.nopass
      Remember to update your Apache configuration to use the new file
      # SSLCertificateKeyFile {path where key fileis}/{your domain name}.key
      SSLCertificateKeyFile {path where key file is}/{your domain name}.key.nopass
    5. That’s it view it. Restart your apache to load the new configuration. And try accessing your url with https://

    If you receive a certificate warning, simply accept it, and proceed. Congratulations, your communication is now encrypted, and safe from prying eyes!

    Self-signed certificate

  • How to manually uninstall Symantec Endpoint Protection client from Windows 2000, XP and 2003, 32-bit Editions

    Much recently to my dismay, I figured out that I cannot remove Symantec’s Endpoint Protection from my own laptop without administrator password. I do not own this password, and I do not want anybody other than me permitting me what to uninstall. Hence I went ahead for manual uninstall according to these instructions (from Symantec’s own site) below-

    How to manually uninstall Symantec Endpoint Protection client from Windows 2000, XP and 2003, 32-bit Editions.

    The instructions are crisp and clear. I could manually uninstall following each step of those instructions, but there is one big trouble. The instructions talk to removing over 100’s of registry keys, values which I believe is sheer impossible manually. Why didn’t Symantec simply provide a small tool which has all those instructions bundled in a simple click-n-go fashion?

    I have tried to create a small registry file which can automate the removal of registry entries Uninstall Registry entries for Symantec Endpoint Protection
    For all other manual deletion of files, it would be great to write a small AutoIt script compiled to an exe. Maybe sometime later…

  • vim Settings in the File You’re Editing

    Vim scans the first and last few lines of the file for modelines, if the modeline option is on (which it is, by default). If it finds any it will apply those settings as if you had typed them in manually using :set in command mode.

    #!/bin/sh
    # vim:ts=2:sw=2:expandtab
    

    Übergibson: Embedding vim Settings in the File You’re Editing.

  • TOYOTA: Speech by Akio Toyoda – president of Toyota Motor Corporation

    “Contributing to society” at Toyota means two things.  First, it means, “to manufacture automobiles that meet the needs of society and enrich people’s lives.”  And second, “to take root in the communities we serve by creating jobs, earning profits and paying taxes, thereby enriching the local economies where we operate.”

    TOYOTA: Company > Company Profile > Message from Top Management.

  • Eset Nod32 blocks Trusted zone IPs

    Last whole week I was stumbled by the fact that my home network with 3 PCs suddenly stopped working. None of them were able to “see” each other, except for a little while… strange.
    Technically (since it is easier to describe), A, B, C – my 3 computers – could reach each other, share files, host apache, download files without any extra configuration.
    Last week, however while using C’s http server from A suddenly stopped. Puzzled, I thought the machine might be overloaded, or something like this must be causing page to timeout, or apache must have hanged (does it?). But things seemed to be working OK on C, in fact top showed a load average below 1 ?
    Further puzzled, I tried pinging A to C, and vice-versa. It worked… but only for a while. Pinging after a while seemed to stop. Huh?
    Scourging over the Internet wasn’t easy for answer. Maybe my way of searching was wrong, but I did spent a good week trying to fish out the ping issue, then next to dig deeper to find that accessing C’s IP from outside (it already has a global ip; though dynamic, paired through dyndns to the world) worked. Now each of them – A, B, C – have no internal 192.168 ip’s, just public ip’s. What good are public ip’s if I have to access them from outside than just sitting home?
    Something was wrong.
    To cut short, I called the ISP, asked them if they have changed anything recently (well, I was using A, B, C sharing files for over 6 months now). My ISP reported that no such upgrade, or settings were done. Deeply mad about this situation, I chose to disable the firewall (Eset Nod32) on A, and then tryout the ping – which worked effortlessly to C, and back.
    What the hell! Why did Nod32 suddenly seem to block my own A, B, C from seeing each other? ARP Poisioning? I don’t know, only thing I know is that it shouldn’t block them. 🙂
    Well, atleast things are fine now. I’ve changed settings on Nod32 to Not block threat detected addresses henceforth.