Tag: ad

  • Whois purely in SSI

    It was fun learning SSI, and tweaking around to get useful information such as detecting your IP adddress, and further WHOIS information.

    See below in action

    http://www.naiksblog.info/ip2country.shtml

    Impressive how quickly a page could be constructed using SSI. Courtesy to Apache’s mod_include, IP to Country database, and APNIC references.

  • 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
  • Brainteasers

    1. How many degrees angle between hour, minute hand when time is 3:15?
      7.5°
      360° full circle, therfore (360°/12 hrs) = 30° /hour.
      At 3:15,  minutes hand points to the 3, hour hand is ahead of 3 by 1/4th (15/60),  which is 7.5° apart. (30°/4)=7.5°
    2. Why are manhole covers round?
      – Round covers can be easily rotated
      – It’s easier to dig a circular hole
      – Round castings are easier to machine using a lathe
      – Easier to manufacture than custom-made covers
    3. How will you generate random number between two given numbers
      Assuming n1, n2 random number between them would be n1 + Math.random() * (n2 – n1)
    4. How will you sort a million integers?
      Split them into meaningful subsets, sort each subset, merge subset back
      http://neopythonic.blogspot.com/2008/10/sorting-million-32-bit-integers-in-2mb.html
    5. How many windows will be open in a 100 window room if you go around  a 100 times toggling each window you come across? All windows are closed initially.
      100 windows,  all closed.
      1st round, you toggle all windows i.e. all windows are opened
      2nd round, you close all even-numbered windows – 2, 4, 6, …
      3rd round, you open, close odd numbered winodws – 3, 6, 9,…
      So after 100 times, windows open are windows who have been toggled odd number of times. For e.g. consider window 12, round 1 will make it open, 2 will make it closed, 3 will make it open, 4 closed, then directly 12 will make it open. Consider again, window 20 – 1 (open), 2 (close), 4 (open), 5 (close), 10 (open), 20 (close). Consider 7 – 1 (open), 7 (close). So window 12 got touched 5 times, window 20 got touched 6 times, window 7 touched 2 times.
      So, in order to find “open” windows between 1-100, we have to find number having “odd” number of factors, which means numbers who have one repeated factor i.e.  factor by same factor gives the number e.g. 16 has 1, 2, 4, 8, 16 – open window. It has 4 which means 4×4= 16. Consider 20 has 1, 2, 4, 5, 10, 20. No factor is repetitive.
      Therefore, let us find numbers which are below 100, but are having square products, similar to 4×4 = 16 starting with 1, which gives 12=1, 22=4, 32=9, 42=16, 52=25, 62=36, 72=49, 82=64, 92=81, 102=100
      So open windows are 1, 4, 9, 16, 25, 36, 49, 64, 81, 100 = 1o open windows
    6. A party of four travelers comes to a rickety bridge at night. The bridge can hold the weight of at most two of the travelers at a time, and it cannot be crossed without using a flashlight. The travelers have one flashlight among them. Each traveler walks at a different speed: The first can cross the bridge in 1 minute, the second in 2 minutes, the third in 5 minutes, and the fourth takes 10 minutes to cross the bridge. If two travelers cross together, they walk at the speed of the slower traveler. What is the least amount of time in which all the travelers can cross from one side of the bridge to the other?
      Obvious (but incorrect)
      Incorrect answer

      Not  so obvious (correct answer)
      Correct answer

    7. Next…

    A party of four travelers comes to a rickety bridge at night. The bridge can hold the weight of at most two of the travelers at a time, and it cannot be crossed without using a flashlight. The travelers have one flashlight among them. Each traveler walks at a different speed: The first can cross the bridge in 1 minute, the second in 2 minutes, the third in 5 minutes, and the fourth takes 10 minutes to cross the bridge. If two travelers cross together, they walk at the speed of the slower traveler.

    What is the least amount of time in which all the travelers can cross from one side of the bridge to the other?

  • 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

  • Colors to your life

    Very often we are impressed with awe when we see a beautiful picture, photo, advert. The colors, their combination presents an alluring view just right for our eyes. If you notice more closer, you can seeing that more often the colors are complemented (red with white, green with blue…) to give a undistracted overall look. This is essentially because our eyes find this visually pleasant.

    I have a tool which can offer such combinations, and you should design your color combinations using the suggested patterns

    http://9i9.me/colors/index.html/ – For visually stunning color combinations

    Keep working!

  • Is the lady spinning clockwise? or anticlockwise?

    Which direction is the lady spinning? - Clockwise or anti-clockwise
    Which direction is the lady spinning? – Clockwise or anti-clockwise

    Some see her spinning clockwise, some say anti-clockwise.

  • Secretmyth BDRips – audio/video out of sync

    More recently, all Secretmyth BDRips I download started to have a audio out of sync with video issue. Real sad, because the movie quality is too good when watching on a 24 inch screen. I use K-Lite, but it seems SecretMyth recommends either KMPlayer or VLC.

    The problem solved using VLC.

  • Interesting alternatives to databases in opensource

    I stumbled upon this url. The list of various options on databases is pretty amazing.

    http://www.webresourcesdepot.com/25-alternative-open-source-databases-engines/

    It’s a definite read. I never knew so many existed.

  • Got my bike license – 大型二輪免許を一発合格しました

    Hurray ! I received my bike license today in Japan ! In my first attempt itself ! Wish me congratulations !

    Bike license in Japan
    My bike license in Japan

    Ok some background – I had a bike license from my country. I had not converted it to International License, so I had to opt only for conversion into Japanese license – 外国免許切り替え. I do have a car license obtained in Japan, so I was exempted from written test (which by the way is too difficult, trust me). Instead, I simply had to appear an actual driving test (which is again difficult, mind you). I was required to produce a translated copy of my original license from my country, which can be done in 30 mins in JAF offices. Rest are your passport (both old, new ones), an application form, few stamps which you can buy right there. I live in Tsukuba, so I had to goto Ibaragi License Center, which is situated in Mito. You can go during weekdays, from 09:00AM. Believe me, you better arrive early. There is plenty of crowd, for all sorts of licenses, and usually you have to spend almost whole day there, in case you pass the test and obtain the license. I spent close fo 6 hours today, but in the end I was a happy guy.

    Once they receive your application, they ask you few questions about your original license – How did you obtain it? Where did you practice? What kind of test did you appear for this license? How many cc bike? Learner’s license? etc. Unless there are any problems, you are then handed over a course map, and timings when your test will start. Mind you, the course map is given so that you “memorize” it, period. You are required to drive the exact course map, observing lane rules, traffic signs, signal, right or left indication, speed or slow. The usual advice is that you have some 45 mins in hand before your test starts. Thus, you should actually take the course map in hand, and walk the entire course by foot atleast once. I did that, making a mental note of the lanes, the distance around which I should turn on the indicator, and so on – till I burnt the course map into my brain cells !

    The most difficult are – Ipponbashi, and Slalom – for me. And I did literally walk on foot imagining I was on bike before my test started.

    I believe I was the only one appearing a bike test today – why I was alone sitting in the waiting room till my turn came. The instructor was kind enough to walk me (verbally) through the course map once again. He also gave me a brief about the bike – Honda CB750 – and for my own safety, in case I should fall, had me wear elbow, knee, body protector before the test.

    When the actual test started, the instructor actually sits in a watchtower, from which he had a complete view of the course. Once he gave a go, I just drove the same path I had walked on foot earlier. I was particularly careful about slow down sign, lane change, and making sure that I move my head from left to right wide enough to show that I am taking visual confirmations before proceeding. At one point when making a turn I did step down, but I guess that was OK, because if I’d had done the same on Ipponbashi or Slalom, or even S-letter, or Crank, I am out without any further discussion. Phew, I did feel once the bike will stop during Crank, but I was lucky enough to make it till the final stop.

    In the end, the instructor appraised my driving skills, and gave me the golden word – “合格” !

  • Tired of teaching how to think

    Sir Ernest Rutherford, President of the Royal Academy, and recipient of the Nobel Prize in Physics, related the following story:

    “Some time ago I received a call from a colleague. He was about to give a student a zero for his answer to a physics question, while the student claimed a perfect score. The instructor and the student agreed to an impartial arbiter, and I was selected.

    I read the examination question: “Show how it is possible to determine the height of a tall building with the aid of a barometer.”

    The student had answered: “Take the barometer to the top of the building,attach a long rope to it, lower it to the street, and then bring it up, measuring the length of the rope. The length of the rope is the height of the building.”

    The student really had a strong case for full credit since he had really answered the question completely and correctly! On the other hand, if full credit were given, it could well contribute to a high grade in his physics course and certify competence in physics, but the answer did not confirm this. I suggested that the student have another try. I gave the student six minutes to answer the question with the warning that the answer should show some knowledge of physics.

    At the end of five minutes, he hadn’t written anything. I asked if he wished to give up, but he said he had many answers to this problem; he was just thinking of the best one. I excused myself for interrupting him and asked him to please go on. In the next minute, he dashed off his answer, which read: “Take the barometer to the top of the building and lean over the edge of the roof. Drop the barometer, timing its fall with a stopwatch.

    Then, using the formula x=0.5*a*t^2, calculate the height of the building.”

    At this point, I asked my colleague if he would give up. He conceded, and gave the student almost full credit. While leaving my colleague’s office, I recalled that the student had said that he had other answers to the problem, so I asked him what they were.

    “Well,” said the student, “there are many ways of getting the height of a tall building with the aid of a barometer. For example, you could take the barometer out on a sunny day and measure the height of the barometer, the length of its shadow, and the length of the shadow of the building, and by the use of simple proportion, determine the height of the building.”

    “Fine,” I said, “and others?”

    “Yes,” said the student, “there is a very basic measurement method you will like. In this method, you take the barometer and begin to walk up the stairs. As you climb the stairs, you mark off the length of the barometer along the wall. You then count the number of marks, and his will give you the height of the building in barometer units.”

    “A very direct method.”

    “Of course. If you want a more sophisticated method, you can tie the barometer to the end of a string, swing it as a pendulum, and determine the value of g [gravity] at the street level and at the top of the building.

    From the difference between the two values of g, the height of the building, in principle, can be calculated.”

    “On this same tack, you could take the barometer to the top of the building, attach a long rope to it, lower it to just above the street, and then swing it as a pendulum. You could then calculate the height of the building by the period of the precession”.

    “Finally,” he concluded, “probably the best,” he said, “is to take the barometer to the basement and knock on the superintendent’s door. When the superintendent answers, you speak to him as follows: ‘Mr. Superintendent, here is a fine barometer. If you will tell me the height of the building, I will give you this barometer.”

    At this point, I asked the student if he really did not know the conventional answer to this question. He admitted that he did, but said that he was fed up with high school and college instructors trying to teach him how to think.

    The name of the student was…

    Neils Bohr

    The Nobel Prize winner in Physics 1922