Archive | March, 2009

Ubuntu: Working with text editor (vim)

19 Mar

If you are following my blog, you will find my last few articles are on Ubuntu.

Yeah, that’s where I am working now.

I’ve installed Ubuntu and working to have some knowledge, coz I’m going to develop my own extension for php in next few weeks.

Before going to get my hands dirty with extension development, I will need to get a bit used to the Ubuntu. I have already learnt some commands like how to install and update apache, php and other stuff. However until now I was unable to write something using any text editor. Thought I tried to use text editor by going to Application/Accessories/Text editor, however I was unable to create document other than my home directory. So I decided to use vim. I is never an easy job to work with vim if you are newbie.

Let’s tell you what I have learnt so for.

  1. To open a file you will need to write the following command in you shell terminal.

$ sudo vim /etc/resolv.conf

The above command will open if file already exist or will create new one.

  1. To make changes to the file you will need to press “Insert” key of your keyboard.
  2. You can use arrow keys to move left, right, up and down. You can use h, j, k, l for this purpose too.
  3. Once you write something in the file. Press “escape” key. This will take you to the command mode. Its necessary to go to the command mode for saving the document.
  4. After pressing the “escape” key, press colon(:). This will take you to the end of the file.
  5. write :wq for save and quite. And press enter at the end.
  6. you can you use i for going to “insert” mode and a for append mode.

That’s it for now. Hopefully I’ll learn more next time and will share with you too.

Advertisements

Zend Framework: working with layout and views (two step view)

19 Mar

In this article I’m going to discuss layout and views and will give a practical example.

You may have heard of two step view.

The term two step view is used when we use layout and view templates for making our page look and feel.

Mostly you will need header, menu and footer same for the entire web application, only contents in the center of the page changes. So if this is the case you can get benefits out of two step views.

Create a layout containing header, menus and footer etc and view will have the contents relevant that specific page.

To implement two step view  in Zend framework you will need to make some configuration in bootstrap file.

Add the following lines to your bootstrap file.

$options = array(

    'layout'     => 'layout_name',

    'layoutPath' => '/path/to/layouts',

    

);
 
$layout = Zend_Layout::startMvc($options);

Keep in mind two things.
1.    Specify correct layout_name.
2.    Path to the layout file must be correct.
I usually prefer to create my layout directory in scripts directory under application/views.
 
If you create layout.phtml in your layouts directory you will need to define it as follows.
 

<?php
        include "header.phtml";
        
?>
// view contents goes here.
<?php
        
        <?=$this->layout()->content?>
 
?>
// footer goes here.
<?php
        include "footer.phtml"
?>

        
Now whatever request (controller/action) you made to your page, header and footer will be included in the response.

There may be cases (in some of your actions) where you don’t want your header and footer be appeared in the look and feel.

So write in those actions, the following line of code

$this->_helper->layout->disableLayout();

After including this line in your action, only the view contents will appear. It mean the contents in the header and footer will not be served.

Some time you need to execute only action code and redirect your request to another action instead of showing anything.

Write the following code in this case

$this->_helper->layout->disableLayout();

$this->_helper->viewRenderer->setNoRender();

Another very important thing is when you call a specific action, Zend Framework render a template file with the name similar to the action name. for example if you request view action, Zend will look for view.phtml file in the specific template directory.

If you want to render other then the default template, view.phtml in the above example. Write the following in your action.

$this->render(‘thanks’);

Ubuntu: Installing apache and Php

18 Mar

Its very easy to install apache and php on Ubuntu.

After installing Ubuntu you will need to do the following.

Go to Application/Accessories/Terminal

And write

$ sudo apt-get install apache2

A process will start when you will give correct password and apache will be installed in few minutes depending on your internet speed.

Next, for installing Php, write

$ sudo apt-get install php5

This will install Php5 for you.

If you want to create php extension you will need to install phpize.

This will need some extra steps.

Like, you will first need to install pear as

$ sudo apt-get install php-pear

This will prompt for y. enter y and press enter.

Now use the following code for installing phpize.

$ sudo apt-get install php5-dev

You may have heard about PECL extension. To install these extension you will need the following steps.

Before taking these step you will need to go through all the steps discussed above.

  1. install apache
  2. install php
  3. install pear
  4. install phpize

After installing all the above you will need to install another package named libcurl3-openssl-dev. To install this package you will need to run the following in terminal.

$ sudo apt-get install libcurl3-openssl-dev

And now install PECL as

$ sudo pecl install pecl_http

After running this command and accept default options PECL extension will be installed.

However to use this you will need to add a line to php.ini file. Do the following for this purpose

$ sudo nano /etc/php5/apache2/php.ini

And add the following line of code

“extension = http.so”

And restart your services as

$ sudo /etc/init.d/apache2 restart

$ sudo /etc/init.d/httpd restart

That’s it you have now installed apache, php, phpize and PECL extension.

Ubuntu: Creating resolv.conf file and connecting to internet

18 Mar

Yesterday I installed Ubuntu’s latest version for the first time in my life. It was no doubt a good experience. One thing that irritate me was, I was unable to connect to the internet. Thanks to our MIS department engineer who help me in getting out of the problem.

Here is what he did.

  • Create resolv.conf in /etc/ directory and place the following code.

nameserver 68.34.1.3

nameserver 68.34.1.4

These should be the first two line of the resolv.conf file.

Here first line contain the DNS sever IP and the second line is for alternate DNS.

Now in terminal write

sudo vim /etc/network/interfaces

This will open interfaces file

This file should contain the following code.

auto lo

iface lo inet loopback

iface etho0 inet static

address 66.45.5.55

netmask 45.45.5.55

network 45.45.4.44

broadcast 45.45.5.66

gateway 45.45.4.33

dns-nameserver 45.23.4.44, 45.23.4.64

dns-search example.org

auto eth0

Keep in mind that the address are not real, you will need to make sure all these address are correct in your case.

Zend Framework: Using Zend Session and Session Namespace

17 Mar

Session handling was one of the boring topic in plan php atleast for me, but in Zend Framework it really shines. If you like to work with Object oriented programming, you will definitely become fan of it.

In this article I’m going to discuss some useful techniques of using Zend Framework Session and Session namespace.

Keep in mind that Both Zend_Session and Zend_Session_Namespace extends abstract class Zend_Session_Abstract. So both inherit methods avaliable in Zend_Session_Abstract automatically.

If you want to go under the hood, you can open Zend/Session/Abstract.php and have a look at the functions available.

Instead of delve into the function available, I’d rather discuss some useful techniques.

“Read full article here”, http://zendgeek.blogspot.com/2009/07/zend-framework-session-usage-and.html

Zend Framework Form: working with multiselect list

10 Mar

I am writing articles on Zend Framewrok form component since few days. I’ve already discussed how to use select(dropdown) list and radio buttons in separate articles.
In this article I’m going to discuss how to use multiselect in zend framework application.
In your form, write the following code

<?php

class CustomForm extends Zend_Form
{

public function init()
{

$this->setMethod(‘post’);
$this->setAction(”);

$subjects = $this->createElement(‘multiselect’,’subjects’);
$subjects->setLabel(‘Subjects’)

->addMultiOptions(array(
‘en’ => ‘English’,
‘gr’ => ‘German’,
‘sp’ => ‘Spanish’
));

$this->addElement($subjects);

$submit = $this->createElement(‘submit’,’submit’);
$submit->setLabel(‘Submit’);
$this->addElement($submit);

}

}

That’s it, we have now created our form with multiselect. The next step is to get values in the Controller/Action.
Keep in mind that using multiselect you can select one or more options using shift key on your keyboard.
One the form is submitted you can take the form values as

$form = new CustomForm();
$values = $form->getValues();

$values with contain the entire set of values submitted. To get individual values of the multiselect option, you will need the following code.

$subjects = $values[‘subjects’];

Keep in mind that subjects is our element name in the form.

$subjects is an array like the following.

array(2) {
[0] => string(2) “gr”
[1] => string(2) “sp”
}

PHP: Listing files in particular directory, a real world example

6 Mar

We are preparing our static files specially java script, css and images files to be moved to Amazon CDN. The thing we need to make sure here is that only those files that are in use should be moved. I was given a task to list all the js, css and images we are currently using in our application.

Initially I opened notepad and start writing down the names of those files.

Hehe, we don’t think out of the box.

The whole process was disgusting and I was feeling tired.

However working for a bit of time, an idea come to my mind, why not use computer to do the task for me.

And this is what I did.

Create .php file and write the following code in that file.

<form action=”” method=”post”>

<input type=”text” name=”path” />

<br>

<input type=”submit” value=”Submit” />

</form>

<?php

$pathName = $_POST[‘path’];

if($pathName){

$dir = new DirectoryIterator($pathName);

foreach($dir as $fileInfo) {

if($fileInfo->isDot()) {

// do nothing

} else {

echo $fileInfo->__toString().'<br>’;

}

}

}

?>

The code above did everything for me. Created a list of files in particular directory. I took print out of that list and crossed (x) files under construction.

In the first few lines I am creating form, adding input box for the directory path to be entered and submit button.

In the php code

  1. I get the path
  2. If path is not empty, I create an instance of DirectoryIterator available in PHP5, giving it directory path entered via input box.

3.Loop the $dir object and echo the result as string.