Easy way to install PHPUnit

Unit Tests are the living description on how the Unit should work, and ensure that your own Creation is working in that way you wanted to. To write unit test cases in php, I would recommend you to go for PHPUnit. I will tell you an easy way if you are going for a manual installation.

The way of manual installation mentioned in PHPUnit manual is as follows:

  • Download a release archive from http://pear.phpunit.de/get/ and extract it to a directory that is listed in the include_path of your php.ini configuration file.
  • Prepare the phpunit script:
    • Rename the pear-phpunit script to phpunit.
    • Replace the @php_bin@ string in it with the path to your PHP command-line interpreter (usually /usr/bin/php).
    • Copy it to a directory that is in your PATH and make it executable (chmod +x phpunit).

I was bit confused while going through above steps as they mentioned :p.

Easy Method (in linux & mac):

  1. Download a release, extract it (no matter where). And find the phpunit.php inside the extracted folder.
  2. In terminal, change directory to /usr/bin then create symbolic link to phpunit.php and name it phpunit.In case you don't know here is the syntax,

sudo ln -s <absolute_path-to-phpunit.php> phpunit

Happy coding!

RSVP method missing in pyfacebook lib

When I was working with the fbconnect in a python-django project, I found something missing. There was no method to update rsvp for an event. I am not sure how/why those brains missed this case. Anyways, a little hack for the existing pyfacebook library does the job. Here is it.

You can download the existing project from github - http://github.com/sciyoshi/pyfacebook

Inside the package, you just need to edit one file to make it possible. Open facebook/__init__.py in your favourite editor ;).

In that file go to the definition of the dict METHODS change the value of the key 'events', initially it is like

# events methods
    'events': {
        'get': [
            ('uid', int, ['optional']),
            ('eids', list, ['optional']),
            ('start_time', int, ['optional']),
            ('end_time', int, ['optional']),
            ('rsvp_status', str, ['optional']),
        ],
        'getMembers': [
            ('eid', int, []),
        ],
        'create': [
            ('event_info', json, []),
        ],
    },

Now add the rsvp method to the events dict, then this dict will be like this

# events methods
    'events': {
        'get': [
            ('uid', int, ['optional']),
            ('eids', list, ['optional']),
            ('start_time', int, ['optional']),
            ('end_time', int, ['optional']),
            ('rsvp_status', str, ['optional']),
        ],
        'getMembers': [
            ('eid', int, []),
        ],
        'create': [
            ('event_info', json, []),
        ],
        'rsvp': [
            ('eid', int, []),
            ('rsvp_status', str, ['optional']),
        ],
    },

Official documentation for facebook's event rsvp is here - http://wiki.developers.facebook.com/index.php/Events.rsvp

 

Sql and cache tracking in local development for django

While developing django applications, did you ever get confused about the unexpected result by the query generated by ORM and wished to check that query? There is a good solution. I have a habit of watching #django at times and thats how I got to know about this. Its django-devserver. Package is available here - http://github.com/dcramer/django-devserver/. After installing(with dependancies) you need to include devserver in INSTALLED_APPS in your settings file as:

INSTALLED_APPS = (
    'devserver',
)

and also you have to add a new tuple in settings as DEVSERVER_MODULES. This is for specifying which all modules to load.

DEVSERVER_MODULES = (
    'devserver.modules.sql.SQLRealTimeModule',
    'devserver.modules.sql.SQLSummaryModule',
    'devserver.modules.profile.ProfileSummaryModule',

    # Modules not enabled by default
    'devserver.modules.ajax.AjaxDumpModule',
    'devserver.modules.profile.MemoryUseModule',
    'devserver.modules.cache.CacheSummaryModule',
)

You will have to use python manage.py rundevserver instead of python manage.py runserver to run your development server. Then you will get additional informations like real-time SQL-Loggings and a summary of your cache calls

Go through the Read Me file before installing.

NB:- Beware - your terminal may get spammed by the sql-logs :p

Happy coding!

The script

I am not gonna tell about some scripting languages, but script.

script is a GNU project which is a simple terminal application which can log the activities in a terminal with their outputs. To start script, you just have to give script in your terminal. Then you will see a message saying Script started, file is typescript (If you have to mention filename, then give script <filename> ). Once you finished up with everything which needs to be logged, just press ctrl-d or exit and that will exit script with a message script done, file is typescript(or filename you seleced). For the better view of the log, use cat or more.

It is helpful to show somebody a log about what you have done in terminal. This terminal logger is quite a simple and useful application right?

Script