Rajneesh's Posterous

A collection of articles, links, tips, news - all things around us!

  • Why You Should Question Your Culture

    • 12 Oct 2011
    • 0 Responses
    •  views
    • Edit
    • Delete
    • Tags
    • Autopost

    Organizational culture powerfully influences a company's performance — or at least we say so. I often hear executives reassure me that projects will get done because "we have an execution culture," or that customers will be well taken care of because "we have a culture where the customer comes first." At the same time, culture is also one of the great rationalizations for managerial shortcomings. Many times I've heard that a project was delayed because "we don't make quick decisions around here," which is the managerial equivalent of "the dog ate my homework."

    But the problem with all of these statements — both positive and negative — is that they don't really mean anything. Worse yet, they can't be translated into any kind of action. At best these declarations are vague generalizations; and at worst they are misleading stereotypes.

    The truth is that most leaders don't know how to develop a useful picture of their organization's culture, which is why they resort to platitudes. However when managers can better articulate the behavioral patterns that constitute the culture, they can determine which behaviors facilitate results — and which behaviors should be avoided...

    via blogs.hbr.org

    • Tweet
  • Create offline Web applications on mobile devices with HTML5

    • 4 Oct 2011
    • 0 Responses
    •  views
    • html5 mobile offline webapp
    • Edit
    • Delete
    • Tags
    • Autopost
    Summary:  Writing applications for multiple operating systems and a wide range of mobile devices can be challenging. The high demand for sophisticated mobile applications requires significant hardware. One solution is to provide Web applications, because they can run cross-platform on mobile devices. You don't need to use proprietary technology (such as Objective-C with Cocoa on the iPhone); you can use common Web technology. In essence, just one version of the application is needed. The main hardware power is provided by servers. In this article, explore the use of Web development in the mobile application space with a simple example that taps into the HTML5 standard.
    via ibm.com

    • Tweet
  • Another Fun Data Point

    • 19 Sep 2011
    • 0 Responses
    •  views
    • Edit
    • Delete
    • Tags
    • Autopost

    When Apple’s market cap hits $400 billion, they’ll be worth more than Microsoft and Google — combined. 

    They’re now less than $20 billion away from that happening. 

    via parislemon.com

    • Tweet
  • Google Flight Search

    • 14 Sep 2011
    • 1 Response
    •  views
    • Edit
    • Delete
    • Tags
    • Autopost

    Starting today, when you search for flight information on Google, for example “flights from Chicago to Denver,” you will see a “Flights” link in the left-hand panel. This link leads to our new Flight Search feature, and is offered in addition to the flight schedules which have been available since May. You can also access the Flight Search feature directly at google.com/flights.

    via insidesearch.blogspot.com

    • Tweet
  • Target.com crashes

    • 13 Sep 2011
    • 0 Responses
    •  views
    • Edit
    • Delete
    • Tags
    • Autopost

    woof!

    We are suddenly extremely popular. You may not be able to access our site momentarily due to unusually high traffic. Please stay here and we'll try to get you in as soon as we can!


    Please know that there is no need to refresh your browser. Your request will automatically retry in 30 seconds.


    Thank you and our apologies for the inconvenience.


    We're up and running here

    • redcard
    • weekly ad
    • find a store
    via target.com

    http://www.usatoday.com/money/industries/retail/story/2011-09-13/target-websi...

    • Tweet
  • What happens after a Greek default

    • 13 Sep 2011
    • 0 Responses
    •  views
    • Edit
    • Delete
    • Tags
    • Autopost
    As Greece falls, many are wondering how the rest of the European sovereign debt crisis will play out. For the euro to survive, it needs to have a more unified economic policy behind it.
    via finance.fortune.cnn.com

    • Tweet
  • Build a Side-scrolling Site Layout with CSS & jQuery

    • 1 Mar 2011
    • 0 Responses
    •  views
    • css jquery
    • Edit
    • Delete
    • Tags
    • Autopost

    A sideways style lends itself well to designs with a bit of an “arty” feel: brochure-style sites, galleries, portfolios, and perhaps even sites that make use of interesting info-graphics or charts. Successful horizontal layouts often use animation and graphics to highlight their sideways movement — a large number of these sites use colorful images and nice, big backgrounds that really show this off. Unusual also means unfamiliar, so a well-designed horizontal layout will also make good use of navigation elements such as menus, arrows, and buttons to overcome any usability hitches.

    As far as what goes into one of these sites — well, it turns out that it’s actually pretty easy. Let’s take a look at how to build our own groovy, scrolly, sideways website using just a bit of simple CSS and jQuery.

    via blogs.sitepoint.com

    • Tweet
  • Tutorial - Learn Python in 10 minutes

    • 28 Feb 2011
    • 0 Responses
    •  views
    • Edit
    • Delete
    • Tags
    • Autopost

    Preliminary fluff

    So, you want to learn the Python programming language but can’t find a concise and yet full-featured tutorial. This tutorial will attempt to teach you Python in 10 minutes. It’s probably not so much a tutorial as it is a cross between a tutorial and a cheatsheet, so it will just show you some basic concepts to start you off. Obviously, if you want to really learn a language you need to program in it for a while. I will assume that you are already familiar with programming and will, therefore, skip most of the non-language-specific stuff. The important keywords will be highlighted so you can easily spot them. Also, pay attention because, due to the terseness of this tutorial, some things will be introduced directly in code and only briefly commented on.

    Properties

    Python is strongly typed (i.e. types are enforced), dynamically, implicitly typed (i.e. you don’t have to declare variables), case sensitive (i.e. var and VAR are two different variables) and object-oriented (i.e. everything is an object).

    Getting help

    Help in Python is always available right in the interpreter. If you want to know how an object works, all you have to do is call help(<object>)! Also useful are dir(), which shows you all the object’s methods, and <object>.doc, which shows you its documentation string:

    >>> help(5)
    Help on int object:
    (etc etc)

    >>> dir(5)
    ['__abs__', '__add__', ...]

    >>> abs.__doc__
    'abs(number) -> number\n\nReturn the absolute value of the argument.'

    Syntax

    Python has no mandatory statement termination characters and blocks are specified by indentation. Indent to begin a block, dedent to end one. Statements that expect an indentation level end in a colon (:). Comments start with the pound (#) sign and are single-line, multi-line strings are used for multi-line comments. Values are assigned (in fact, objects are bound to names) with the equals sign (”=”), and equality testing is done using two equals signs (”==“). You can increment/decrement values using the += and -= operators respectively by the right-hand amount. This works on many datatypes, strings included. You can also use multiple variables on one line. For example:

    >>> myvar = 3
    >>> myvar += 2
    >>> myvar
    5
    >>> myvar -= 1
    >>> myvar
    4
    """This is a multiline comment.
    The following lines concatenate the two strings."
    ""
    >>> mystring = "Hello"
    >>> mystring += " world."
    >>> print mystring
    Hello world.
    # This swaps the variables in one line(!).
    # It doesn't violate strong typing because values aren't
    # actually being assigned, but new objects are bound to
    # the old names.
    >>> myvar, mystring = mystring, myvar

    Data types

    The data structures available in python are lists, tuples and dictionaries. Sets are available in the sets library (but are built-in in Python 2.5 and later). Lists are like one-dimensional arrays (but you can also have lists of other lists), dictionaries are associative arrays (a.k.a. hash tables) and tuples are immutable one-dimensional arrays (Python “arrays” can be of any type, so you can mix e.g. integers, strings, etc in lists/dictionaries/tuples). The index of the first item in all array types is 0. Negative numbers count from the end towards the beginning, -1 is the last item. Variables can point to functions. The usage is as follows:

    >>> sample = [1, ["another", "list"], ("a", "tuple")]
    >>> mylist = ["List item 1", 2, 3.14]
    >>> mylist[0] = "List item 1 again"
    >>> mylist[-1] = 3.14
    >>> mydict = {"Key 1": "Value 1", 2: 3, "pi": 3.14}
    >>> mydict["pi"] = 3.15
    >>> mytuple = (1, 2, 3)
    >>> myfunction = len
    >>> print myfunction(mylist)
    3

    You can access array ranges using a colon (:). Leaving the start index empty assumes the first item, leaving the end index assumes the last item. Negative indexes count from the last item backwards (thus -1 is the last item) like so:

    >>> mylist = ["List item 1", 2, 3.14]
    >>> print mylist[:]
    ['List item 1', 2, 3.1400000000000001]
    >>> print mylist[0:2]
    ['List item 1', 2]
    >>> print mylist[-3:-1]
    ['List item 1', 2]
    >>> print mylist[1:]
    [2, 3.14]

    Strings

    Its strings can use either single or double quotation marks, and you can have quotation marks of one kind inside a string that uses the other kind (i.e. “He said ‘hello’.” is valid). Multiline strings are enclosed in triple double (or single) quotes (”“”). Python supports Unicode out of the box, using the syntax u“This is a unicode string”. To fill a string with values, you use the % (modulo) operator and a tuple. Each %s gets replaced with an item from the tuple, left to right, and you can also use dictionary substitutions, like so:

    >>>print "Name: %s\nNumber: %s\nString: %s" % (myclass.name, 3, 3 * "-")
    Name: Poromenos
    Number: 3
    String: ---

    strString = """This is
    a multiline
    string."
    ""

    # WARNING: Watch out for the trailing s in "%(key)s".
    >>> print "This %(verb)s a %(noun)s." % {"noun": "test", "verb": "is"}
    This is a test.

    Flow control statements

    Flow control statements are if, for, and while. There is no select; instead, use if. Use for to enumerate through members of a list. To obtain a list of numbers, use range(<number>). These statements’ syntax is thus:

    rangelist = range(10)
    >>> print rangelist
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    for number in rangelist:
        # Check if number is one of
        # the numbers in the tuple.
        if number in (3, 4, 7, 9):
            # "Break" terminates a for without
            # executing the "else" clause.
            break
        else:
            # "Continue" starts the next iteration
            # of the loop. It's rather useless here,
            # as it's the last statement of the loop.
            continue
    else:
        # The "else" clause is optional and is
        # executed only if the loop didn't "break".
        pass # Do nothing

    if rangelist[1] == 2:
        print "The second item (lists are 0-based) is 2"
    elif rangelist[1] == 3:
        print "The second item (lists are 0-based) is 3"
    else:
        print "Dunno"

    while rangelist[1] == 1:
        pass

    Functions

    Functions are declared with the “def” keyword. Optional arguments are set in the function declaration after the mandatory arguments by being assigned a default value. For named arguments, the name of the argument is assigned a value. Functions can return a tuple (and using tuple unpacking you can effectively return multiple values). Lambda functions are ad hoc functions that are comprised of a single statement. Parameters are passed by reference, but immutable types (tuples, ints, strings, etc) cannot be changed. This is because only the memory location of the item is passed, and binding another object to a variable discards the old one, so immutable types are replaced. For example:

    # Same as def f(x): return x + 1
    functionvar = lambda x: x + 1
    >>> print functionvar(1)
    2

    # an_int and a_string are optional, they have default values
    # if one is not passed (2 and "A default string", respectively).
    def passing_example(a_list, an_int=2, a_string="A default string"):
        a_list.append("A new item")
        an_int = 4
        return a_list, an_int, a_string

    >>> my_list = [1, 2, 3]
    >>> my_int = 10
    >>> print passing_example(my_list, my_int)
    ([1, 2, 3, 'A new item'], 4, "A default string")
    >>> my_list
    [1, 2, 3, 'A new item']
    >>> my_int
    10

    Classes

    Python supports a limited form of multiple inheritance in classes. Private variables and methods can be declared (by convention, this is not enforced by the language) by adding at least two leading underscores and at most one trailing one (e.g. “__spam”). We can also bind arbitrary names to class instances. An example follows:

    class MyClass:
        common = 10
        def __init__(self):
            self.myvariable = 3
        def myfunction(self, arg1, arg2):
            return self.myvariable

        # This is the class instantiation
    >>> classinstance = MyClass()
    >>> classinstance.myfunction(1, 2)
    3
    # This variable is shared by all classes.
    >>> classinstance2 = MyClass()
    >>> classinstance.common
    10
    >>> classinstance2.common
    10
    # Note how we use the class name
    # instead of the instance.
    >>> MyClass.common = 30
    >>> classinstance.common
    30
    >>> classinstance2.common
    30
    # This will not update the variable on the class,
    # instead it will bind a new object to the old
    # variable name.
    >>> classinstance.common = 10
    >>> classinstance.common
    10
    >>> classinstance2.common
    30
    >>> MyClass.common = 50
    # This has not changed, because "common" is
    # now an instance variable.
    >>> classinstance.common
    10
    >>> classinstance2.common
    50

    # This class inherits from MyClass. Multiple
    # inheritance is declared as:
    # class OtherClass(MyClass1, MyClass2, MyClassN)
    class OtherClass(MyClass):
        # The "self" argument is passed automatically
        # and refers to the class instance, so you can set
        # instance variables as above, but from inside the class.
        def __init__(self, arg1):
            self.myvariable = 3
            print arg1

    >>> classinstance = OtherClass("hello")
    hello
    >>> classinstance.myfunction(1, 2)
    3
    # This class doesn't have a .test member, but
    # we can add one to the instance anyway. Note
    # that this will only be a member of classinstance.
    >>> classinstance.test = 10
    >>> classinstance.test
    10

    Exceptions

    Exceptions in Python are handled with try-except [exceptionname] blocks:

    def some_function():
        try:
            # Division by zero raises an exception
            10 / 0
        except ZeroDivisionError:
            print "Oops, invalid."
        else:
            # Exception didn't occur, we're good.
            pass
        finally:
            # This is executed after the code block is run
            # and all exceptions have been handled, even
            # if a new exception is raised while handling.
            print "We're done with that."

    >>> some_function()
    Oops, invalid.
    We're done with that.

    Importing

    External libraries are used with the import [libname] keyword. You can also use from [libname] import [funcname] for individual functions. Here is an example:

    import random
    from time import clock

    randomint = random.randint(1, 100)
    >>> print randomint
    64

    File I/O

    Python has a wide array of libraries built in. As an example, here is how serializing (converting data structures to strings using the pickle library) with file I/O is used:

    import pickle
    mylist = ["This", "is", 4, 13327]
    # Open the file C:\binary.dat for writing. The letter r before the
    # filename string is used to prevent backslash escaping.
    myfile = file(r"C:\binary.dat", "w")
    pickle.dump(mylist, myfile)
    myfile.close()

    myfile = file(r"C:\text.txt", "w")
    myfile.write("This is a sample string")
    myfile.close()

    myfile = file(r"C:\text.txt")
    >>> print myfile.read()
    'This is a sample string'
    myfile.close()

    # Open the file for reading.
    myfile = file(r"C:\binary.dat")
    loadedlist = pickle.load(myfile)
    myfile.close()
    >>> print loadedlist
    ['This', 'is', 4, 13327]

    Miscellaneous

    • Conditions can be chained. 1 < a < 3 checks that a is both less than 3 and more than 1.
    • You can use del to delete variables or items in arrays.
    • List comprehensions provide a powerful way to create and manipulate lists. They consist of an expression followed by a for clause followed by zero or more if or for clauses, like so:

    >>> lst1 = [1, 2, 3]
    >>> lst2 = [3, 4, 5]
    >>> print [x * y for x in lst1 for y in lst2]
    [3, 4, 5, 6, 8, 10, 9, 12, 15]
    >>> print [x for x in lst1 if 4 > x > 1]
    [2, 3]
    # Check if an item has a specific property.
    # "any" returns true if any item in the list is true.
    >>> any([i % 3 for i in [3, 3, 4, 4, 3]])
    True
    # This is because 4 % 3 = 1, and 1 is true, so any()
    # returns True.

    # Check how many items have this property.
    >>> sum(1 for i in [3, 3, 4, 4, 3] if i == 4)
    2
    >>> del lst1[0]
    >>> print lst1
    [2, 3]
    >>> del lst1

    • Global variables are declared outside of functions and can be read without any special declarations, but if you want to write to them you must declare them at the beginning of the function with the “global” keyword, otherwise Python will bind that object to a new local variable (be careful of that, it’s a small catch that can get you if you don’t know it). For example:

    number = 5

    def myfunc():
        # This will print 5.
        print number

    def anotherfunc():
        # This raises an exception because the variable has not
        # been bound before printing. Python knows that it an
        # object will be bound to it later and creates a new, local
        # object instead of accessing the global one.
        print number
        number = 3

    def yetanotherfunc():
        global number
        # This will correctly change the global.
        number = 3

    Epilogue

    This tutorial is not meant to be an exhaustive list of all (or even a subset) of Python. Python has a vast array of libraries and much much more functionality which you will have to discover through other means, such as the excellent book Dive into Python. I hope I have made your transition in Python easier. Please leave comments if you believe there is something that could be improved or added or if there is anything else you would like to see (classes, error handling, anything).


    Creative Commons License


    This work is licensed under a
    Creative Commons Attribution-Share Alike 3.0 License.

    View the discussion thread.
    via korokithakis.net

    • Tweet
  • 20 Software Development Best Practices

    • 28 Feb 2011
    • 1 Response
    •  views
    • Edit
    • Delete
    • Tags
    • Autopost


    Below are a compilation of 20 software development best practices:

    1. Always use source control system even if the project has only one developer. By doing that, you don't lose some or whole code immediately, can share same source file by multiple person and can take the whole advantage of coding histories. 
    2. Follow coding standards and check that standard with automized tools.
    3. Be consistent. If you do operations in a specific way, do that kind of operations in the same way (e.g. defining variable/method/class names, paranthesis usage etc.).
    4. More code does not mean better code. Keep it simple and reduce complexity.
    5. Don't use magic numbers and strings directly in the code. Use constants. This method provides more modularity and understandability.
    6. Don't use comment lines to delete code, just delete. Version controling system will help you if deleted code is required.
    7. Delete unused methods and classes. Version controling system will help you if deleted code is required.
    8. Catch specific exceptions instead of highest level class 'Exception'. This will provide understandability and more performance.
    9. Use understandable and long names for variables. Loop variable names can be i, j, k, index etc., local variable names must be longer than loop variables, parameter names must be longer than local variables and static variable names must be longer than parameters;  proportional with scope size.
    10. Package related classes (that changed together and/or used together) together.
    11. Use understandable comments. Bad comment is worse than no comment.
    12. Use positive conditionals. Readability of positive conditionals are better than negative ones.
    13. Use dependency injection to manage too many singletons.
    14. Use exceptions only for catching exceptions, not for control flow. Think as required and perform control flow with control statements/conditionals.
    15. Don't use so many arguments with methods. Keep the number at most 8-10. If more is required, review your design.
    16. Don't use method alternatives with boolean flag variables (public void someMethod(bool flag)). Write more than one method for each flag condition.  
    17. Method names must include "what is done by this method" information.
    18. Think twice before defining a method as static and be sure if you really need to. Static methods are harder to manage.
    19. Avoid using methods with reference parameters. Use multi attributed object parameters instead.
    20. Interface method numbers must be minimized to decrease coupling/dependency.

    via codebalance.blogspot.com

    • Tweet
  • Aryan

    • 17 Jan 2011
    • 0 Responses
    •  views
    • Edit
    • Delete
    • Tags
    • Autopost
    • Tweet
  • « Previous 1 2 3 4 5 6 7 8 9 Next »
  • About

    An I.T. Services Consultant, Test Lead, a Java Developer, a F&OSS supporter, an avid photographer and cook

    25354 Views
  • Archive

    • 2011 (10)
      • October (2)
      • September (4)
      • March (1)
      • February (2)
      • January (1)
    • 2010 (15)
      • November (2)
      • October (5)
      • September (6)
      • August (1)
      • January (1)
    • 2009 (63)
      • December (2)
      • November (15)
      • October (27)
      • September (19)

    Get Updates

    Subscribe via RSS
    TwitterFacebookLinkedIn