<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-9020370651846000084</id><updated>2024-11-01T01:38:15.748-07:00</updated><title type='text'>Astuces</title><subtitle type='html'>is about informatic tips &amp;amp; tricks astuces ms office word excel access php mysql ajax jquery css html oop advenced tutorials cours reseau top how to plugin add </subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://computer-ast.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://computer-ast.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>abdessamad</name><uri>http://www.blogger.com/profile/05406414270854404188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>92</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9020370651846000084.post-2395430242337177539</id><published>2013-08-19T13:55:00.003-07:00</published><updated>2013-08-19T13:55:56.010-07:00</updated><title type='text'> PHP Tutorial</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;img alt=&quot;http://websiteexpert.com/wp-content/uploads/PHP-Development.jpg&quot; class=&quot;decoded&quot; src=&quot;http://websiteexpert.com/wp-content/uploads/PHP-Development.jpg&quot; /&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&lt;span style=&quot;color: #000099; font-family: Arial;&quot;&gt;&lt;big&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/big&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-small;&quot;&gt;&lt;span style=&quot;color: #000099; font-family: Arial;&quot;&gt;&lt;big&gt;&lt;b&gt;Introduction&lt;/b&gt;&lt;/big&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Up until recently, scripting on the internet was something which very 
few people even attempted, let alone mastered. Recently though, more and
 more people have been building their own websites and scripting 
languages have become more important. Because of this, scripting 
languages are becomming easier to learn and PHP is one of the easiest 
and most powerful yet.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #000099; font-family: Arial;&quot;&gt;&lt;big&gt;&lt;b&gt;What Is PHP?&lt;/b&gt;&lt;/big&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
PHP stands for Hypertext Preprocessor and is a server-side language. 
This means that the script is run on your web server, not on the user&#39;s 
browser, so you do not need to worry about compatibility issues. PHP is 
relatively new (compared to languages such as Perl (CGI) and Java) but 
is quickly becomming one of the most popular scripting languages on the 
internet.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #000099; font-family: Arial;&quot;&gt;&lt;big&gt;&lt;b&gt;Why PHP?&lt;/b&gt;&lt;/big&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
You may be wondering why you should choose PHP over other languages such
 as Perl or even why you should learn a scripting language at all. I 
will deal with learning scripting languages first. Learning a scripting 
language, or even understanding one, can open up huge new possibilities 
for your website. Although you can download pre-made scripts from sites 
like Hotscripts, these will often contain advertising for the author or 
will not do exactly what you want. With an understanding of a scripting 
language you can easily edit these scripts to do what you want, or even 
create your own scripts.&lt;br /&gt;
&lt;br /&gt;
Using scripts on your website allows you to add many new &#39;interactive&#39; 
features like feedback forms, guestbooks, message boards, counters and 
even more advanced features like portal systems, content management, 
advertising managers etc. With these sort of things on your website you 
will find that it gives a more professional image. As well as this, 
anyone wanting to work in the site development industry will find that 
it is much easier to get a job if they know a scripting language.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #000099; font-family: Arial;&quot;&gt;&lt;big&gt;&lt;b&gt;What Do I Need?&lt;/b&gt;&lt;/big&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
As mentioned earlier, PHP is a server-side scripting language. This 
means that, although your users will not need to install new software, 
you web host will need to have PHP set up on their server. It should be 
listed as part of your package but if you don&#39;t know if it is installed 
you can find out using the first script in this tutorial. If you server 
does not support PHP you can ask your web host to install it for you as 
it is free to download and install. If you need a low cost web host 
which supports PHP I would recommmend HostRocket.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #000099; font-family: Arial;&quot;&gt;&lt;big&gt;&lt;b&gt;Writing PHP&lt;/b&gt;&lt;/big&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Writing PHP on your computer is actually very simple. You don&#39;t need any
 specail software, except for a text editor (like Notepad in Windows). 
Run this and you are ready to write your first PHP script.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #000099; font-family: Arial;&quot;&gt;&lt;big&gt;&lt;b&gt;Declaring PHP&lt;/b&gt;&lt;/big&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
PHP scripts are always enclosed in between two PHP tags. This tells your
 server to parse the information between them as PHP. The three 
different forms are as follows:&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial;&quot;&gt;&lt;br /&gt;
&amp;lt;?&lt;br /&gt;
PHP Code In Here&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
PHP Code In Here&lt;br /&gt;
php?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script language=&quot;php&quot;&amp;gt;&lt;br /&gt;
PHP Code In Here&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
All of these work in exactly the same way but in this tutorial I will be
 using the first option (&amp;lt;? and ?&amp;gt;). There is no particular reason
 for this, though, and you can use either of the options. You must 
remember, though, to start and end your code with the same tag (you 
can&#39;t start with &amp;lt;? and end with &amp;lt;/script&amp;gt; for example).&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #000099; font-family: Arial;&quot;&gt;&lt;big&gt;&lt;b&gt;Your First Script&lt;/b&gt;&lt;/big&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
The first PHP script you will be writing is very basic. All it will do 
is print out all the information about PHP on your server. Type the 
following code into your text editor:&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial;&quot;&gt;&lt;br /&gt;
&amp;lt;?&lt;br /&gt;
phpinfo();&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
As you can see this actually just one line of code. It is a standard PHP
 function called phpinfo which will tell the server to print out a 
standard table of information giving you information on the setup of the
 server.&lt;br /&gt;
&lt;br /&gt;
One other thing you should notice in this example is th&lt;br /&gt;
at the line ends in a semicolon. This is very important. As with many 
other scripting and programming languages nearly all lines are ended 
with a semicolon and if you miss it out you will get an error.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #000099; font-family: Arial;&quot;&gt;&lt;big&gt;&lt;b&gt;Finishing and Testing Your Script&lt;/b&gt;&lt;/big&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Now you have finished your script save it as phpinfo.php and upload it 
to your server in the normal way. Now, using your browser, go the the 
URL of the script. If it has worked (and if PHP is installed on your 
server) you should get a huge page full of the information about PHP on 
your server.&lt;br /&gt;
&lt;br /&gt;
If your script doesn&#39;t work and a blank page displays, you have either 
mistyped your code or your server does not support this function 
(although I have not yet found a server that does not). If, instead of a
 page being displayed, you are prompted to download the file, PHP is not
 installed on your server and you should either serach for a new web 
host or ask your current host to install PHP.&lt;br /&gt;
&lt;br /&gt;
It is a good idea to keep this script for future reference.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #000099; font-family: Arial;&quot;&gt;&lt;big&gt;&lt;b&gt;Part 2&lt;/b&gt;&lt;/big&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
In this part I have introduced you to the basics of writing and running 
PHP. By this time you should now know if your host supports PHP and 
should have a basic understanding of how PHP scripts are structured. In 
part 2 I will show you how to print out information to the browser.&lt;br /&gt;
&lt;br /&gt;
PHP 5.x is standard on &lt;a href=&quot;http://www.ipagetraining.com/&quot;&gt;iPage™ hosting&lt;/a&gt; (see tutorials for website setup help), which supports the most popular PHP scripts and content management systems.&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://computer-ast.blogspot.com/feeds/2395430242337177539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9020370651846000084/2395430242337177539' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/2395430242337177539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/2395430242337177539'/><link rel='alternate' type='text/html' href='http://computer-ast.blogspot.com/2013/08/php-tutorial.html' title=' PHP Tutorial'/><author><name>abdessamad</name><uri>http://www.blogger.com/profile/05406414270854404188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9020370651846000084.post-5623129800727725691</id><published>2013-08-19T13:48:00.001-07:00</published><updated>2013-08-19T13:48:23.733-07:00</updated><title type='text'> A PHP Times Table Programme</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;

&lt;div class=&quot;leftMargin&quot;&gt;
  In the &lt;a href=&quot;http://www.homeandlearn.co.uk/php/php5p1.html&quot;&gt;previous part&lt;/a&gt;, you saw what a For Loop was. 
    In this section, we&#39;ll write a times table programme to illustrate how for 
    loops work.&lt;br /&gt;

  There&#39;s a script called timesTable.php amongst the files you downloaded (in 
    the scripts folder). When loaded into the browser, it looks like this:&lt;br /&gt;

  There&#39;s a script called &lt;b&gt;timesTable.php&lt;/b&gt; amongst the &lt;a href=&quot;http://www.homeandlearn.co.uk/downloads.html&quot;&gt;files 
    you downloaded&lt;/a&gt; (in the &lt;b&gt;scripts&lt;/b&gt; folder.). When loaded into the browser, 
    it looks like this:&lt;br /&gt;

  &lt;div align=&quot;center&quot;&gt;
&lt;img alt=&quot;Times Table Programme&quot; border=&quot;1&quot; height=&quot;175&quot; src=&quot;http://www.homeandlearn.co.uk/php/images/times.jpg&quot; width=&quot;441&quot; /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;leftMargin&quot;&gt;
 
  What we&#39;re going to do is to get the values from the textboxes and create 
    a Times Table proramme. When the button is clicked, the output will be something 
    like this:&lt;br /&gt;

  &lt;div align=&quot;center&quot;&gt;
&lt;img border=&quot;1&quot; height=&quot;366&quot; src=&quot;http://www.homeandlearn.co.uk/php/images/times2.jpg&quot; width=&quot;452&quot; /&gt;&lt;/div&gt;
In other words, when the button is clicked we&#39;ll print the Times Table to 
    the page. You can have a different Times Table, depending on what values you 
    enter in the textboxes. To make a start with the coding, move on to the next 
    part.&lt;br /&gt;

&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://computer-ast.blogspot.com/feeds/5623129800727725691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9020370651846000084/5623129800727725691' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/5623129800727725691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/5623129800727725691'/><link rel='alternate' type='text/html' href='http://computer-ast.blogspot.com/2013/08/a-php-times-table-programme.html' title=' A PHP Times Table Programme'/><author><name>abdessamad</name><uri>http://www.blogger.com/profile/05406414270854404188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9020370651846000084.post-4709012706432795004</id><published>2013-08-19T13:47:00.002-07:00</published><updated>2013-08-19T13:47:34.398-07:00</updated><title type='text'> Some Practise with PHP If Statements</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;img alt=&quot;http://www.nusphere.com/graphics/php_smarty/php_smarty_code.png&quot; class=&quot;shrinkToFit decoded&quot; height=&quot;619&quot; src=&quot;http://www.nusphere.com/graphics/php_smarty/php_smarty_code.png&quot; width=&quot;820&quot; /&gt;We can use an if statement to display our image, from the previous 
  section. If the user selected &quot;church&quot;, then display the church 
  image. If the user selected &quot;kitten&quot;, then display another image (the 
  kitten image, which is also in your images folder). 
  Here&#39;s some code:&lt;br /&gt;

&lt;div class=&quot;TextIndent2&quot;&gt;
&amp;lt;?PHP&lt;/div&gt;
&lt;div class=&quot;TextIndent2&quot;&gt;
$kitten_image = 1;&lt;br /&gt;
  $church_image = 0;&lt;/div&gt;
&lt;div class=&quot;TextIndent2&quot;&gt;
if ($kitten_image == 1) {&lt;/div&gt;
&lt;div class=&quot;TextIndent3&quot;&gt;
print (&quot;&amp;lt;IMG SRC =images/kitten.jpg&amp;gt;&quot;);&lt;/div&gt;
&lt;div class=&quot;TextIndent2&quot;&gt;
}&lt;/div&gt;
&lt;div class=&quot;TextIndent2&quot;&gt;
?&amp;gt;&lt;/div&gt;
Type that out, and save it as &lt;b&gt;testImages.php&lt;/b&gt;. (Notice how there&#39;s no 
  HTML!) &lt;br /&gt;

When you run the script, the kitten image should display. Let&#39;s look at the 
  code and see what&#39;s happening.&lt;br /&gt;

The first two lines just set up some variables:&lt;br /&gt;

&lt;div class=&quot;TextIndent3&quot;&gt;
$kitten_image = 1;&lt;br /&gt;
  $church_image = 0;&lt;/div&gt;
A value of 1 has been assigned to the variable called &lt;b&gt;$kitten_image&lt;/b&gt;. 
  A value of 0 has been assigned to the variable called &lt;b&gt;$church_image&lt;/b&gt;. 
  Then we have our if statement. Here it is without the print statement:&lt;br /&gt;

&lt;div class=&quot;TextIndent3&quot;&gt;
if ($kitten_image == 1) {&lt;/div&gt;
&lt;div class=&quot;TextIndent3&quot;&gt;
}&lt;/div&gt;
Notice how there&#39;s no semi-colon at the end of the first line - you don&#39;t need 
  one. After the word &quot;if&quot; we have a round bracket. Then comes our variable 
  name:&lt;b&gt; $kitten_image&lt;/b&gt;. We want to test what&#39;s inside of this variable. 
  Specifically, we want to test if it has a value of 1. So we need the double 
  equals sign (&lt;b&gt;==&lt;/b&gt;). The double equals sign doesn’t really mean “equals”. 
  It means “has a value of”.&lt;br /&gt;

What we want to say is:&lt;br /&gt;

&lt;div align=&quot;center&quot;&gt;
&lt;b&gt;&quot;If the variable called $kitten_image has a value of 
  1 then execute some code.&quot;&lt;/b&gt;&lt;/div&gt;
To complete the first line of the if statement we have another round bracket, 
  and a left curly bracket. Miss any of these out, and you&#39;ll probably get the 
  dreaded parse error!&lt;br /&gt;

The code we want to execute, though, is the print statement, so that our kitten 
  image will display. This goes inside of the if statement:&lt;br /&gt;

&lt;div class=&quot;TextIndent2&quot;&gt;
if ($kitten_image == 1) {&lt;/div&gt;
&lt;div class=&quot;TextIndent3&quot;&gt;
print (&quot;&amp;lt;IMG SRC =images/kitten.jpg&amp;gt;&quot;);&lt;/div&gt;
&lt;div class=&quot;TextIndent2&quot;&gt;
}&lt;/div&gt;
You need the semi-colon at the end of the print statement.&lt;br /&gt;

But if your if statement only runs to one line, you can just do this:&lt;br /&gt;

&lt;div align=&quot;center&quot;&gt;
&lt;b&gt;if ($kitten_image == 1) { print (&quot;&amp;lt;IMG SRC = images/kitten.jpg&amp;gt;&quot;); 
  }&lt;/b&gt;&lt;/div&gt;
In other words, keep everything on one line. PHP doesn&#39;t care about your spaces, 
  so it&#39;s perfectly acceptable code. Not very readable, but acceptable!&lt;br /&gt;

To make use of the church image, here&#39;s some new code to try:&lt;br /&gt;

&lt;div class=&quot;TextIndent2&quot;&gt;
&amp;lt;?PHP&lt;/div&gt;
&lt;div class=&quot;TextIndent1&quot;&gt;
$kitten_image = 0;&lt;br /&gt;
  $church_image = 1;&lt;/div&gt;
&lt;div class=&quot;TextIndent1&quot;&gt;
if ($kitten_image == 1) {&lt;/div&gt;
&lt;div class=&quot;TextIndent3&quot;&gt;
print (&quot;&amp;lt;IMG SRC =images/kitten.jpg&amp;gt;&quot;);&lt;/div&gt;
&lt;div class=&quot;TextIndent1&quot;&gt;
}&lt;/div&gt;
&lt;div class=&quot;TextIndent1&quot;&gt;
if ($church_image == 1) {&lt;/div&gt;
&lt;div class=&quot;TextIndent3&quot;&gt;
print (&quot;&amp;lt;IMG SRC =images/church.jpg&amp;gt;&quot;);&lt;/div&gt;
&lt;div class=&quot;TextIndent1&quot;&gt;
}&lt;/div&gt;
&lt;div class=&quot;TextIndent2&quot;&gt;
?&amp;gt;&lt;/div&gt;
Notice that the &lt;b&gt;$kitten_image&lt;/b&gt; variable now has a value of 0 and that 
  &lt;b&gt;$church_image&lt;/b&gt; is 1. The new if statement is just the same as the first. 
  When you run the script, however, the church image will display. That&#39;s because 
  of this line:&lt;br /&gt;

&lt;div class=&quot;TextIndent3&quot;&gt;
if ($kitten_image == 1) {&lt;/div&gt;
That says, &quot;If the variable called $kitten_image has a value of 1 ... 
  &quot;. PHP doesn&#39;t bother reading the rest of the if statement, because $kitten_image 
  has a value of 0. It will jump down to our second if statement and test that:&lt;br /&gt;

&lt;div class=&quot;TextIndent3&quot;&gt;
if ($church_image == 1) {&lt;/div&gt;
Since the variable called &lt;b&gt;$church_image&lt;/b&gt; does indeed have a value of 
  1, then the code inside of the if statement gets executed. That code prints 
  out the HTML for the church image:&lt;br /&gt;

&lt;div class=&quot;TextIndent3&quot;&gt;
print (&quot;&amp;lt;IMG SRC =images/church.jpg&amp;gt;&quot;);&lt;/div&gt;
&lt;br /&gt;

In the next section, we&#39;ll take a look at&lt;b&gt; if ... else &lt;/b&gt;statements.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://computer-ast.blogspot.com/feeds/4709012706432795004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9020370651846000084/4709012706432795004' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/4709012706432795004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/4709012706432795004'/><link rel='alternate' type='text/html' href='http://computer-ast.blogspot.com/2013/08/some-practise-with-php-if-statements.html' title=' Some Practise with PHP If Statements'/><author><name>abdessamad</name><uri>http://www.blogger.com/profile/05406414270854404188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9020370651846000084.post-2672398008013442527</id><published>2013-08-19T13:46:00.002-07:00</published><updated>2013-08-19T13:46:17.113-07:00</updated><title type='text'>What you need to get started with PHP</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;a href=&quot;http://webinfobazar.com/wp-content/uploads/2012/03/PHP.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;http://webinfobazar.com/wp-content/uploads/2012/03/PHP.png&quot; border=&quot;0&quot; class=&quot;decoded&quot; src=&quot;http://webinfobazar.com/wp-content/uploads/2012/03/PHP.png&quot; /&gt;&lt;/a&gt;Before you can write and test your PHP scripts, there&#39;s one thing you&#39;ll need 
  - a server! Fortunately, you don&#39;t need to go out and buy one. In fact, you 
  won&#39;t be spending any extra money. That&#39;s why PHP is so popular! But because 
  PHP is a server-sided scripting language, you either have to get some web space 
  with a hosting company that supports PHP, or make your computer pretend that 
  it has a server installed. This is because PHP is not run on your PC - it&#39;s 
  executed on the server. The results are then sent back to the client PC (your 
  computer). &lt;br /&gt;

Don&#39;t worry if this all sounds a little daunting - we&#39;ve come across an easier 
  way to get you up and running. We&#39;re going to be using some software called 
  Wampserver. This allows you to test your PHP scripts on your own computer. It 
  installs everything you need, if you have a Windows PC. We&#39;ll explain how to 
  get it installed in a moment, and where to get it from. But just a word for 
  non-windows users.&lt;br /&gt;

&lt;h3&gt;
 &lt;br /&gt;
  Apple Users&lt;/h3&gt;
If you have OS X, then try these sites to get up and running with PHP:&lt;br /&gt;

&lt;div align=&quot;center&quot;&gt;
http://www.onlamp.com/pub/a/mac/2001/12/07/apache.html&lt;/div&gt;
&lt;div align=&quot;center&quot;&gt;
http://www.entropy.ch/software/macosx/php/&lt;/div&gt;
What you&#39;re doing here is getting the apache server up and running, so that 
  you can run PHP scripts offline. Pay particular attention to where files are 
  stored, and to the &quot;localhost&quot; address. &lt;br /&gt;

&lt;h3&gt;
Linux Users&lt;/h3&gt;
There are quite a few sites out there to help Linux users get up and running 
  with the Apache server and PHP. Here are three sites that are worth checking 
  out:&lt;br /&gt;

&lt;div align=&quot;center&quot;&gt;
http://en.wikipedia.org/wiki/LAMP_(software_bundle)&lt;/div&gt;
&lt;div align=&quot;center&quot;&gt;
http://www.php-mysql-tutorial.com/wikis/php-tutorial/installing-php-and-mysql.aspx&lt;/div&gt;
&lt;div align=&quot;center&quot;&gt;
http://www.phpfreaks.com/tutorials/12/0.php&lt;/div&gt;
If you know any better ones, we&#39;d be interested in hearing from you!&lt;br /&gt;

&lt;h3&gt;
Windows Users&lt;/h3&gt;
OK, back to Wampserver and Windows. First, you need to download the software. 
  You can get it from here (this site is nothing to do with ours, by the way):&lt;br /&gt;

&lt;div align=&quot;center&quot;&gt;
&lt;a href=&quot;http://www.wampserver.com/en/download.php&quot; target=&quot;_blank&quot;&gt;Download 
  Wampserver&lt;/a&gt;&lt;/div&gt;
Be sure to click the link for Presentation, as well as the link for Downloads. 
  The Presentation page shows you how to install the file.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://computer-ast.blogspot.com/feeds/2672398008013442527/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9020370651846000084/2672398008013442527' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/2672398008013442527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/2672398008013442527'/><link rel='alternate' type='text/html' href='http://computer-ast.blogspot.com/2013/08/what-you-need-to-get-started-with-php.html' title='What you need to get started with PHP'/><author><name>abdessamad</name><uri>http://www.blogger.com/profile/05406414270854404188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9020370651846000084.post-3578588202994042838</id><published>2013-08-19T13:45:00.001-07:00</published><updated>2013-08-19T13:45:07.668-07:00</updated><title type='text'>What is PHP?</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;span style=&quot;font-size: x-large;&quot;&gt;P&lt;/span&gt;HP is probably the most popular scripting language on the web. It is used 
  to enhance web pages. With PHP, you can do things like create username and password 
  login pages, check details from a form, create forums, picture galleries, surveys, 
  and a whole lot more. If you&#39;ve come across a web page that ends in PHP, then 
  the author has written some programming code to liven up the plain, old HTML.&lt;br /&gt;

PHP is known as a server-sided language. That&#39;s because the PHP doesn&#39;t get 
  executed on your computer, but on the computer you requested the page from. 
  The results are then handed over to you, and displayed in your browser. Other 
  scripting languages you may have heard of are ASP, Python and Perl. (You don&#39;t 
  need to know any of these to make a start on PHP. In fact, these tutorials assume 
  that you have no programming experience at all.)&lt;br /&gt;

The most popular explanation of just what PHP stands for is &quot;Hypertext 
  Pre-processor&quot;. But that would make it HPP, surely? An alternative explanation 
  is that the initials come from the earliest version of the program, which was 
  called Personal Home Page Tools. At least you get the letters &quot;PHP&quot; 
  in the right order!&lt;br /&gt;

But PHP is so popular that if you&#39;re looking for a career in the web design/web 
  scripting industry then you just have to know it! In these tutorials, we&#39;ll 
  get you up and running. And, hopefully, it will be a lot easier than you think.&lt;br /&gt;

&lt;h3&gt;
&lt;br /&gt;&lt;/h3&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://computer-ast.blogspot.com/feeds/3578588202994042838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9020370651846000084/3578588202994042838' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/3578588202994042838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/3578588202994042838'/><link rel='alternate' type='text/html' href='http://computer-ast.blogspot.com/2013/08/what-is-php.html' title='What is PHP?'/><author><name>abdessamad</name><uri>http://www.blogger.com/profile/05406414270854404188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9020370651846000084.post-6913911127296291648</id><published>2013-04-18T20:03:00.003-07:00</published><updated>2013-04-18T20:03:45.274-07:00</updated><title type='text'>JavaScript: Password Validation using regular expressions and HTML5</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;h2 id=&quot;section_0&quot;&gt;
. Guidelines for Secure Password Input&lt;/h2&gt;
&lt;h3&gt;
Use the &quot;password&quot; input type&lt;/h3&gt;
Instead of &amp;lt;input type=&quot;text&quot;&amp;gt; you should always use 
&amp;lt;input type=&quot;password&quot;&amp;gt; as this lets the browser (and 
the user) know that the contents of that field need to be secured.  Your 
password won&#39;t appear on the screen as you type and most browsers also 
won&#39;t &#39;remember&#39; the values entered in &lt;tt&gt;password&lt;/tt&gt; fields as they 
do with other form elements.&lt;br /&gt;


&lt;h3&gt;
Confirm password input&lt;/h3&gt;
Because the &lt;tt&gt;password&lt;/tt&gt; input type obscures the text typed, you
should let the user confirm that they haven&#39;t made a mistake.  The
simplest way to do this is to have the password entered twice, and then
check that they are identical.&lt;br /&gt;


Another method is to display what they&#39;ve entered as part of a 
&#39;confirmation page&#39;.  The problem here is that you&#39;re making the 
password visible in the browser, browser cache, proxy, etc.  For 
security a password should &lt;b&gt;never&lt;/b&gt; be displayed in HTML or even 
sent by email.&lt;br /&gt;


&lt;h3&gt;
Enforce &#39;strong&#39; passwords&lt;/h3&gt;
If you&#39;re concerned about security you should have some policy on
what constitutes a valid password.  Some common restrictions are:&lt;br /&gt;


&lt;ul&gt;
&lt;li&gt;at least &lt;i&gt;n&lt;/i&gt; characters&lt;/li&gt;
&lt;li&gt;combination of upper- and lower-case characters&lt;/li&gt;
&lt;li&gt;one or more digits&lt;/li&gt;
&lt;li&gt;not related to other user data (name, address, username, ...)&lt;/li&gt;
&lt;li&gt;not a dictionary word&lt;/li&gt;
&lt;/ul&gt;
Leaving the last requirement for now, as it requires a server-side 
script, let&#39;s see what&#39;s possible using just client-side HTML and 
JavaScript.&lt;br /&gt;


&lt;h3&gt;
Server security&lt;/h3&gt;
While having a strong password is a good first step, it needs to be 
backed up by additional measures on the server that prevent brute-force 
attacks.  One popular approach is to install Fail2Ban to monitor log 
files and lock out repeat offendors.  Of course that only works if your 
login system reports failed login attempts to a system log file.  
Otherwise your application needs to provide this function.&lt;br /&gt;



&lt;h2 id=&quot;section_1&quot;&gt;
2. Basic Demonstration&lt;/h2&gt;
The form below has three input fields: username, pwd1 and pwd2.  
When the form is submitted the &lt;tt&gt;checkForm&lt;/tt&gt; script parses the 
input values and returns either &lt;tt&gt;true&lt;/tt&gt; or &lt;tt&gt;false&lt;/tt&gt;.  If a 
false value is returned then the form submission is cancelled.&lt;br /&gt;


This code will work for browsers as far back as Netscape 4 (circa 
1997).&lt;br /&gt;




&lt;form action=&quot;/javascript/validate-password/&quot; method=&quot;POST&quot;&gt;
&lt;fieldset&gt;
&lt;legend&gt;Change Password&lt;/legend&gt;
&lt;label&gt;Username&lt;/label&gt;&lt;span&gt;&lt;input name=&quot;username&quot; type=&quot;text&quot; /&gt;&lt;/span&gt;
&lt;label&gt;Password&lt;/label&gt;&lt;span&gt;&lt;input name=&quot;pwd1&quot; type=&quot;password&quot; /&gt;&lt;/span&gt;
&lt;label&gt;Confirm Password&lt;/label&gt;&lt;span&gt;&lt;input name=&quot;pwd2&quot; type=&quot;password&quot; /&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;/fieldset&gt;
&lt;/form&gt;
The code behind the form is as follows.  If you&#39;re not sure how to 
place this on your page, you might need to read the preceding article on 
Form Validation, or view the HTML 
source of this page.&lt;br /&gt;


&lt;code id=&quot;box1&quot; style=&quot;height: 400px;&quot;&gt;&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;

  function checkForm(form)
  {
    if(form.username.value == &quot;&quot;) {
      alert(&quot;Error: Username cannot be blank!&quot;);
      form.username.focus();
      return false;
    }
    re = /^\w+$/;
    if(!re.test(form.username.value)) {
      alert(&quot;Error: Username must contain only letters, numbers and underscores!&quot;);
      form.username.focus();
      return false;
    }

    if(form.pwd1.value != &quot;&quot; &amp;amp;&amp;amp; form.pwd1.value == form.pwd2.value) {
      if(form.pwd1.value.length &amp;lt; 6) {
        alert(&quot;Error: Password must contain at least six characters!&quot;);
        form.pwd1.focus();
        return false;
      }
      if(form.pwd1.value == form.username.value) {
        alert(&quot;Error: Password must be different from Username!&quot;);
        form.pwd1.focus();
        return false;
      }
      re = /[0-9]/;
      if(!re.test(form.pwd1.value)) {
        alert(&quot;Error: password must contain at least one number (0-9)!&quot;);
        form.pwd1.focus();
        return false;
      }
      re = /[a-z]/;
      if(!re.test(form.pwd1.value)) {
        alert(&quot;Error: password must contain at least one lowercase letter (a-z)!&quot;);
        form.pwd1.focus();
        return false;
      }
      re = /[A-Z]/;
      if(!re.test(form.pwd1.value)) {
        alert(&quot;Error: password must contain at least one uppercase letter (A-Z)!&quot;);
        form.pwd1.focus();
        return false;
      }
    } else {
      alert(&quot;Error: Please check that you&#39;ve entered and confirmed your password!&quot;);
      form.pwd1.focus();
      return false;
    }

    alert(&quot;You entered a valid password: &quot; + form.pwd1.value);
    return true;
  }

&amp;lt;/script&amp;gt;
&lt;/code&gt;
&lt;div style=&quot;margin-top: 0; text-align: right;&quot;&gt;
&lt;small&gt;expand code box&lt;/small&gt;&lt;/div&gt;
Remember that, as JavaScript isn&#39;t available in all browsers, you 
should user server-side scripting to validate all data before recording 
it in a database or text file.  You might also want to spice up your 
forms using HTML5 Form 
Validation as we&#39;ve done further down the page.&lt;br /&gt;



&lt;h2 id=&quot;section_2&quot;&gt;
3. Advanced regular expressions&lt;/h2&gt;
In the latest browsers - those that support JavaScript 1.5 (Firefox, 
Netscape 6/7, Mozilla, Safari and Opera 7) - you can use more powerful 
regular expressions.  Older browsers &lt;b&gt;will not recognise these 
patterns&lt;/b&gt; so the following is mostly useful for intranet rather than 
Internet applications.&lt;br /&gt;


The code presented above is fine in that it checks everything that we 
wanted to check, but uses a lot of code to test each requirement 
individually and present different error messages.  We&#39;re going to show 
you now how to apply the password tests using a single regular 
expression.&lt;br /&gt;


Consider the following:&lt;br /&gt;


&lt;code&gt;&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;

  &lt;i&gt;// at least one number, one lowercase and one uppercase letter
  // at least six characters&lt;/i&gt;
  var re = /(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,}/;
  var validPassword = re.test(input);

&amp;lt;/script&amp;gt;&lt;/code&gt;

The type of expression used here is called a &#39;look-ahead&#39; which tries 
to match the contained regexp against the &#39;future&#39; part of the 
string.&lt;br /&gt;


&lt;b&gt;Translation:&lt;/b&gt;&lt;br /&gt;


&lt;ul&gt;
&lt;li&gt;matches a string of six or more characters;&lt;/li&gt;
&lt;li&gt;that contains at least one digit (\d is shorthand for [0-9]);&lt;/li&gt;
&lt;li&gt;at least one uppercase character; and&lt;/li&gt;
&lt;li&gt;at least one lowercase character:&lt;/li&gt;
&lt;/ul&gt;
&lt;table cellpadding=&quot;3&quot; class=&quot;collapse&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th&gt;input&lt;/th&gt;&lt;th&gt;result of test&lt;/th&gt;&lt;th&gt;reason&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;abcABC&lt;/td&gt;&lt;td style=&quot;text-align: center;&quot;&gt;false&lt;/td&gt;&lt;td&gt;no numbers&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;abc123&lt;/td&gt;&lt;td style=&quot;text-align: center;&quot;&gt;false&lt;/td&gt;&lt;td&gt;no uppercase characters&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;abAB1&lt;/td&gt;&lt;td style=&quot;text-align: center;&quot;&gt;false&lt;/td&gt;&lt;td&gt;too short&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;abAB12&lt;/td&gt;&lt;td style=&quot;text-align: center;&quot;&gt;true&lt;/td&gt;&lt;td&gt;-&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Aa123456&lt;/td&gt;&lt;td style=&quot;text-align: center;&quot;&gt;true&lt;/td&gt;&lt;td&gt;-&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;b&gt;If you are using a supported browser&lt;/b&gt; you can use the form 
below to test the regular expression:&lt;br /&gt;


&lt;form action=&quot;/javascript/validate-password/&quot; method=&quot;POST&quot;&gt;
&lt;fieldset&gt;
&lt;legend&gt;Password Regexp Test&lt;/legend&gt;
&lt;input name=&quot;input&quot; size=&quot;12&quot; type=&quot;text&quot; /&gt; &lt;br /&gt;&lt;small&gt;(input must contain at least one digit/lowercase/uppercase letter and be at least six characters long)&lt;/small&gt;

&lt;/fieldset&gt;
&lt;/form&gt;
If you want to restrict the password to ONLY letters and numbers (no
spaces or other characters) then only a slight change is required. 
Instead of using &lt;tt&gt;.&lt;/tt&gt; (the wildcard) we use &lt;tt&gt;\w&lt;/tt&gt;:&lt;br /&gt;


&lt;code class=&quot;final&quot;&gt;&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;

  &lt;i&gt;// at least one number, one lowercase and one uppercase letter
  // at least six characters that are letters, numbers or the underscore&lt;/i&gt;
  var re = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])&lt;span&gt;\w&lt;/span&gt;{6,}$/;
  var validPassword = re.test(input);

&amp;lt;/script&amp;gt;&lt;/code&gt;

The &lt;tt&gt;\w&lt;/tt&gt; is shorthand for &#39;any letter, number or the 
underscore character&#39;.&lt;br /&gt;




Again, you can use the form below to test this regular expression:&lt;br /&gt;


&lt;form action=&quot;/javascript/validate-password/&quot; method=&quot;POST&quot;&gt;
&lt;fieldset&gt;
&lt;legend&gt;Password Regexp Test 2&lt;/legend&gt;
&lt;input name=&quot;input&quot; size=&quot;12&quot; type=&quot;text&quot; /&gt; &lt;br /&gt;&lt;small&gt;(as above, but this time ONLY letters and numbers are allowed)&lt;/small&gt;

&lt;/fieldset&gt;
&lt;/form&gt;
&lt;h2 id=&quot;section_3&quot;&gt;
4. Sample HTML and JavaScript code&lt;/h2&gt;
You might implement this code on your own website as follows:&lt;br /&gt;


&lt;code&gt;&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;

  function &lt;span&gt;checkPassword(str)&lt;/span&gt;
  {
    var re = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])\w{6,}$/;
    return re.test(str);
  }

  function &lt;span&gt;checkForm(form)&lt;/span&gt;
  {
    if(form.username.value == &quot;&quot;) {
      alert(&quot;Error: Username cannot be blank!&quot;);
      form.username.focus();
      return false;
    }
    re = /^\w+$/;
    if(!re.test(form.username.value)) {
      alert(&quot;Error: Username must contain only letters, numbers and underscores!&quot;);
      form.username.focus();
      return false;
    }
    if(form.pwd1.value != &quot;&quot; &amp;amp;&amp;amp; form.pwd1.value == form.pwd2.value) {
      if(!&lt;span&gt;checkPassword(form.pwd1.value)&lt;/span&gt;) {
        alert(&quot;The password you have entered is not valid!&quot;);
        form.pwd1.focus();
        return false;
      }
    } else {
      alert(&quot;Error: Please check that you&#39;ve entered and confirmed your password!&quot;);
      form.pwd1.focus();
      return false;
    }
    return true;
  }

&amp;lt;/script&amp;gt;

&amp;lt;form method=&quot;POST&quot; action=&quot;&lt;i&gt;form-handler.php&lt;/i&gt;&quot; onsubmit=&quot;&lt;span&gt;return checkForm(this);&lt;/span&gt;&quot;&amp;gt;
&amp;lt;p&amp;gt;Username: &amp;lt;input type=&quot;text&quot; name=&quot;username&quot;&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;Password: &amp;lt;input type=&quot;password&quot; name=&quot;pwd1&quot;&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;Confirm Password: &amp;lt;input type=&quot;password&quot; name=&quot;pwd2&quot;&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;&amp;lt;input type=&quot;submit&quot;&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;/form&amp;gt;&lt;/code&gt;

As you can see, it&#39;s well worth learning the intricacies of regular
expressions.  They can be used not just in JavaScript, but also PHP,
Perl, Java and many other languages.  Some text editors (not just vi)
also allow them when searching for or replacing text.&lt;br /&gt;



&lt;h2 id=&quot;section_4&quot;&gt;
5. HTML5 Form Validation&lt;/h2&gt;
We earlier mentioned HTML5 form validation.  This is a new technique 
available in modern browsers and definitely the way of the future.  A 
few simple form attributes can have the same effect as reams of 
JavaScript code libraries.&lt;br /&gt;


Here we have an enhanced version of the above code where we&#39;ve added 
HTML5 &lt;tt&gt;required&lt;/tt&gt; and &lt;tt&gt;pattern&lt;/tt&gt; elements to apply regular 
expression tests within the form itself in supporting browsers.  
Helpfully the regular expression syntax is identical with just the 
&lt;tt&gt;/^&lt;/tt&gt; and &lt;tt&gt;$/&lt;/tt&gt; removed.&lt;br /&gt;


We&#39;ve also added a tricky little &lt;tt&gt;onchange&lt;/tt&gt; handler to the 
first password field which updates the pattern required by the second 
password field - in effect forcing them to be identical:&lt;br /&gt;




&lt;form action=&quot;/javascript/validate-password/&quot; method=&quot;POST&quot;&gt;
&lt;fieldset&gt;
&lt;legend&gt;Change Password&lt;/legend&gt;
&lt;label for=&quot;field_username&quot;&gt;Username&lt;/label&gt;&lt;span&gt;&lt;input id=&quot;field_username&quot; name=&quot;username&quot; pattern=&quot;\w+&quot; required=&quot;&quot; type=&quot;text&quot; /&gt;&lt;/span&gt;
&lt;label for=&quot;field_pwd1&quot;&gt;Password&lt;/label&gt;&lt;span&gt;&lt;input id=&quot;field_pwd1&quot; name=&quot;pwd1&quot; pattern=&quot;(?=.*\d)(?=.*[a-z])(?=.*[A-Z])\w{6,}&quot; required=&quot;&quot; type=&quot;password&quot; /&gt;&lt;/span&gt;
&lt;label for=&quot;field_pwd2&quot;&gt;Confirm Password&lt;/label&gt;&lt;span&gt;&lt;input id=&quot;field_pwd2&quot; name=&quot;pwd2&quot; pattern=&quot;(?=.*\d)(?=.*[a-z])(?=.*[A-Z])\w{6,}&quot; required=&quot;&quot; type=&quot;password&quot; /&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;/fieldset&gt;
&lt;/form&gt;
Here you can see a screen shot from Safari of the form being 
completed.  The red/green markers have been implemented using CSS:&lt;br /&gt;


&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;img alt=&quot;&quot; height=&quot;139&quot; src=&quot;http://www.the-art-of-web.com/images/html5-password.jpg&quot; width=&quot;408&quot; /&gt;&lt;/div&gt;
In this example it should be clear to the user that the form can only 
be submitted once all three green ticks appear.  In any case browsers 
such as Firefox and Opera will enforce the HTML5 validation rules and 
present messages as shown here:&lt;br /&gt;


&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;img alt=&quot;&quot; height=&quot;144&quot; src=&quot;http://www.the-art-of-web.com/images/html5-password-ff.jpg&quot; width=&quot;408&quot; /&gt;&lt;/div&gt;
Presumably the browser messages will change according to the users 
language - something that would never be possible using only 
JavaScript.&lt;br /&gt;


All we have changed from the previous example is to add some extra 
attributes to the form input fields.  The rest of the HTML and 
JavaScript remains unaltered:&lt;br /&gt;


&lt;code&gt;...
&amp;lt;p&amp;gt;Username: &amp;lt;input type=&quot;text&quot; &lt;span&gt;required&lt;/span&gt; &lt;span&gt;pattern=&quot;&lt;i&gt;\w+&lt;/i&gt;&quot;&lt;/span&gt; name=&quot;username&quot;&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;Password: &amp;lt;input type=&quot;password&quot; &lt;span&gt;required&lt;/span&gt; &lt;span&gt;pattern=&quot;&lt;i&gt;(?=.*\d)(?=.*[a-z])(?=.*[A-Z])\w{6,}&lt;/i&gt;&quot;&lt;/span&gt; name=&quot;pwd1&quot; &lt;span&gt;onchange=&quot;form.pwd2.pattern = this.value;&quot;&lt;/span&gt;&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;Confirm Password: &amp;lt;input type=&quot;password&quot; &lt;span&gt;required&lt;/span&gt; &lt;span&gt;pattern=&quot;&lt;i&gt;(?=.*\d)(?=.*[a-z])(?=.*[A-Z])\w{6,}&lt;/i&gt;&quot;&lt;/span&gt; name=&quot;pwd2&quot;&amp;gt;&amp;lt;/p&amp;gt;
...&lt;/code&gt;

The best thing about HTML5 attributes is that they have no effect 
whatsoever on unsupported browsers, so Internet Explorer will act as if 
they are not present and simply run the JavaScript as before.&lt;br /&gt;


At this stage both Firefox and Opera enforce HTML5 validation 
attributes in the browser while Safari only lets you use them in 
combination with CSS effects.&lt;br /&gt;



&lt;h2 id=&quot;section_5&quot;&gt;
6. Customised HTML5 browser alerts&lt;/h2&gt;
As you can see from the screenshot above the alert message in Firefox 
for when the input doesn&#39;t match the &lt;tt&gt;pattern&lt;/tt&gt; attribute is 
simply &quot;Please match the requested format.&quot;.  Not entirely 
helpful in this case where we have a number of different 
requirements.&lt;br /&gt;


Fortunately it is possible to customise this message using just a 
touch of JavaScript.&lt;br /&gt;


&lt;form action=&quot;/javascript/validate-password/&quot; method=&quot;POST&quot;&gt;
&lt;fieldset&gt;
&lt;legend&gt;Change Password&lt;/legend&gt;
&lt;label for=&quot;field_username2&quot;&gt;Username&lt;/label&gt;&lt;span&gt;&lt;input id=&quot;field_username2&quot; name=&quot;username&quot; pattern=&quot;\w+&quot; required=&quot;&quot; type=&quot;text&quot; /&gt;&lt;/span&gt;
&lt;label for=&quot;field_pwd3&quot;&gt;Password&lt;/label&gt;&lt;span&gt;&lt;input id=&quot;field_pwd3&quot; name=&quot;pwd1&quot; pattern=&quot;(?=.*\d)(?=.*[a-z])(?=.*[A-Z])\w{6,}&quot; required=&quot;&quot; type=&quot;password&quot; /&gt;&lt;/span&gt;
&lt;label for=&quot;field_pwd4&quot;&gt;Confirm Password&lt;/label&gt;&lt;span&gt;&lt;input id=&quot;field_pwd4&quot; name=&quot;pwd2&quot; pattern=&quot;(?=.*\d)(?=.*[a-z])(?=.*[A-Z])\w{6,}&quot; required=&quot;&quot; type=&quot;password&quot; /&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;/fieldset&gt;
&lt;/form&gt;
The only change between this and the previous example is that we&#39;ve 
modified the &lt;tt&gt;onchange&lt;/tt&gt; handler for the Password input and added 
one for Confirm Password:&lt;br /&gt;


&lt;code&gt;...
&amp;lt;p&amp;gt;Password: &amp;lt;input type=&quot;password&quot; required pattern=&quot;(?=.*\d)(?=.*[a-z])(?=.*[A-Z])\w{6,}&quot; name=&quot;pwd1&quot; onchange=&quot;
  this.&lt;span&gt;setCustomValidity&lt;/span&gt;(this.&lt;span&gt;validity.patternMismatch&lt;/span&gt; ? &#39;Password must contain at least 6 characters, including UPPER/lowercase and numbers&#39; : &#39;&#39;);
  if(this.&lt;span&gt;checkValidity()&lt;/span&gt;) form.pwd2.pattern = this.value;
&quot;&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;Confirm Password: &amp;lt;input type=&quot;password&quot; required 
pattern=&quot;(?=.*\d)(?=.*[a-z])(?=.*[A-Z])\w{6,}&quot; name=&quot;pwd2&quot; onchange=&quot;
  this.setCustomValidity(this.validity.patternMismatch ? &#39;Please enter 
the same Password as above&#39; : &#39;&#39;);
&quot;&amp;gt;&amp;lt;/p&amp;gt;
...&lt;/code&gt;

When the Password input is changed we check its 
&lt;tt&gt;validity.patternMismatch&lt;/tt&gt; flag to see whether it matches the 
&lt;tt&gt;pattern&lt;/tt&gt; attribute.  If it doesn&#39;t match we set a custom error 
message to appear when the form is submitted.&lt;br /&gt;


Whenever &lt;tt&gt;setCustomValidity()&lt;/tt&gt; has been used to set a custom 
message the field in question will be regarded as invalid and prevent 
the form from submitting (at least in Firefox and Opera).  To reverse 
this it needs to be set to blank, which we do when the input matches our 
regex rules.&lt;br /&gt;


The custom message we have set appears in Firefox as shown here:&lt;br /&gt;


&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;img alt=&quot;&quot; height=&quot;158&quot; src=&quot;http://www.the-art-of-web.com/images/html5-custom-alert.jpg&quot; width=&quot;488&quot; /&gt;&lt;/div&gt;
You can see from the code that we have applied a similar technique to 
the Confirm Password field so it will now display &quot;Please enter the 
same Password as above&quot; if there is a mismatch between the two 
fields.  Basically what we&#39;ve achieved here is to replicate our 
JavaScript validation script using HTML5.&lt;br /&gt;


Because we are only checking for &lt;tt&gt;patternMismatch&lt;/tt&gt; we are not 
affecting the other default validation options - namely the 
&lt;tt&gt;required&lt;/tt&gt; attribute - so submitting the form with blank fields 
will still display the generic &quot;Please fill out this field&quot; 
alert message.  To override those errors you would need to check the 
&lt;tt&gt;validity.valueMissing&lt;/tt&gt; flag.&lt;br /&gt;


&lt;br /&gt;



&lt;h2 id=&quot;section_6&quot;&gt;
7. Conclusions&lt;/h2&gt;
As you can see there&#39;s a lot involved in providing a rich user 
experience even for something as simple as changing a password.  To 
summarise what we&#39;ve covered:&lt;br /&gt;


&lt;ul&gt;
&lt;li&gt;Always start by emailing new users a random password or unique activation link;&lt;/li&gt;
&lt;li&gt;Use the &lt;tt&gt;password&lt;/tt&gt; input type to prevent passwords appearing on screen;&lt;/li&gt;
&lt;li&gt;Decide what constitutes a &#39;strong&#39; password for your system and enforce it:&lt;ul&gt;
&lt;li&gt;server-side for spambots and users with JavaScript disabled;&lt;/li&gt;
&lt;li&gt;using JavaScript for browsers that don&#39;t support HTML5 validation;&lt;/li&gt;
&lt;li&gt;using HTML5 for a more user-friendly experience;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Use CSS rules to highlight valid/invalid input for browsers that don&#39;t have alerts built-in; and&lt;/li&gt;
&lt;li&gt;Customise the HTML5 error messages where appropriate for improved usability;&lt;/li&gt;
&lt;/ul&gt;
Most of all don&#39;t feel you have to install massive JavaScript or 
jQuery libraries just to validate a form.  By taking advantage of new 
browser standards as show in this article you can save time and 
resources and at the same time provide a better user experience.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://computer-ast.blogspot.com/feeds/6913911127296291648/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9020370651846000084/6913911127296291648' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/6913911127296291648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/6913911127296291648'/><link rel='alternate' type='text/html' href='http://computer-ast.blogspot.com/2013/04/javascript-password-validation-using.html' title='JavaScript: Password Validation using regular expressions and HTML5'/><author><name>abdessamad</name><uri>http://www.blogger.com/profile/05406414270854404188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9020370651846000084.post-8837169426705272539</id><published>2013-04-18T19:29:00.000-07:00</published><updated>2013-04-18T19:29:29.010-07:00</updated><title type='text'>Passing variables to JavaScript usin php</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;h2 id=&quot;section_0&quot;&gt;
&amp;nbsp;&lt;/h2&gt;
&lt;h2 id=&quot;section_0&quot;&gt;
&amp;nbsp;&lt;/h2&gt;
&lt;h2 id=&quot;section_0&quot;&gt;
&amp;nbsp;&lt;img alt=&quot;http://blog.outsourcing-partners.com/wp-content/uploads/2012/11/javascript.jpg&quot; src=&quot;http://blog.outsourcing-partners.com/wp-content/uploads/2012/11/javascript.jpg&quot; /&gt;&lt;/h2&gt;
&lt;h2 id=&quot;section_0&quot;&gt;
&amp;nbsp;&lt;/h2&gt;
&lt;h2 id=&quot;section_0&quot;&gt;
1. Escaping Quotes and Line Breaks&lt;/h2&gt;
Suppose you start with a PHP variable that needs to be displayed in a
JavaScript alert or confirmation dialog:&lt;br /&gt;


&lt;code&gt;  $message = &quot;a short piece of text
spanning more than one line
and containing \&quot;double\&quot; &amp;amp; &#39;single&#39; quotes&quot;;
&lt;/code&gt;

The obvious way to turn this into an alert is:&lt;br /&gt;


&lt;code&gt;&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;
  alert(&quot;&amp;lt;?PHP echo $message ?&amp;gt;&quot;);
&amp;lt;/script&amp;gt;
&lt;/code&gt;

but that results in invalid JavaScript code:

&lt;code&gt;&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;
  alert(&quot;a short piece of text
spanning more than one line
and containing &quot;double&quot; &amp;amp; &#39;single&#39; quotes&quot;);
&amp;lt;/script&amp;gt;
&lt;/code&gt;

&lt;br /&gt;
There are two problems.  Firstly, having line breaks inside a
JavaScript variable is not an option.  They&#39;ll need to be replaced with
&lt;tt&gt;\n&lt;/tt&gt; (character representation of a line break).  Secondly, the
double quotes inside the text conflict with the outer quotes of the
alert call.&lt;br /&gt;


Learning from our mistakes, here&#39;s some code that actually works:&lt;br /&gt;


&lt;code&gt;&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;
  alert(&quot;&amp;lt;?php echo &lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=9020370651846000084&quot; target=&quot;_blank&quot;&gt;preg_replace&lt;/a&gt;(&quot;/\r?\n/&quot;, &quot;\\n&quot;, &lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=9020370651846000084&quot; target=&quot;_blank&quot;&gt;addslashes&lt;/a&gt;($message)); ?&amp;gt;&quot;);
&amp;lt;/script&amp;gt;
&lt;/code&gt;

The above code relies on PHP being embedded within HTML code.  If
you&#39;re outputting the entire page from PHP then you need to go a step
further:&lt;br /&gt;


&lt;code class=&quot;final&quot;&gt;  $message = preg_replace(&quot;/\r?\n/&quot;, &quot;\\n&quot;, addslashes($message));
  echo &quot;&amp;lt;script type=\&quot;text/javascript\&quot;&amp;gt;\n&quot;;
  echo &quot;  alert(\&quot;$message\&quot;);\n&quot;;
  echo &quot;&amp;lt;/script&amp;gt;\n\n&quot;;
&lt;/code&gt;


The output is now:&lt;br /&gt;


&lt;code&gt;&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;
  alert(&quot;a short piece of text\nspanning more than one line\nand containing \&quot;double\&quot; &amp;amp; \&#39;single\&#39; quotes&quot;);
&amp;lt;/script&amp;gt;
&lt;/code&gt;

The same approach can be applied in pretty much any situation where
PHP needs to pass variables to JavaScript.&lt;br /&gt;


When trying to debug this kind of code you should &lt;b&gt;always&lt;/b&gt; check
first what&#39;s valid in JavaScript (most modern browsers have a built-in
debugger for this) and only then see how it can be generated from
PHP.&lt;br /&gt;


&lt;small&gt;&lt;b&gt;Note:&lt;/b&gt; It&#39;s not necessary to encode characters such as
&lt;tt&gt;&amp;amp;&lt;/tt&gt; and &lt;tt&gt;&quot;&lt;/tt&gt; to their HTML entities as JavaScript is a
separate language from HTML and can handle them without
problem.&lt;/small&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://computer-ast.blogspot.com/feeds/8837169426705272539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9020370651846000084/8837169426705272539' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/8837169426705272539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/8837169426705272539'/><link rel='alternate' type='text/html' href='http://computer-ast.blogspot.com/2013/04/passing-variables-to-javascript-usin-php.html' title='Passing variables to JavaScript usin php'/><author><name>abdessamad</name><uri>http://www.blogger.com/profile/05406414270854404188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9020370651846000084.post-7652287844909581550</id><published>2013-04-18T19:04:00.000-07:00</published><updated>2013-04-18T19:04:45.394-07:00</updated><title type='text'>Exporting Data to Excel usin php</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;


&lt;h2 id=&quot;section_0&quot;&gt;
1. Preparing the data&lt;/h2&gt;
The following examples use the dataset created for Sorting Arrays of Arrays which is defined as 
follows:&lt;br /&gt;



&lt;code&gt;&amp;lt;?PHP
  $data = array(
    array(&quot;firstname&quot; =&amp;gt; &quot;Mary&quot;, &quot;lastname&quot; =&amp;gt; &quot;Johnson&quot;, &quot;age&quot; =&amp;gt; 25),
    array(&quot;firstname&quot; =&amp;gt; &quot;Amanda&quot;, &quot;lastname&quot; =&amp;gt; &quot;Miller&quot;, &quot;age&quot; =&amp;gt; 18),
    array(&quot;firstname&quot; =&amp;gt; &quot;James&quot;, &quot;lastname&quot; =&amp;gt; &quot;Brown&quot;, &quot;age&quot; =&amp;gt; 31),
    array(&quot;firstname&quot; =&amp;gt; &quot;Patricia&quot;, &quot;lastname&quot; =&amp;gt; &quot;Williams&quot;, &quot;age&quot; =&amp;gt; 7),
    array(&quot;firstname&quot; =&amp;gt; &quot;Michael&quot;, &quot;lastname&quot; =&amp;gt; &quot;Davis&quot;, &quot;age&quot; =&amp;gt; 43),
    array(&quot;firstname&quot; =&amp;gt; &quot;Sarah&quot;, &quot;lastname&quot; =&amp;gt; &quot;Miller&quot;, &quot;age&quot; =&amp;gt; 24),
    array(&quot;firstname&quot; =&amp;gt; &quot;Patrick&quot;, &quot;lastname&quot; =&amp;gt; &quot;Miller&quot;, &quot;age&quot; =&amp;gt; 27)
  );
?&amp;gt;&lt;/code&gt;

&lt;small&gt;&lt;b&gt;Note:&lt;/b&gt; Further down this page you can find an example on
creating an export from an SQL query.&lt;/small&gt;&lt;br /&gt;


The first step is to output the data in a tab-delimited format (CSV
can also be used but is slightly more complicated).  To achieve this we
use the following code:&lt;br /&gt;


&lt;code&gt;&amp;lt;?PHP
  &lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=9020370651846000084&quot; target=&quot;_blank&quot;&gt;header&lt;/a&gt;(&quot;Content-Type: text/plain&quot;);

  $flag = false;
  foreach($data as $row) {
    if(!$flag) {
      &lt;i&gt;// display field/column names as first row&lt;/i&gt;
      echo &lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=9020370651846000084&quot; target=&quot;_blank&quot;&gt;implode&lt;/a&gt;(&quot;\t&quot;, &lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=9020370651846000084&quot; target=&quot;_blank&quot;&gt;array_keys&lt;/a&gt;($row)) . &quot;\r\n&quot;;
      $flag = true;
    }
    echo implode(&quot;\t&quot;, &lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=9020370651846000084&quot; target=&quot;_blank&quot;&gt;array_values&lt;/a&gt;($row)) . &quot;\r\n&quot;;
  }
  exit;
?&amp;gt;&lt;/code&gt;

We set the content type to &lt;tt&gt;text/plain&lt;/tt&gt; so that the output can
more easily be viewed in the browser.  Otherwise, because there is no
HTML formatting, the output would appear as a single line of text.&lt;br /&gt;


The first line of output will be the column headings (in this case
the field names are used).  Values are separated with a tab &lt;tt&gt;\t&lt;/tt&gt;
and rows with a line break &lt;tt&gt;\n&lt;/tt&gt;.  The output should look
something like the following:&lt;br /&gt;


&lt;code&gt;firstname lastname age
Mary Johnson 25
Amanda Miller 18
James Brown 31
Patricia Williams 7
Michael Davis 43
Sarah Miller 24
Patrick Miller 27
&lt;/code&gt;

There&#39;s already a weakness in this code that may not be immediately
obvious.  What if one of the fields to be ouput already contains one or
more tab characters, or worse, a newline?  That&#39;s going to throw the
whole process out as we rely on those characters to indicate column- and
line-breaks.&lt;br /&gt;


The solution is to &#39;escape&#39; the tab characters.  In this case we&#39;re
going to replace tabs with a literal &lt;tt&gt;\t&lt;/tt&gt; and line breaks with a
literal &lt;tt&gt;\n&lt;/tt&gt; so they don&#39;t affect the formatting:&lt;br /&gt;


&lt;code&gt;&amp;lt;?PHP
&lt;span&gt;  function cleanData(&amp;amp;$str)
  {
    $str = &lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=9020370651846000084&quot; target=&quot;_blank&quot;&gt;preg_replace&lt;/a&gt;(&quot;/\t/&quot;, &quot;\\t&quot;, $str);
    $str = preg_replace(&quot;/\r?\n/&quot;, &quot;\\n&quot;, $str);
  }&lt;/span&gt;

  header(&quot;Content-Type: text/plain&quot;);

  $flag = false;
  foreach($data as $row) {
    if(!$flag) {
      &lt;i&gt;// display field/column names as first row&lt;/i&gt;
      echo implode(&quot;\t&quot;, array_keys($row)) . &quot;\r\n&quot;;
      $flag = true;
    }
&lt;span&gt;    &lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=9020370651846000084&quot; target=&quot;_blank&quot;&gt;array_walk&lt;/a&gt;($row, &#39;cleanData&#39;);&lt;/span&gt;
    echo implode(&quot;\t&quot;, array_values($row)) . &quot;\r\n&quot;;
  }
  exit;
?&amp;gt;&lt;/code&gt;

Now, before each row is echoed any tab characters are replaced
&quot;\t&quot; so that our columns aren&#39;t broken up.  Also any line
breaks within the data are replaced with &quot;\n&quot;.  Now, how to
set this up as a download...&lt;br /&gt;



&lt;h2 id=&quot;section_1&quot;&gt;
2. Triggering a download&lt;/h2&gt;
What many programmers don&#39;t realise is that you don&#39;t have to create
a file, even a temporary one, in order for one to be downloaded.  It&#39;s
sufficient to &#39;mimic&#39; a download by passing the equivalent HTTP headers
followed by the data.&lt;br /&gt;


If we create a PHP file with the following code then when it&#39;s called
a file will be downloaded which can be opened directly using Excel.&lt;br /&gt;


&lt;code&gt;&amp;lt;?PHP
  function cleanData(&amp;amp;$str)
  {
    $str = preg_replace(&quot;/\t/&quot;, &quot;\\t&quot;, $str);
    $str = preg_replace(&quot;/\r?\n/&quot;, &quot;\\n&quot;, $str);
&lt;span&gt;    if(strstr($str, &#39;&quot;&#39;)) $str = &#39;&quot;&#39; . str_replace(&#39;&quot;&#39;, &#39;&quot;&quot;&#39;, $str) . &#39;&quot;&#39;;&lt;/span&gt;
  }

&lt;span&gt;  &lt;i&gt;// filename for download&lt;/i&gt;
  $filename = &quot;website_data_&quot; . date(&#39;Ymd&#39;) . &quot;.xls&quot;;

  header(&quot;Content-Disposition: attachment; filename=\&quot;$filename\&quot;&quot;);
  header(&quot;Content-Type: application/vnd.ms-excel&quot;);&lt;/span&gt;

  $flag = false;
  foreach($data as $row) {
    if(!$flag) {
      &lt;i&gt;// display field/column names as first row&lt;/i&gt;
      echo implode(&quot;\t&quot;, array_keys($row)) . &quot;\r\n&quot;;
      $flag = true;
    }
    array_walk($row, &#39;cleanData&#39;);
    echo implode(&quot;\t&quot;, array_values($row)) . &quot;\r\n&quot;;
  }
  exit;
?&amp;gt;&lt;/code&gt;

Note that we&#39;ve added an extra line to the &lt;tt&gt;cleanData&lt;/tt&gt; 
function to detect double-quotes and escape any value that contains 
them.  Without this an uneven number of quotes in a string can confuse 
Excel.&lt;br /&gt;


&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
This should result in a file being downloaded and saved to your 
computer.  If all goes well then the filename will be 
named &quot;website_data_20130419.xls&quot; and will open in Excel looking something like this:&lt;br /&gt;


&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;img alt=&quot;screenshot showing data in Excel colums&quot; border=&quot;1&quot; height=&quot;166&quot; src=&quot;http://www.the-art-of-web.com/images/dataexport_excel.jpg&quot; width=&quot;300&quot; /&gt;&lt;/div&gt;
How does it work?  Setting the headers tells the browser to expect a
file with a given name and type.  The data is then echoed, but instead
of appearing on the page it becomes the downloaded file.&lt;br /&gt;


Because of the &lt;tt&gt;.xls&lt;/tt&gt; extension and the &lt;tt&gt;ms-excel&lt;/tt&gt; file 
type, most computers will associate it with Excel and double-clicking 
will cause that program to open.  You could also modify the file name 
and mime type to indicate a different spreadsheet package or database 
application.&lt;br /&gt;


&lt;b&gt;There is no way to specify data or cell formatting, column 
widths, etc, using this method.  We are only passing a tab-delimited 
text file.  To include formatting try generating HTML code or a script 
that actually builds an Excel file.  Or create your own macro in Excel 
that applies formatting after the import.&lt;/b&gt;&lt;br /&gt;


A similar technique can be used to allow users to download files that 
have been uploaded previously using PHP and stored with different names.  
More on that later...&lt;br /&gt;



&lt;h2 id=&quot;section_2&quot;&gt;
3. Exporting from an SQL database&lt;/h2&gt;
If your goal is to allow data to be exported from a query result
then the changes are relatively simple:&lt;br /&gt;


&lt;code class=&quot;final&quot;&gt;&amp;lt;?PHP
  &lt;i&gt;// Original PHP code by Chirp Internet: www.chirp.com.au
  // Please acknowledge use of this code by including this header.&lt;/i&gt;

  function cleanData(&amp;amp;$str)
  {
    $str = preg_replace(&quot;/\t/&quot;, &quot;\\t&quot;, $str);
    $str = preg_replace(&quot;/\r?\n/&quot;, &quot;\\n&quot;, $str);
    if(strstr($str, &#39;&quot;&#39;)) $str = &#39;&quot;&#39; . str_replace(&#39;&quot;&#39;, &#39;&quot;&quot;&#39;, $str) . &#39;&quot;&#39;;
  }

  &lt;i&gt;// filename for download&lt;/i&gt;
  $filename = &quot;website_data_&quot; . date(&#39;Ymd&#39;) . &quot;.xls&quot;;

  header(&quot;Content-Disposition: attachment; filename=\&quot;$filename\&quot;&quot;);
  header(&quot;Content-Type: application/vnd.ms-excel&quot;);

  $flag = false;
&lt;span&gt;  $result = &lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=9020370651846000084&quot; target=&quot;_blank&quot;&gt;pg_query&lt;/a&gt;(&quot;SELECT * FROM &lt;i&gt;table&lt;/i&gt; ORDER BY &lt;i&gt;field&lt;/i&gt;&quot;) or die(&#39;Query failed!&#39;);
  while(false !== ($row = &lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=9020370651846000084&quot; target=&quot;_blank&quot;&gt;pg_fetch_assoc&lt;/a&gt;($result))) {&lt;/span&gt;
    if(!$flag) {
      &lt;i&gt;// display field/column names as first row&lt;/i&gt;
      echo implode(&quot;\t&quot;, array_keys($row)) . &quot;\r\n&quot;;
      $flag = true;
    }
    array_walk($row, &#39;cleanData&#39;);
    echo implode(&quot;\t&quot;, array_values($row)) . &quot;\r\n&quot;;
  }
  exit;
?&amp;gt;&lt;/code&gt;

This would be the entire file required to query the database and 
trigger the file download.  The database functions need to match the 
database you&#39;re using. &lt;b&gt;MySQL users for example will need to use &lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=9020370651846000084&quot; target=&quot;_blank&quot;&gt;mysql_query&lt;/a&gt; 
and either &lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=9020370651846000084&quot; target=&quot;_blank&quot;&gt;mysql_fetch_assoc&lt;/a&gt; or &lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=9020370651846000084&quot; target=&quot;_blank&quot;&gt;mysqli_fetch_assoc&lt;/a&gt;&lt;/b&gt; in place of the PostgreSQL 
functions.&lt;br /&gt;


For other databases see under User Comments 
below or check the PHP documentation.  &lt;b&gt;If you are seeing duplicate 
columns (numbered as well as labeled) you need to change the fetch call 
to return only the associative (ASSOC) array&lt;/b&gt;.&lt;br /&gt;


If you&#39;re having trouble at this stage, remove the
Content-Disposition header and change the Content-Type back to
&lt;tt&gt;text/plain&lt;/tt&gt;.  This makes debugging a lot easier as you can see
the output in your browser rather than having to download and open the
generated file every time you edit the script.&lt;br /&gt;



&lt;h2 id=&quot;section_3&quot;&gt;
4. Preventing Excel&#39;s ridiculous auto-format&lt;/h2&gt;
When importing from a text file as we&#39;re essentially doing here, 
Excel has a nasty habit of mangling dates, timestamps, phone numbers and 
similar input values.&lt;br /&gt;


For our purposes, some simple additions to the &lt;tt&gt;cleanData&lt;/tt&gt; 
function take care of most of the problems:&lt;br /&gt;


&lt;code class=&quot;final&quot;&gt;&amp;lt;?PHP
  &lt;i&gt;// Original PHP code by Chirp Internet: www.chirp.com.au
  // Please acknowledge use of this code by including this header.&lt;/i&gt;

  function cleanData(&amp;amp;$str)
  {
    &lt;i&gt;// escape tab characters&lt;/i&gt;
    $str = preg_replace(&quot;/\t/&quot;, &quot;\\t&quot;, $str);

    &lt;i&gt;// escape new lines&lt;/i&gt;
    $str = preg_replace(&quot;/\r?\n/&quot;, &quot;\\n&quot;, $str);

    &lt;i&gt;// convert &#39;t&#39; and &#39;f&#39; to boolean values&lt;/i&gt;
    if($str == &#39;t&#39;) $str = &#39;TRUE&#39;;
    if($str == &#39;f&#39;) $str = &#39;FALSE&#39;;

    &lt;i&gt;// force certain number/date formats to be imported as strings&lt;/i&gt;
    if(preg_match(&quot;&lt;span&gt;/^0/&lt;/span&gt;&quot;, $str) || preg_match(&quot;&lt;span&gt;/^\+?\d{8,}$/&lt;/span&gt;&quot;, $str) || preg_match(&quot;&lt;span&gt;/^\d{4}.\d{1,2}.\d{1,2}/&lt;/span&gt;&quot;, $str)) {
      $str = &quot;&#39;$str&quot;;
    }

    &lt;i&gt;// escape fields that include double quotes&lt;/i&gt;
    if(strstr($str, &#39;&quot;&#39;)) $str = &#39;&quot;&#39; . str_replace(&#39;&quot;&#39;, &#39;&quot;&quot;&#39;, $str) . &#39;&quot;&#39;;
  }
?&amp;gt;&lt;/code&gt;

The section that prevents values being scrambled does so by inserting 
an apostrophe at the start of the cell.  When you open the resuling file 
in Excel you may see the apostrophe, but editing the field will make it 
disappear while retaining the string format.  Excel is strange that way.&lt;br /&gt;


The types of values being escape this way are: values starting with a 
zero; values starting with an optional &lt;tt&gt;+&lt;/tt&gt; and at least 8 
consecutive digits (phone numbers); and values starting with numbers in 
YYYY-MM-DD format (timestamps).  The relevant regular expressions have 
been highlighted in the code above.&lt;br /&gt;



&lt;h2 id=&quot;section_4&quot;&gt;
5. Formatting - colours, numbers, dates&lt;/h2&gt;
Again, this script generates and triggers the download of a 
tab-delimited &lt;b&gt;text file&lt;/b&gt; with an &lt;tt&gt;.xls&lt;/tt&gt; extension and Excel 
Mime-Type.  We are &lt;b&gt;not&lt;/b&gt; building an actual Excel document.&lt;br /&gt;


Defining styles, colours, column widths, etc, is not possible using 
this technique.  You may be able to generate an HTML table with some 
formatted data that Excel will recognise, otherwise you need a much 
more complicated script.&lt;br /&gt;



&lt;h2 id=&quot;section_5&quot;&gt;
6. Exporting to CSV format&lt;/h2&gt;
The tab-delimited text options describe above may be a bit limiting 
if your data contains newlines or tab breaks that you want to preserve 
when opened in Excel or another spreadsheet application.&lt;br /&gt;


A better format then is comma-separated variables (CSV) which can be 
generated as follows:&lt;br /&gt;


&lt;code class=&quot;final&quot;&gt;&amp;lt;?PHP
  function cleanData(&amp;amp;$str)
  {
    if($str == &#39;t&#39;) $str = &#39;TRUE&#39;;
    if($str == &#39;f&#39;) $str = &#39;FALSE&#39;;
    if(preg_match(&quot;/^0/&quot;, $str) || preg_match(&quot;/^\+?\d{8,}$/&quot;, $str) || preg_match(&quot;/^\d{4}.\d{1,2}.\d{1,2}/&quot;, $str)) {
      $str = &quot;&#39;$str&quot;;
    }
    if(strstr($str, &#39;&quot;&#39;)) $str = &#39;&quot;&#39; . str_replace(&#39;&quot;&#39;, &#39;&quot;&quot;&#39;, $str) . &#39;&quot;&#39;;
  }

  &lt;i&gt;// filename for download&lt;/i&gt;
  $filename = &quot;website_data_&quot; . date(&#39;Ymd&#39;) . &quot;&lt;span&gt;.csv&lt;/span&gt;&quot;;

  header(&quot;Content-Disposition: attachment; filename=\&quot;$filename\&quot;&quot;);
  header(&quot;Content-Type: text/csv;&quot;);

  &lt;span&gt;$out&lt;/span&gt; = &lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=9020370651846000084&quot; target=&quot;_blank&quot;&gt;fopen&lt;/a&gt;(&quot;php://output&quot;, &#39;w&#39;);

  $flag = false;
  $result = pg_query(&quot;SELECT * FROM table ORDER BY field&quot;) or die(&#39;Query failed!&#39;);
  while(false !== ($row = pg_fetch_assoc($result))) {
    if(!$flag) {
      &lt;i&gt;// display field/column names as first row&lt;/i&gt;
      &lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=9020370651846000084&quot; target=&quot;_blank&quot;&gt;fputcsv&lt;/a&gt;(&lt;span&gt;$out&lt;/span&gt;, array_keys($row), &#39;,&#39;, &#39;&quot;&#39;);
      $flag = true;
    }
    array_walk($row, &#39;cleanData&#39;);
    fputcsv(&lt;span&gt;$out&lt;/span&gt;, array_values($row), &#39;,&#39;, &#39;&quot;&#39;);
  }

  fclose(&lt;span&gt;$out&lt;/span&gt;);
  exit;
?&amp;gt;&lt;/code&gt;

Normally the &lt;tt&gt;fputcsv&lt;/tt&gt; command is used to write data in CSV 
format to a separate file.  In this script we&#39;re tricking it into 
writing directly to the page by telling it to write to 
&lt;tt&gt;php://output&lt;/tt&gt; instead of a regular file.&lt;br /&gt;



&lt;h2 id=&quot;section_6&quot;&gt;
7. Exporting to CSV with Unicode intact&lt;/h2&gt;
If like us your data contains UTF-8 characters you will notice that 
Excel doesn&#39;t handle them very well.  Other applications can open UTF-8 
content without problems, but for some reason Microsoft wants to keep 
you in the dark ages.&lt;br /&gt;


Fortunately, there is a trick you can use.  Below you can see how we 
modify the script to convert everything from UTF-8 to UTF-16 Lower 
Endian (UTF-16LE) format which Excel, at least on Windows, will recognise.&lt;br /&gt;


&lt;small&gt;&lt;b&gt;Please Note:&lt;/b&gt; When you open the file in Excel you might 
find all the data bunched into the first column.  This should be fixable 
using the &quot;Text to Columns...&quot; command in the Data menu.&lt;/small&gt;&lt;br /&gt;


&lt;code class=&quot;final&quot;&gt;&amp;lt;?PHP
  function cleanData(&amp;amp;$str)
  {
    if($str == &#39;t&#39;) $str = &#39;TRUE&#39;;
    if($str == &#39;f&#39;) $str = &#39;FALSE&#39;;
    if(preg_match(&quot;/^0/&quot;, $str) || preg_match(&quot;/^\+?\d{8,}$/&quot;, $str) || preg_match(&quot;/^\d{4}.\d{1,2}.\d{1,2}/&quot;, $str)) {
      $str = &quot;&#39;$str&quot;;
    }
    if(strstr($str, &#39;&quot;&#39;)) $str = &#39;&quot;&#39; . str_replace(&#39;&quot;&#39;, &#39;&quot;&quot;&#39;, $str) . &#39;&quot;&#39;;
    &lt;span&gt;$str = mb_convert_encoding($str, &#39;UTF-16LE&#39;, &#39;UTF-8&#39;);&lt;/span&gt;
  }

  &lt;i&gt;// filename for download&lt;/i&gt;
  $filename = &quot;website_data_&quot; . date(&#39;Ymd&#39;) . &quot;.csv&quot;;

  header(&quot;Content-Disposition: attachment; filename=\&quot;$filename\&quot;&quot;);
  header(&quot;Content-Type: text/csv;&lt;span&gt; charset=UTF-16LE&lt;/span&gt;&quot;);

  $out = fopen(&quot;php://output&quot;, &#39;w&#39;);

  $flag = false;
  $result = pg_query(&quot;SELECT * FROM table ORDER BY field&quot;) or die(&#39;Query failed!&#39;);
  while(false !== ($row = pg_fetch_assoc($result))) {
    if(!$flag) {
      &lt;i&gt;// display field/column names as first row&lt;/i&gt;
      fputcsv($out, array_keys($row), &#39;,&#39;, &#39;&quot;&#39;);
      $flag = true;
    }
    array_walk($row, &#39;cleanData&#39;);
    fputcsv($out, array_values($row), &#39;,&#39;, &#39;&quot;&#39;);
  }

  fclose($out);
  exit;
?&amp;gt;&lt;/code&gt;

This script may not work for all versions of Excel.  Please let us 
know using the Feedback form below if you encounter problems or come up 
with a better solution.&lt;br /&gt;



&lt;h2 id=&quot;section_7&quot;&gt;
8. Specifying column headings&lt;/h2&gt;
The above database download examples all use the database field 
names for the first row of the exported file which may not be what you 
want.  If you want to specify your own more user-friendly headings you 
can modify the code as follow:&lt;br /&gt;


&lt;code&gt;&amp;lt;PHP
  $colnames = array(
&lt;i&gt;    &#39;memberno&#39; =&amp;gt; &quot;Member No.&quot;,
    &#39;date_joined&#39; =&amp;gt; &quot;Date joined&quot;,
    &#39;title&#39; =&amp;gt; &quot;Title&quot;,
    &#39;firstname&#39; =&amp;gt; &quot;First name&quot;,
    &#39;lastname&#39; =&amp;gt; &quot;Last name&quot;,
    &#39;address&#39; =&amp;gt; &quot;Address&quot;,
    &#39;postcode&#39; =&amp;gt; &quot;Postcode&quot;,
    &#39;city&#39; =&amp;gt; &quot;City&quot;,
    &#39;country&#39; =&amp;gt; &quot;Country&quot;,
    &#39;phone&#39; =&amp;gt; &quot;Telephone&quot;,
    &#39;mobile&#39; =&amp;gt; &quot;Mobile&quot;,
    &#39;fax&#39; =&amp;gt; &quot;Facsimile&quot;,
    &#39;email&#39; =&amp;gt; &quot;Email address&quot;,
    &#39;notes&#39; =&amp;gt; &quot;Notes&quot;&lt;/i&gt;
  );

  function &lt;tt&gt;map_colnames&lt;/tt&gt;($input)
  {
    global $colnames;
    return isset($colnames[$input]) ? $colnames[$input] : $input;
  }

  &lt;i&gt;// filename for download&lt;/i&gt;
  $filename = &quot;website_data_&quot; . date(&#39;Ymd&#39;) . &quot;.csv&quot;;

  ...

    if(!$flag) {
      &lt;i&gt;// display field/column names as first row&lt;/i&gt;
&lt;span&gt;      $firstline = &lt;a href=&quot;http://www.blogger.com/blogger.g?blogID=9020370651846000084&quot; target=&quot;_blank&quot;&gt;array_map&lt;/a&gt;(&quot;&lt;tt&gt;map_colnames&lt;/tt&gt;&quot;, array_keys($row));
      fputcsv($outstream, $firstline, &#39;,&#39;, &#39;&quot;&#39;);&lt;/span&gt;
      $flag = true;
    }

   ...

?&amp;gt;&lt;/code&gt;

The values in the first row will be mapped according to the 
&lt;tt&gt;$colnames&lt;/tt&gt; associative array.  If no mapping is provided for a 
fieldname it will remain unchanged.  Of course you will want to provide 
your own list of suitable headings.  They don&#39;t have to be in order.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://computer-ast.blogspot.com/feeds/7652287844909581550/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9020370651846000084/7652287844909581550' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/7652287844909581550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/7652287844909581550'/><link rel='alternate' type='text/html' href='http://computer-ast.blogspot.com/2013/04/exporting-data-to-excel-usin-php.html' title='Exporting Data to Excel usin php'/><author><name>abdessamad</name><uri>http://www.blogger.com/profile/05406414270854404188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9020370651846000084.post-5352086797696577569</id><published>2013-03-26T06:23:00.000-07:00</published><updated>2013-03-26T06:23:02.805-07:00</updated><title type='text'>Why do you need an Ecommerce website?</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://www.ecommerce-webmarketing.com/wp-content/uploads/2012/09/e-commerce-mod%C3%A8le-%C3%A9conomique1.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://www.ecommerce-webmarketing.com/wp-content/uploads/2012/09/e-commerce-mod%C3%A8le-%C3%A9conomique1.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
If you’re looking to sell your products 
online, you would need an Ecommerce store. Who does not want a fully 
featured site or portal for less money? We can provide you tailor made 
solutions for your online shopping needs matching your budget. You can 
easily make profits with our custom Ecommerce solutions.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
At Infilon, we keep in mind the target audience while designing and developing
 any Ecommerce store. Our designs are influenced by who is going to buy 
your products. All the websites we build are user friendly and creative.
 We do not do what everybody does and that makes us distinguish from the
 crowd. We can make your Ecommerce website stand out from the pool of 
websites.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
We have helped many small and large 
businesses make huge profits with having an online presence. Once you 
come to us, you can get tension-free about the development and you can 
focus on your core business. Now, you don’t need to spend thousands of 
dollars for having an Ecommerce store. We provide cost effective 
solutions for all your Ecommerce needs.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
There might be countless competitors in 
your business. So standing out of the competition is mandatory. We 
analyse the markets and then come to an idea and plan to design an 
Ecommerce website for you. At Infilon, we can help you build a larger 
turn over in no time. The experts at Infilon always strive to create new
 ways to enhance our services and help our clients to get the maximum 
Returns on Investment.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
The key to a successful Ecommerce website
 is easy navigation, user-friendly, multiple payment options and 
content. After the development, you would obviously need branding. We 
prepare a good marketing strategy for your website or portal. The key to
 a successful and profit-generating ecommerce&amp;nbsp;website is easy navigable,
 user friendly, multiple payment options and easy search options.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
You should make your website customers’ 
favorite and their shopping experience with your website memorable. With
 years of experience, we know how to offer a high conversion ratio for 
your products. By using our Ecommerce solutions, showcase your products to the world and build a flourishing online business.&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://computer-ast.blogspot.com/feeds/5352086797696577569/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9020370651846000084/5352086797696577569' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/5352086797696577569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/5352086797696577569'/><link rel='alternate' type='text/html' href='http://computer-ast.blogspot.com/2013/03/why-do-you-need-ecommerce-website.html' title='Why do you need an Ecommerce website?'/><author><name>abdessamad</name><uri>http://www.blogger.com/profile/05406414270854404188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9020370651846000084.post-9145900857531032947</id><published>2013-03-23T18:15:00.003-07:00</published><updated>2013-03-23T18:15:36.616-07:00</updated><title type='text'>what is new in windows 8 server ?</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Hello again. This is another article about Windows 8. But this time I
 will talk about the server version of this operating system. As you all
 know, approximately 1 month ago, Microsoft made the Developer Preview 
of its next  generation operating system available through its MSDN 
website. The installation of the operating system is somehow similar 
(but shorter) to the installation of its client version brother. But the
 interior is different of course. Let me first show you the installation
 and then I will talk about new features coming with the Server 8.&lt;br /&gt;

&lt;div style=&quot;margin: 40px 0 0 0;&quot;&gt;
&lt;span id=&quot;more-316&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding-left: 70px;&quot;&gt;
&lt;/div&gt;
The ISO file of the setup DVD for Windows 8 Server is reachable 
through the MSDN site as I mentioned before. Therefore if you are an 
MSDN subscriber, you can&amp;nbsp; download it via &lt;a href=&quot;http://msdn.microsoft.com/en-us/subscriptions/downloads/default.aspx&quot;&gt;http://msdn.microsoft.com/en-us/subscriptions/downloads/default.aspx&lt;/a&gt;
 . As you can see in Figure 1, you have to sign in to the website and 
you must have the permission to download this server product.&lt;br /&gt;

&lt;div class=&quot;wp-caption aligncenter&quot; style=&quot;width: 605px;&quot;&gt;
&lt;img alt=&quot;&quot; height=&quot;299&quot; src=&quot;http://mstip.ipsure.com/images/mstip/pic0120112001.jpg&quot; width=&quot;595&quot; /&gt;&lt;div class=&quot;wp-caption-text&quot;&gt;
Figure 1: MSDN Subscriber webpage&lt;/div&gt;
&lt;/div&gt;
You may want to read the system requirements for Windows Server 8 
Developer Preview installation first.&amp;nbsp; This information can be reached 
through &lt;a href=&quot;http://msdn.microsoft.com/en-us/windowsserver/hh440457&quot;&gt;http://msdn.microsoft.com/en-us/windowsserver/hh440457&lt;/a&gt;
 webpage (actually using resources less than the ones mentioned in the 
webpage doesn’t prevent the installation to be completed).&lt;br /&gt;

OK. Let me start with the installation process now. After I insert my
 installation DVD into my server, I boot the server with it and the 
first screen is (as usual) time/keyboard/language selection screen as 
seen in Figure 2. After I complete the selections, I begin to install 
Windows 8 Server by pressing “Install Now” button on the next screen 
(Figure 3).&lt;br /&gt;

&lt;div class=&quot;wp-caption aligncenter&quot; style=&quot;width: 567px;&quot;&gt;
&lt;img alt=&quot;&quot; height=&quot;413&quot; src=&quot;http://mstip.ipsure.com/images/mstip/pic0120112002.jpg&quot; width=&quot;557&quot; /&gt;&lt;div class=&quot;wp-caption-text&quot;&gt;
Figure 2: Time/keyboard/language selection screen&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;wp-caption aligncenter&quot; style=&quot;width: 568px;&quot;&gt;
&lt;img alt=&quot;&quot; height=&quot;412&quot; src=&quot;http://mstip.ipsure.com/images/mstip/pic0120112003.jpg&quot; width=&quot;558&quot; /&gt;&lt;div class=&quot;wp-caption-text&quot;&gt;
Figure 3: “Install now”&lt;/div&gt;
&lt;/div&gt;
The following screen is the selection of the operating system type 
screen. Here, I have three types of operating system to install and I 
select the first choice which is full installation (Figure 4). In here, a
 very new installation type “Features on Demand” is also listed (which I
 am not very familiar with for now). &amp;nbsp;The next 3 screens are License 
Agreement, type of installation (upgrade or Custom) and disk selection 
screens. After a couple of Next buttons, I finish the installation of 
Developer Preview edition of the new Windows operating system. The first
 screen represented after a reboot is “Settings” screen which is 
actually the place that I decide the administrators password (Figure 5).
 That is all :) . No more questions. This represents me the CTRL+ALT+DEL
 screen (Figure 6) and I logon to my new server.&lt;br /&gt;

&lt;div class=&quot;wp-caption aligncenter&quot; style=&quot;width: 610px;&quot;&gt;
&lt;img alt=&quot;&quot; height=&quot;450&quot; src=&quot;http://mstip.ipsure.com/images/mstip/pic0120112004.jpg&quot; width=&quot;600&quot; /&gt;&lt;div class=&quot;wp-caption-text&quot;&gt;
Figure 4: Operating System types&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;wp-caption aligncenter&quot; style=&quot;width: 610px;&quot;&gt;
&lt;img alt=&quot;&quot; height=&quot;450&quot; src=&quot;http://mstip.ipsure.com/images/mstip/pic0120112005.jpg&quot; width=&quot;600&quot; /&gt;&lt;div class=&quot;wp-caption-text&quot;&gt;
Figure 5: Settings screen&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;wp-caption aligncenter&quot; style=&quot;width: 610px;&quot;&gt;
&lt;img alt=&quot;&quot; height=&quot;450&quot; src=&quot;http://mstip.ipsure.com/images/mstip/pic0120112006.jpg&quot; width=&quot;600&quot; /&gt;&lt;div class=&quot;wp-caption-text&quot;&gt;
Figure 6: CTRL+ALT+DEL screen&lt;/div&gt;
&lt;/div&gt;
After I logon to the operating system, “Server Manager” window is 
opened automatically. It is completely different than its predecessors 
as you can see in Figure 7. I will not get into detail about it now 
because we will play with it in future articles. Therefore that is end 
of installation part. Not that difficult, huh?&lt;br /&gt;

&lt;div class=&quot;wp-caption aligncenter&quot; style=&quot;width: 610px;&quot;&gt;
&lt;img alt=&quot;&quot; height=&quot;421&quot; src=&quot;http://mstip.ipsure.com/images/mstip/pic0120112007.jpg&quot; width=&quot;600&quot; /&gt;&lt;div class=&quot;wp-caption-text&quot;&gt;
Figure 7: New “Server manager” interface&lt;/div&gt;
&lt;/div&gt;
Now I want to talk about the new features coming with this new 
operating system. According to the Windows guys, there are 300 new 
features/improvements in this version but I couldn’t explain all of them
 of course :) &amp;nbsp;.&amp;nbsp; Therefore I will talk about the most important ones 
(according to me).&lt;br /&gt;

You saw Server Manager in Figure 7 and as you understand it had a new
 Metro Style interface. That is not I am going to talk about Server 
Manager but it has a new capability now. You can do multiserver 
management via Server Manager of Windows 8 Server (Figure 8). What I 
mean by this? With Server Manager, you can (for example) install 
updates, reboot and load File Services Role or DNS role on four servers 
simultaneously. No need to do one by one.&lt;br /&gt;

&lt;div class=&quot;wp-caption aligncenter&quot; style=&quot;width: 592px;&quot;&gt;
&lt;img alt=&quot;&quot; height=&quot;418&quot; src=&quot;http://mstip.ipsure.com/images/mstip/pic0120112008.jpg&quot; width=&quot;582&quot; /&gt;&lt;div class=&quot;wp-caption-text&quot;&gt;
Figure 8: You can put additional servers in the list to add the same role simultaneously&lt;/div&gt;
&lt;/div&gt;
Another new feature (actually an improvement) is Hyper-V version 3. 
It has new specifications now (and may change with RTM). Hyper-V version
 3 supports 160 CPU cores and 2TB memory on host machines. It supports 
32 CPU cores and 512 GB memory per virtual machine. Another feature it 
has is the new file format VHDX. VHDX can exceed 2TB in size and runs 
faster than VHD format. Hyper-V version 3 can grow up to 63 nodes in a 
cluster and supports 4000 virtual machines per cluster.&lt;br /&gt;

Windows 8 Server can team the network cards natively. Before Windows 8
 Server, we can team the network cards with the manufacturer’s teaming 
tools/softwares but now it is not needed. Most importantly, we can team 
NICs that have totally different chipsets. Therefore Windows can load 
balance the network job and if one of the NICs fails, It continues its 
job seamlessly.&lt;br /&gt;

One of the coolest feature that Windows 8 Server introduces is 
Dynamic Access Control. It is a new approach for file/folder 
permissions. To be clear, it uses &lt;strong&gt;tags&lt;/strong&gt; for file/folder 
access (like Microsoft Office Tags). For example, you can give each 
personnel of the Finance department a specific title in Active Directory
 and Windows 8 File Server can use the Active Directory Title Attribute 
as a tag. As a result, it lets the personnel reach the files and folders
 which are classified for this tag. This feature may rescue 
administrators from too many security groups which are created just for 
giving permissions on file server.&lt;br /&gt;

The last feature that I want to mention in this article is 
de-duplication feature. If there are files with multiple copies in the 
hard drive, Windows 8 Server can save space by keeping one real copy of 
them and pointer for the rest. For example, you have multiple Windows 
Server 2003 virtual machines created on your Windows 8&amp;nbsp; Hyper-V server 
and each of these virtual machines have calculator.exe file. Windows 8 
Server knows about these redundant files and keep only one of them. The 
rest is just pointers to this kept one. I think you got the idea ;)&lt;br /&gt;

Hopefully and most probably, there will be more stuff in Windows 8 
Server when it is released. I tried to mention the most important ones 
(in my opinion) in this article. I hope you enjoyed it. See you next 
time.&lt;br /&gt;



&lt;a href=&quot;http://www.linkwithin.com/&quot;&gt;&lt;img alt=&quot;Related Posts with Thumbnails&quot; src=&quot;http://www.linkwithin.com/pixel.png&quot; style=&quot;border: 0;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://computer-ast.blogspot.com/feeds/9145900857531032947/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9020370651846000084/9145900857531032947' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/9145900857531032947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/9145900857531032947'/><link rel='alternate' type='text/html' href='http://computer-ast.blogspot.com/2013/03/what-is-new-in-windows-8-server.html' title='what is new in windows 8 server ?'/><author><name>abdessamad</name><uri>http://www.blogger.com/profile/05406414270854404188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9020370651846000084.post-1732965897817485534</id><published>2013-03-23T18:13:00.001-07:00</published><updated>2013-03-23T18:13:11.374-07:00</updated><title type='text'>what is new in windows 8 ?</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Last weeks Microsoft released the Developer Preview for its new 
operating system, Windows 8, to public. It is known that Windows 8 Final
 Release will be available in 2012. As all new operating systems come 
with improvements and differences, Windows 8 promises to give customers a
 new and improved Windows experience. Throughout this article, I want to
 show you some of these new features of Windows 8.&lt;br /&gt;

&lt;div style=&quot;margin: 40px 0 0 0;&quot;&gt;
&lt;span id=&quot;more-302&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding-left: 70px;&quot;&gt;
&lt;/div&gt;
Windows 8 Developer Preview can be downloaded through the link&amp;nbsp; &lt;a href=&quot;http://msdn.microsoft.com/en-us/windows/apps/br229516&quot;&gt;http://msdn.microsoft.com/en-us/windows/apps/br229516&lt;/a&gt;
 . The operating system is coming with 32bit and 64 bit options. I will 
explain the main differences of Windows 8 but you can reach a long list 
of new Windows 8 features in &lt;a href=&quot;http://www.winrumors.com/heres-a-list-of-300-windows-8-features-that-microsoft-didnt-show/&quot;&gt;winrumors.com&lt;/a&gt; website. So what are the main newly coming features of Windows 8?&lt;br /&gt;

The first thing a user will notice is metro style user interface 
(Figure 1). This interface is mainly designed for tablets and is build 
for touch. You can access your applications (Apps) from this single 
interface with a fingertip. This interface is a personalized layout with
 clean animations and writings to make the user interact with his/her PC
 fluid. The new Start screen puts everything you want and you need in 
front of you for immediate access. It is also alive! What I mean by that
 is the Apps show user up-to-date information as long as your device is 
connected to the internet. Therefore, you can access the information as 
it produced.&lt;br /&gt;

&lt;div class=&quot;wp-caption aligncenter&quot; style=&quot;width: 610px;&quot;&gt;
&lt;img alt=&quot;&quot; height=&quot;450&quot; src=&quot;http://mstip.ipsure.com/images/mstip/pic0120111501.jpg&quot; width=&quot;600&quot; /&gt;&lt;div class=&quot;wp-caption-text&quot;&gt;
Figure 1: Metro Style start screen&lt;/div&gt;
&lt;/div&gt;
Previous Windows client operating systems support x86 or x64 
platforms. Another new feature of Windows 8 is its ARM support. As the 
new Windows 8 operating system is mainly designed for mobile devices, it
 supports ARM-based chipsets now. The users will experience their new 
Windows in various types of devices such as a 10-inch tablet or ultra 
lightweight laptops.&lt;br /&gt;

Cloud computing is seen as the future of computing world today and 
Applications (as in the Android operating system) is the new trend in IT
 world. Therefore Microsoft implements its application solution to 
Windows 8 (Apps). Windows Store (identical to Google Android Market) 
will serve as a central point for application downloads. Windows Apps 
can work together by the way; making it easy to search, share, and send 
content between them. As I said before, when a user is connected to the 
Internet, &amp;nbsp;Apps come alive with activity and show the latest content. 
May be the most powerful side of Windows Apps is their ability to come 
with the user! As a user sign in with his connected Microsoft account 
(LiveID) to another PC running Windows 8, his Metro style apps and 
settings go with him, so it’s just like using his own PC.&lt;br /&gt;

Another improvement Windows 8 has is the faster boot start. In 
windows8center.com website, there is a good explanation of why it is 
faster than its predecessors. Figure 2 shows the comparison of Windows 8
 and Windows 7 boot up speeds for various PC configurations. Therefore, 
one of the most frastrating downside (long startup time) of Windows 
operating systems is not a downside anymore. :)&lt;br /&gt;

&lt;div class=&quot;wp-caption aligncenter&quot; style=&quot;width: 539px;&quot;&gt;
&lt;img alt=&quot;&quot; height=&quot;229&quot; src=&quot;http://mstip.ipsure.com/images/mstip/pic0120111502.jpg&quot; width=&quot;529&quot; /&gt;&lt;div class=&quot;wp-caption-text&quot;&gt;
Figure 2: Windows 8 vs Windows 7 boot start comparison (taken from windows8center.com)&lt;/div&gt;
&lt;/div&gt;
Windows 8 supports USB 3.0 standard natively. As I talked about USB 
standard, there is a big improvement that Windows 8 can be booted from a
 USB memory stick. This feature which is called “Windows To Go” will be 
very helpful especially for system administrators I think. You can boot a
 corrupted or infected machine with Windows 8 and perform administrative
 tasks on that. Also a user can bring his operating system with him 
wherever he wants. Just plug the stick in, work as he wants, finish the 
job and plug the operating system out. :)&lt;br /&gt;

Uptil now, I talked about the general changes that the new operating 
system has over the previous one. But what about the user experience? Is
 there any changes or improvements in Windows while we are using it? Let
 me talk about it from now on.&lt;br /&gt;

Task Manager looks different now (Figure3). It is easy-to-use and 
all-in-one dashboard for monitoring the PC’s resources and services. The
 data is presented in color-coded tiles to point out the items that are 
using the bulk of a resource. There are 7 tabs included in Task Manager 
now which are; Processes, Performance, App History, Startup, Users, 
Details and Services.&lt;br /&gt;

&lt;div class=&quot;wp-caption aligncenter&quot; style=&quot;width: 599px;&quot;&gt;
&lt;img alt=&quot;&quot; height=&quot;502&quot; src=&quot;http://mstip.ipsure.com/images/mstip/pic0120111503.jpg&quot; width=&quot;589&quot; /&gt;&lt;div class=&quot;wp-caption-text&quot;&gt;
Figure 3: New Task Manager&lt;/div&gt;
&lt;/div&gt;
Another new feature (which is not a big one but very important in my 
opinion) is the ability to mount ISO and VHD files natively. From now on
 with Windows 8, you can mount your ISO files as CD-Drive and your VHD 
files as harddisks without needing a third party solution. As an 
administrator, one of the first things that I’ve done is to install a 
mounting software to my operating system. With Windows 8, I don’t need 
it anymore (Figure 4).&lt;br /&gt;

&lt;div class=&quot;wp-caption aligncenter&quot; style=&quot;width: 589px;&quot;&gt;
&lt;img alt=&quot;&quot; height=&quot;320&quot; src=&quot;http://mstip.ipsure.com/images/mstip/pic0120111504.jpg&quot; width=&quot;579&quot; /&gt;&lt;div class=&quot;wp-caption-text&quot;&gt;
Figure 4: Mounting ISO and VHD files&lt;/div&gt;
&lt;/div&gt;
Windows Explorer has a big difference now because it has a ribbon bar
 which organizes the rich functionality of Explorer (Figure 5). Mostly 
used commands are now organized in ribbon and users can reach most of 
the functionalities with one mouse click.&lt;br /&gt;

&lt;div class=&quot;wp-caption aligncenter&quot; style=&quot;width: 606px;&quot;&gt;
&lt;img alt=&quot;&quot; height=&quot;264&quot; src=&quot;http://mstip.ipsure.com/images/mstip/pic0120111505.jpg&quot; width=&quot;596&quot; /&gt;&lt;div class=&quot;wp-caption-text&quot;&gt;
Figure 5: Ribbon bar of Windows Explorer&lt;/div&gt;
&lt;/div&gt;
Other than these, few additional changes that the users experience at
 first glance are Internet Explorer 10, Push-button Reset, Lock Screen 
&amp;amp; Notifications, LiveID logon. As I said before there will be lots 
of improvements when Windows 8 is on the market. You can read more 
explanation about the new features in &lt;a href=&quot;http://download.microsoft.com/download/1/E/4/1E455D53-C382-4A39-BA73-55413F183333/Windows_Developer_Preview-Windows8_guide.pdf&quot;&gt;http://download.microsoft.com/download/1/E/4/1E455D53-C382-4A39-BA73-55413F183333/Windows_Developer_Preview-Windows8_guide.pdf&lt;/a&gt; .&lt;br /&gt;

I think Windows 8 will be a realistic change for Microsoft and the 
real first step to cloud computing on the client side. It seems that 
user habits will change with this new release. Users will get what they 
want from the operating system more easily and friendly. I hope the 
article is helpful to you. See you next time.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://computer-ast.blogspot.com/feeds/1732965897817485534/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9020370651846000084/1732965897817485534' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/1732965897817485534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/1732965897817485534'/><link rel='alternate' type='text/html' href='http://computer-ast.blogspot.com/2013/03/what-is-new-in-windows-8.html' title='what is new in windows 8 ?'/><author><name>abdessamad</name><uri>http://www.blogger.com/profile/05406414270854404188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9020370651846000084.post-4891089580260895658</id><published>2013-03-22T19:03:00.003-07:00</published><updated>2013-03-22T19:03:57.085-07:00</updated><title type='text'>top 10 favorite Twitter tips and tricks</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://prochef360blog.com/wp-content/uploads/2011/03/twitter-tips.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;179&quot; src=&quot;http://prochef360blog.com/wp-content/uploads/2011/03/twitter-tips.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
Below 
 is a listing of our top 10 favorite Twitter tips and tricks. These tips will 
 help make your Twitter experience more enjoyable and can help increase your 
 followers.
 &lt;br /&gt;
&lt;span class=&quot;bb&quot;&gt;Customize&lt;/span&gt;&lt;br /&gt;

 &lt;ul&gt;
&lt;li&gt;Change your profile picture. Use a picture of yourself to make it 
seem more personalized if this is your personal Twitter account.&lt;/li&gt;
&lt;li&gt;Utilize as much of the 160-character limit Twitter 
 BIO space allows. Include keywords your followers or potential followers may be 
 searching for.&lt;/li&gt;
&lt;li&gt;Create your own background image. However, do not 
 make the image too much like an ad or sales pitch. The background image must be 
 less than 800k and we recommend a size of 1600x1200 for a large image or smaller 
 if you plan on tiling the image or just having it on the left-hand 
 side. Finally, keep in mind that smaller resolutions and 
 monitor sizes will hide much of the background.&lt;/li&gt;
&lt;/ul&gt;
&lt;span class=&quot;bb&quot;&gt;Third-party tools&lt;/span&gt;&lt;br /&gt;

 &lt;div class=&quot;tab&quot;&gt;
Take advantage of the hundreds of different third-party online 
 tools and services that enhance your Twitter experience. Below are a few of our 
 favorites.&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;&lt;a href=&quot;http://twitpic.com/&quot; target=&quot;_blank&quot;&gt;TwitPic&lt;/a&gt;&lt;/b&gt; - Take 
 advantage of TwitPic to post pictures on your tweets. If you want to post 
 pictures while away from the computer, use the &lt;b&gt;Twitterific&lt;/b&gt; app.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;a href=&quot;http://useqwitter.com/&quot; target=&quot;_blank&quot;&gt;Qwitter&lt;/a&gt;&lt;/b&gt; - Great 
 service that sends an e-mail any time someone unsubscribes from your Twitter 
 profile and mentions a possible Twitter post you made that may have caused them to leave.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;a href=&quot;http://manageflitter.com/&quot; target=&quot;_blank&quot;&gt;Manageflitter&lt;/a&gt;&lt;/b&gt; 
 - Fantastic site for managing your followers and getting an easy to read 
 overview of people not following you back, quiet users, and inactive users.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://wefollow.com/&quot; target=&quot;_blank&quot;&gt;WeFollow&lt;/a&gt;&lt;/strong&gt; 
 - Great website that allows you to add yourself to a listing of Twitter users by 
 tags you find interesting.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;a href=&quot;http://www.socialoomph.com/&quot;&gt;SocialOomph&lt;/a&gt;&lt;/b&gt; - Another great 
 service with a collection of free Twitter tools including the ability 
 to schedule when a tweets gets posted.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;a href=&quot;http://tweetbeat.com/&quot; target=&quot;_blank&quot;&gt;Tweetbeat&lt;/a&gt;&lt;/b&gt; - An 
 excellent site that takes the trending topics on Twitter and gives 
 you a clearer explanation of present and past trending topics.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;a href=&quot;http://tweetmeme.com/&quot; target=&quot;_blank&quot;&gt;TwitterMeme&lt;/a&gt;&lt;/b&gt; - 
  Another great location to find the hottest links on Twitter.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;a href=&quot;http://twittergrader.com/&quot;&gt;Twitter Grader&lt;/a&gt;&lt;/b&gt; - Great 
  service that grades any Twitter account and gives you additional details and 
  ranking information.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;a href=&quot;http://twitter.pbworks.com/w/page/1779726/Apps&quot; target=&quot;_blank&quot;&gt;
 Twitter Fan Wiki Apps&lt;/a&gt;&lt;/b&gt; - Finally, this wiki has a listing of several 
 hundred different Twitter applications and tools for users 
 wanting more.&lt;/li&gt;
&lt;/ul&gt;
&lt;span class=&quot;bb&quot;&gt;Use Twitter search&lt;/span&gt;&lt;br /&gt;

 &lt;div class=&quot;tab&quot;&gt;
Take full advantage of the Twitter search tool. Below are just a 
 few tips that can help improve your search capabilities on Twitter.&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Search for your website or blog URL and see if others are mentioning your 
 page.&lt;/li&gt;
&lt;li&gt;Search for anything near you by adding near:&quot;city state&quot;. For example, 
 typing &lt;b&gt;near:&quot;Salt lake city Utah&quot; club&lt;/b&gt; would return current tweets that 
 have happened in Salt Lake City, Utah with the keyword club in them.&lt;/li&gt;
&lt;li&gt;Find people who you may enjoy following by searching for keywords that interested 
 you.&lt;/li&gt;
&lt;li&gt;If you do not want tweets with links add &lt;b&gt;? -filter:links&lt;/b&gt; 
 at the end of your search query.&lt;/li&gt;
&lt;li&gt;Need more options, use the
 &lt;a href=&quot;http://search.twitter.com/advanced&quot;&gt;Advanced Twitter search&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Any time you get excellent results click the &quot;Save this search&quot; button to 
 save that search. These searches can then be found under &quot;Saved Searches&quot; on the 
 right-hand part of your profile on the old Twitter interface or under the 
 &quot;Searches&quot; tab next to your timeline on the new Twitter interface.&lt;/li&gt;
&lt;/ul&gt;
&lt;span class=&quot;bb&quot;&gt;Followers&lt;/span&gt;&lt;br /&gt;

 &lt;ul&gt;
&lt;li&gt;Engage followers.&lt;/li&gt;
&lt;li&gt;Do not follow too many people. No one is going to follow someone who is 
 following thousands of people but only has 10 followers.&lt;/li&gt;
&lt;li&gt;Retweet interesting posts.&lt;/li&gt;
&lt;li&gt;Retweet and participate in conversations with people with a lot of 
 followers.&lt;/li&gt;
&lt;li&gt;Realize it is impossible for anyone to read 
 every tweet.&lt;/li&gt;
&lt;li&gt;When first joining do not follow hundreds of people, doing this 
 may mark you as a bot.&lt;/li&gt;
&lt;/ul&gt;
&lt;span class=&quot;bb&quot;&gt;Create useful and interesting tweets&lt;/span&gt;&lt;br /&gt;

 &lt;ul&gt;
&lt;li&gt;Try making all your tweets informative, useful, or funny.&lt;/li&gt;
&lt;li&gt;Do not post mundane posts, e.g. eating a bowl of cereal.&lt;/li&gt;
&lt;li&gt;Add hastags to your tweets. For 
 example, if your tweet is about computers, consider adding #computer in the tweet.&lt;/li&gt;
&lt;li&gt;Tweet frequently. No one is going to follow someone they do not know who 
 has not tweeted in months. Try at the very least to tweet a few times a week or 
 daily if you can manage.&lt;/li&gt;
&lt;li&gt;Do not whine or complain. Everyone will unfollow anyone who constantly 
 whines or complains.&lt;/li&gt;
&lt;li&gt;Try making your valuable tweets during the times people will most likely see them.&lt;/li&gt;
&lt;li&gt;Keep some space available in your tweet in case someone 
 retweets your post.&lt;/li&gt;
&lt;li&gt;Use special characters in your tweets.&lt;/li&gt;
&lt;/ul&gt;
&lt;span class=&quot;bb&quot;&gt;Know the lingo&lt;/span&gt;&lt;br /&gt;

 &lt;div class=&quot;tab&quot;&gt;
Know the Twitter lingo, these are just a few 
 examples: @reply, 
 Direct Message (DM),
 Follower, 
 Hashtag, 
 Retweet (RT), Trending Topics,
 and
 Tweet. See the
 Twitter description 
 for a full listing of Twitter terms and Lingo and related terms.&lt;/div&gt;
&lt;span class=&quot;bb&quot;&gt;Follow the masters&lt;/span&gt;&lt;br /&gt;

 &lt;div class=&quot;tab&quot;&gt;
Following a few of the masters of Twitter and Social Networking 
 will give you an understanding of how to tweet better, posts to RT, and 
 inspiration for tweets of your own. Below are the top ten Twitters we recommend 
 following.&lt;/div&gt;
&lt;div class=&quot;tab bld&quot;&gt;
&lt;a href=&quot;http://twitter.com/#%21/GuyKawasaki&quot; target=&quot;_blank&quot;&gt;
 @GuyKawasaki&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://twitter.com/#%21/Scobleizer&quot; target=&quot;_blank&quot;&gt;
 @Scobleizer&lt;/a&gt;&lt;br /&gt;&lt;span class=&quot;screen-name screen-name-jeffbullas pill&quot;&gt;
 &lt;a href=&quot;http://twitter.com/#%21/jeffbullas&quot; target=&quot;_blank&quot;&gt;@jeffbullas&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
 &lt;span class=&quot;screen-name screen-name-briansolis pill&quot;&gt;
 &lt;a href=&quot;http://twitter.com/#%21/briansolis&quot; target=&quot;_blank&quot;&gt;@briansolis&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
 &lt;span class=&quot;screen-name screen-name-tonyrobbins pill&quot;&gt;
 &lt;a href=&quot;http://twitter.com/#%21/tonyrobbins&quot; target=&quot;_blank&quot;&gt;@tonyrobbins&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
 &lt;span class=&quot;screen-name screen-name-kevinrose pill&quot;&gt;
 &lt;a href=&quot;http://twitter.com/#%21/kevinrose&quot; target=&quot;_blank&quot;&gt;@kevinrose&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
 &lt;span class=&quot;screen-name screen-name-timoreilly pill&quot;&gt;
 &lt;a href=&quot;http://twitter.com/#%21/timoreilly&quot; target=&quot;_blank&quot;&gt;@timoreilly&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
 &lt;span class=&quot;screen-name screen-name-donttrythis pill&quot;&gt;
 &lt;a href=&quot;http://twitter.com/#%21/donttrythis&quot; target=&quot;_blank&quot;&gt;@donttrythis&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
 &lt;span class=&quot;screen-name screen-name-zappos pill&quot;&gt;
 &lt;a href=&quot;http://twitter.com/#%21/zappos&quot; target=&quot;_blank&quot;&gt;@zappos&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
 &lt;span class=&quot;screen-name screen-name-brainpicker pill&quot;&gt;
 &lt;a href=&quot;http://twitter.com/#%21/brainpicker&quot; target=&quot;_blank&quot;&gt;@brainpicker&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;&lt;a href=&quot;http://twitaholic.com/&quot; target=&quot;_blank&quot;&gt;Twitaholic&lt;/a&gt;&lt;/b&gt; - A 
 full listing of the top users on Twitter based on Followers. This is a terrific 
 service to find and follow the top users and possibly incorporate some of the ideas they are doing on their account.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;tab&quot;&gt;
&lt;span class=&quot;tips&quot;&gt;Tip:&lt;/span&gt; Many of the 
 first few hundred people are celebrities on Twitaholic, if they do not interest 
 you skip the first page.&lt;/div&gt;
&lt;span class=&quot;bb&quot;&gt;Create and use lists&lt;/span&gt;&lt;br /&gt;

 &lt;div class=&quot;tab&quot;&gt;
 &lt;img alt=&quot;Twitter list icon&quot; class=&quot;floatRight&quot; height=&quot;30&quot; src=&quot;http://www.computerhope.com/tips/images/list.jpg&quot; width=&quot;44&quot; /&gt;Twitter 
 lists are an excellent method of filtering filter through the people you follow. 
 To create a list, click the &lt;b&gt;Lists&lt;/b&gt; link and then &lt;b&gt;Create a list&lt;/b&gt;. 
 After creating a list visit the persons profile page you wish to add and click 
 the list icon, as shown in the picture to the right. Our
 &lt;a href=&quot;http://twitter.com/#%21/list/computerhope/computers-and-tech&quot;&gt;Computers 
 and Tech&lt;/a&gt; list is an example of a public list we created.&lt;/div&gt;
&lt;span class=&quot;bb&quot;&gt;Go Mobile&lt;/span&gt;&lt;br /&gt;

 &lt;div class=&quot;tab&quot;&gt;
Apple iPhones, Blackberry phones, Android phones, Windows phone 7 
 phones, and most of the other smart phones have Twitter 
 applications. Take full advantage of these applications. For users who do not have 
 smart phones Twitter also has extensive support for 
 SMS, which can send tweets over a text message.&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://computer-ast.blogspot.com/feeds/4891089580260895658/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9020370651846000084/4891089580260895658' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/4891089580260895658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/4891089580260895658'/><link rel='alternate' type='text/html' href='http://computer-ast.blogspot.com/2013/03/top-10-favorite-twitter-tips-and-tricks.html' title='top 10 favorite Twitter tips and tricks'/><author><name>abdessamad</name><uri>http://www.blogger.com/profile/05406414270854404188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9020370651846000084.post-750909966131900465</id><published>2013-03-22T18:51:00.000-07:00</published><updated>2013-03-22T18:51:58.113-07:00</updated><title type='text'>Display Twitter RSS feed using PHP</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Most of the bloggers(and developers), have at least once needed to 
display a twitter feed on their pages. There are a variety of ways of 
doing that, but today I`ll write about including a twitter feed in your 
blog using PHP. The code is pretty much straight-forward. The only thing
 you have to adjust is the amount of tweets you want shown and the 
username, which feed you`ll be displaying.
&lt;br /&gt;
&lt;table border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;div class=&quot;line number1 index0 alt2&quot;&gt;
1&lt;/div&gt;
&lt;div class=&quot;line number2 index1 alt1&quot;&gt;
2&lt;/div&gt;
&lt;div class=&quot;line number3 index2 alt2&quot;&gt;
3&lt;/div&gt;
&lt;div class=&quot;line number4 index3 alt1&quot;&gt;
4&lt;/div&gt;
&lt;div class=&quot;line number5 index4 alt2&quot;&gt;
5&lt;/div&gt;
&lt;div class=&quot;line number6 index5 alt1&quot;&gt;
6&lt;/div&gt;
&lt;div class=&quot;line number7 index6 alt2&quot;&gt;
7&lt;/div&gt;
&lt;div class=&quot;line number8 index7 alt1&quot;&gt;
8&lt;/div&gt;
&lt;div class=&quot;line number9 index8 alt2&quot;&gt;
9&lt;/div&gt;
&lt;div class=&quot;line number10 index9 alt1&quot;&gt;
10&lt;/div&gt;
&lt;div class=&quot;line number11 index10 alt2&quot;&gt;
11&lt;/div&gt;
&lt;div class=&quot;line number12 index11 alt1&quot;&gt;
12&lt;/div&gt;
&lt;div class=&quot;line number13 index12 alt2&quot;&gt;
13&lt;/div&gt;
&lt;div class=&quot;line number14 index13 alt1&quot;&gt;
14&lt;/div&gt;
&lt;div class=&quot;line number15 index14 alt2&quot;&gt;
15&lt;/div&gt;
&lt;div class=&quot;line number16 index15 alt1&quot;&gt;
16&lt;/div&gt;
&lt;div class=&quot;line number17 index16 alt2&quot;&gt;
17&lt;/div&gt;
&lt;div class=&quot;line number18 index17 alt1&quot;&gt;
18&lt;/div&gt;
&lt;div class=&quot;line number19 index18 alt2&quot;&gt;
19&lt;/div&gt;
&lt;div class=&quot;line number20 index19 alt1&quot;&gt;
20&lt;/div&gt;
&lt;div class=&quot;line number21 index20 alt2&quot;&gt;
21&lt;/div&gt;
&lt;div class=&quot;line number22 index21 alt1&quot;&gt;
22&lt;/div&gt;
&lt;div class=&quot;line number23 index22 alt2&quot;&gt;
23&lt;/div&gt;
&lt;div class=&quot;line number24 index23 alt1&quot;&gt;
24&lt;/div&gt;
&lt;div class=&quot;line number25 index24 alt2&quot;&gt;
25&lt;/div&gt;
&lt;div class=&quot;line number26 index25 alt1&quot;&gt;
26&lt;/div&gt;
&lt;div class=&quot;line number27 index26 alt2&quot;&gt;
27&lt;/div&gt;
&lt;div class=&quot;line number28 index27 alt1&quot;&gt;
28&lt;/div&gt;
&lt;div class=&quot;line number29 index28 alt2&quot;&gt;
29&lt;/div&gt;
&lt;div class=&quot;line number30 index29 alt1&quot;&gt;
30&lt;/div&gt;
&lt;div class=&quot;line number31 index30 alt2&quot;&gt;
31&lt;/div&gt;
&lt;div class=&quot;line number32 index31 alt1&quot;&gt;
32&lt;/div&gt;
&lt;div class=&quot;line number33 index32 alt2&quot;&gt;
33&lt;/div&gt;
&lt;div class=&quot;line number34 index33 alt1&quot;&gt;
34&lt;/div&gt;
&lt;div class=&quot;line number35 index34 alt2&quot;&gt;
35&lt;/div&gt;
&lt;div class=&quot;line number36 index35 alt1&quot;&gt;
36&lt;/div&gt;
&lt;div class=&quot;line number37 index36 alt2&quot;&gt;
37&lt;/div&gt;
&lt;div class=&quot;line number38 index37 alt1&quot;&gt;
38&lt;/div&gt;
&lt;div class=&quot;line number39 index38 alt2&quot;&gt;
39&lt;/div&gt;
&lt;div class=&quot;line number40 index39 alt1&quot;&gt;
40&lt;/div&gt;
&lt;div class=&quot;line number41 index40 alt2&quot;&gt;
41&lt;/div&gt;
&lt;div class=&quot;line number42 index41 alt1&quot;&gt;
42&lt;/div&gt;
&lt;div class=&quot;line number43 index42 alt2&quot;&gt;
43&lt;/div&gt;
&lt;div class=&quot;line number44 index43 alt1&quot;&gt;
44&lt;/div&gt;
&lt;div class=&quot;line number45 index44 alt2&quot;&gt;
45&lt;/div&gt;
&lt;div class=&quot;line number46 index45 alt1&quot;&gt;
46&lt;/div&gt;
&lt;div class=&quot;line number47 index46 alt2&quot;&gt;
47&lt;/div&gt;
&lt;div class=&quot;line number48 index47 alt1&quot;&gt;
48&lt;/div&gt;
&lt;div class=&quot;line number49 index48 alt2&quot;&gt;
49&lt;/div&gt;
&lt;div class=&quot;line number50 index49 alt1&quot;&gt;
50&lt;/div&gt;
&lt;div class=&quot;line number51 index50 alt2&quot;&gt;
51&lt;/div&gt;
&lt;div class=&quot;line number52 index51 alt1&quot;&gt;
52&lt;/div&gt;
&lt;div class=&quot;line number53 index52 alt2&quot;&gt;
53&lt;/div&gt;
&lt;div class=&quot;line number54 index53 alt1&quot;&gt;
54&lt;/div&gt;
&lt;div class=&quot;line number55 index54 alt2&quot;&gt;
55&lt;/div&gt;
&lt;/td&gt;&lt;td class=&quot;code&quot; style=&quot;background-color: yellow;&quot;&gt;&lt;div class=&quot;container&quot;&gt;
&lt;div class=&quot;line number1 index0 alt2&quot;&gt;
&lt;code class=&quot;php plain&quot;&gt;&amp;lt;?php&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number2 index1 alt1&quot;&gt;
&lt;code class=&quot;php variable&quot;&gt;$twitterUsername&lt;/code&gt; &lt;code class=&quot;php plain&quot;&gt;= &lt;/code&gt;&lt;code class=&quot;php string&quot;&gt;&quot;earthquake_jp&quot;&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number3 index2 alt2&quot;&gt;
&lt;code class=&quot;php variable&quot;&gt;$amountToShow&lt;/code&gt; &lt;code class=&quot;php plain&quot;&gt;= 5;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number4 index3 alt1&quot;&gt;
&lt;code class=&quot;php variable&quot;&gt;$twitterRssFeedUrl&lt;/code&gt; &lt;code class=&quot;php plain&quot;&gt;= &lt;/code&gt;&lt;code class=&quot;php string&quot;&gt;&#39;&lt;a href=&quot;https://api.twitter.com/1/statuses/user_timeline.rss?screen_name=&quot;&gt;https://api.twitter.com/1/statuses/user_timeline.rss?screen_name=&lt;/a&gt;&#39;&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;.&lt;/code&gt;&lt;code class=&quot;php variable&quot;&gt;$twitterUsername&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;.&lt;/code&gt;&lt;code class=&quot;php string&quot;&gt;&#39;&amp;amp;count=&#39;&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;.&lt;/code&gt;&lt;code class=&quot;php variable&quot;&gt;$amountToShow&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number5 index4 alt2&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;line number6 index5 alt1&quot;&gt;
&lt;code class=&quot;php variable&quot;&gt;$twitterPosts&lt;/code&gt; &lt;code class=&quot;php plain&quot;&gt;= false;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number7 index6 alt2&quot;&gt;
&lt;code class=&quot;php variable&quot;&gt;$xml&lt;/code&gt; &lt;code class=&quot;php plain&quot;&gt;= @simplexml_load_file(&lt;/code&gt;&lt;code class=&quot;php variable&quot;&gt;$twitterRssFeedUrl&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;);&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number8 index7 alt1&quot;&gt;
&lt;code class=&quot;php keyword&quot;&gt;if&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;(&lt;/code&gt;&lt;code class=&quot;php functions&quot;&gt;is_object&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;(&lt;/code&gt;&lt;code class=&quot;php variable&quot;&gt;$xml&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;)){&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number9 index8 alt2&quot;&gt;
&lt;code class=&quot;php keyword&quot;&gt;foreach&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;(&lt;/code&gt;&lt;code class=&quot;php variable&quot;&gt;$xml&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;-&amp;gt;channel-&amp;gt;item &lt;/code&gt;&lt;code class=&quot;php keyword&quot;&gt;as&lt;/code&gt; &lt;code class=&quot;php variable&quot;&gt;$twit&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;){&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number10 index9 alt1&quot;&gt;
&lt;code class=&quot;php keyword&quot;&gt;if&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;(&lt;/code&gt;&lt;code class=&quot;php functions&quot;&gt;is_array&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;(&lt;/code&gt;&lt;code class=&quot;php variable&quot;&gt;$twitterPosts&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;) &amp;amp;&amp;amp; &lt;/code&gt;&lt;code class=&quot;php functions&quot;&gt;count&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;(&lt;/code&gt;&lt;code class=&quot;php variable&quot;&gt;$twitterPosts&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;)==&lt;/code&gt;&lt;code class=&quot;php variable&quot;&gt;$amountToShow&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;){&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number11 index10 alt2&quot;&gt;
&lt;code class=&quot;php keyword&quot;&gt;break&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number12 index11 alt1&quot;&gt;
&lt;code class=&quot;php plain&quot;&gt;}&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number13 index12 alt2&quot;&gt;
&lt;code class=&quot;php variable&quot;&gt;$d&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;[&lt;/code&gt;&lt;code class=&quot;php string&quot;&gt;&#39;title&#39;&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;] = &lt;/code&gt;&lt;code class=&quot;php functions&quot;&gt;stripslashes&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;(htmlentities(&lt;/code&gt;&lt;code class=&quot;php variable&quot;&gt;$twit&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;-&amp;gt;title,ENT_QUOTES,&lt;/code&gt;&lt;code class=&quot;php string&quot;&gt;&#39;UTF-8&#39;&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;));&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number14 index13 alt1&quot;&gt;
&lt;code class=&quot;php variable&quot;&gt;$description&lt;/code&gt; &lt;code class=&quot;php plain&quot;&gt;= &lt;/code&gt;&lt;code class=&quot;php functions&quot;&gt;stripslashes&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;(htmlentities(&lt;/code&gt;&lt;code class=&quot;php variable&quot;&gt;$twit&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;-&amp;gt;description,ENT_QUOTES,&lt;/code&gt;&lt;code class=&quot;php string&quot;&gt;&#39;UTF-8&#39;&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;));&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number15 index14 alt2&quot;&gt;
&lt;code class=&quot;php keyword&quot;&gt;if&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;(&lt;/code&gt;&lt;code class=&quot;php functions&quot;&gt;strtolower&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;(&lt;/code&gt;&lt;code class=&quot;php functions&quot;&gt;substr&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;(&lt;/code&gt;&lt;code class=&quot;php variable&quot;&gt;$description&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;,0,&lt;/code&gt;&lt;code class=&quot;php functions&quot;&gt;strlen&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;(&lt;/code&gt;&lt;code class=&quot;php variable&quot;&gt;$twitterUsername&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;))) == &lt;/code&gt;&lt;code class=&quot;php functions&quot;&gt;strtolower&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;(&lt;/code&gt;&lt;code class=&quot;php variable&quot;&gt;$twitterUsername&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;)){&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number16 index15 alt1&quot;&gt;
&lt;code class=&quot;php variable&quot;&gt;$description&lt;/code&gt; &lt;code class=&quot;php plain&quot;&gt;= &lt;/code&gt;&lt;code class=&quot;php functions&quot;&gt;substr&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;(&lt;/code&gt;&lt;code class=&quot;php variable&quot;&gt;$description&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;,&lt;/code&gt;&lt;code class=&quot;php functions&quot;&gt;strlen&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;(&lt;/code&gt;&lt;code class=&quot;php variable&quot;&gt;$twitterUsername&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;)+1);&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number17 index16 alt2&quot;&gt;
&lt;code class=&quot;php plain&quot;&gt;}&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number18 index17 alt1&quot;&gt;
&lt;code class=&quot;php variable&quot;&gt;$d&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;[&lt;/code&gt;&lt;code class=&quot;php string&quot;&gt;&#39;description&#39;&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;] = &lt;/code&gt;&lt;code class=&quot;php variable&quot;&gt;$description&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number19 index18 alt2&quot;&gt;
&lt;code class=&quot;php variable&quot;&gt;$d&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;[&lt;/code&gt;&lt;code class=&quot;php string&quot;&gt;&#39;pubdate&#39;&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;] = &lt;/code&gt;&lt;code class=&quot;php functions&quot;&gt;strtotime&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;(&lt;/code&gt;&lt;code class=&quot;php variable&quot;&gt;$twit&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;-&amp;gt;pubDate);&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number20 index19 alt1&quot;&gt;
&lt;code class=&quot;php variable&quot;&gt;$d&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;[&lt;/code&gt;&lt;code class=&quot;php string&quot;&gt;&#39;guid&#39;&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;] = &lt;/code&gt;&lt;code class=&quot;php functions&quot;&gt;stripslashes&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;(htmlentities(&lt;/code&gt;&lt;code class=&quot;php variable&quot;&gt;$twit&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;-&amp;gt;guid,ENT_QUOTES,&lt;/code&gt;&lt;code class=&quot;php string&quot;&gt;&#39;UTF-8&#39;&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;));&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number21 index20 alt2&quot;&gt;
&lt;code class=&quot;php variable&quot;&gt;$d&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;[&lt;/code&gt;&lt;code class=&quot;php string&quot;&gt;&#39;link&#39;&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;] = &lt;/code&gt;&lt;code class=&quot;php functions&quot;&gt;stripslashes&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;(htmlentities(&lt;/code&gt;&lt;code class=&quot;php variable&quot;&gt;$twit&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;-&amp;gt;link,ENT_QUOTES,&lt;/code&gt;&lt;code class=&quot;php string&quot;&gt;&#39;UTF-8&#39;&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;));&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number22 index21 alt1&quot;&gt;
&lt;code class=&quot;php variable&quot;&gt;$twitterPosts&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;[]=&lt;/code&gt;&lt;code class=&quot;php variable&quot;&gt;$d&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number23 index22 alt2&quot;&gt;
&lt;code class=&quot;php plain&quot;&gt;}&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number24 index23 alt1&quot;&gt;
&lt;code class=&quot;php plain&quot;&gt;}&lt;/code&gt;&lt;code class=&quot;php keyword&quot;&gt;else&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;{&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number25 index24 alt2&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;line number26 index25 alt1&quot;&gt;
&lt;code class=&quot;php keyword&quot;&gt;die&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;(&lt;/code&gt;&lt;code class=&quot;php string&quot;&gt;&#39;Can`t fetch the feed you requested&#39;&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;);&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number27 index26 alt2&quot;&gt;
&lt;code class=&quot;php plain&quot;&gt;}&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number28 index27 alt1&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;line number29 index28 alt2&quot;&gt;
&lt;code class=&quot;php plain&quot;&gt;?&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number30 index29 alt1&quot;&gt;
&lt;code class=&quot;php plain&quot;&gt;&amp;lt;style&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number31 index30 alt2&quot;&gt;
&lt;code class=&quot;php plain&quot;&gt;a, a:link, a:visited, a:hover {&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number32 index31 alt1&quot;&gt;
&lt;code class=&quot;php spaces&quot;&gt;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;color:#000;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number33 index32 alt2&quot;&gt;
&lt;code class=&quot;php plain&quot;&gt;}&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number34 index33 alt1&quot;&gt;
&lt;code class=&quot;php plain&quot;&gt;.twitter {&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number35 index34 alt2&quot;&gt;
&lt;code class=&quot;php spaces&quot;&gt;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;display:table-cell; vertical-align:middle;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number36 index35 alt1&quot;&gt;
&lt;code class=&quot;php spaces&quot;&gt;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;float:left;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number37 index36 alt2&quot;&gt;
&lt;code class=&quot;php spaces&quot;&gt;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;width:250px;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number38 index37 alt1&quot;&gt;
&lt;code class=&quot;php plain&quot;&gt;}&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number39 index38 alt2&quot;&gt;
&lt;code class=&quot;php plain&quot;&gt;&amp;lt;/style&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number40 index39 alt1&quot;&gt;
&lt;code class=&quot;php plain&quot;&gt;&amp;lt;!-- Insert your html here --&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number41 index40 alt2&quot;&gt;
&lt;code class=&quot;php plain&quot;&gt;&amp;lt;div &lt;/code&gt;&lt;code class=&quot;php keyword&quot;&gt;class&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;=&lt;/code&gt;&lt;code class=&quot;php string&quot;&gt;&quot;twitter&quot;&lt;/code&gt; &lt;code class=&quot;php plain&quot;&gt;id=&lt;/code&gt;&lt;code class=&quot;php string&quot;&gt;&quot;jstweets&quot;&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number42 index41 alt1&quot;&gt;
&lt;code class=&quot;php spaces&quot;&gt;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;&amp;lt;?php&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number43 index42 alt2&quot;&gt;
&lt;code class=&quot;php spaces&quot;&gt;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;php keyword&quot;&gt;if&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;(&lt;/code&gt;&lt;code class=&quot;php functions&quot;&gt;is_array&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;(&lt;/code&gt;&lt;code class=&quot;php variable&quot;&gt;$twitterPosts&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;)){&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number44 index43 alt1&quot;&gt;
&lt;code class=&quot;php spaces&quot;&gt;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;php functions&quot;&gt;echo&lt;/code&gt; &lt;code class=&quot;php string&quot;&gt;&#39;&#39;&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number45 index44 alt2&quot;&gt;
&lt;code class=&quot;php spaces&quot;&gt;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;php keyword&quot;&gt;foreach&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;(&lt;/code&gt;&lt;code class=&quot;php variable&quot;&gt;$twitterPosts&lt;/code&gt; &lt;code class=&quot;php keyword&quot;&gt;as&lt;/code&gt; &lt;code class=&quot;php variable&quot;&gt;$post&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;){&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number46 index45 alt1&quot;&gt;
&lt;code class=&quot;php variable&quot;&gt;$data&lt;/code&gt; &lt;code class=&quot;php plain&quot;&gt;= &lt;/code&gt;&lt;code class=&quot;php variable&quot;&gt;$post&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;[&lt;/code&gt;&lt;code class=&quot;php string&quot;&gt;&#39;description&#39;&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;];&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number47 index46 alt2&quot;&gt;
&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;line number48 index47 alt1&quot;&gt;
&lt;code class=&quot;php functions&quot;&gt;echo&lt;/code&gt; &lt;code class=&quot;php string&quot;&gt;&#39;&amp;lt;a href=&quot;{$post[&#39;&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;link&lt;/code&gt;&lt;code class=&quot;php string&quot;&gt;&#39;]}&quot;&amp;gt;&#39;&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;.&lt;/code&gt;&lt;code class=&quot;php variable&quot;&gt;$data&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;.&lt;/code&gt;&lt;code class=&quot;php string&quot;&gt;&quot;&amp;lt;br &amp;gt;Updated on: &quot;&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;.&lt;/code&gt;&lt;code class=&quot;php functions&quot;&gt;date&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;(&lt;/code&gt;&lt;code class=&quot;php string&quot;&gt;&#39;l jS of F Y h:i:s A&#39;&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;,&lt;/code&gt;&lt;code class=&quot;php variable&quot;&gt;$post&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;[&lt;/code&gt;&lt;code class=&quot;php string&quot;&gt;&#39;pubdate&#39;&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;]).&lt;/code&gt;&lt;code class=&quot;php string&quot;&gt;&#39;&amp;lt;/a&amp;gt;&amp;lt;br &amp;gt;&amp;lt;br &amp;gt;&#39;&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number49 index48 alt2&quot;&gt;
&lt;code class=&quot;php spaces&quot;&gt;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;}&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number50 index49 alt1&quot;&gt;
&lt;code class=&quot;php spaces&quot;&gt;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;php functions&quot;&gt;echo&lt;/code&gt; &lt;code class=&quot;php string&quot;&gt;&#39;&#39;&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number51 index50 alt2&quot;&gt;
&lt;code class=&quot;php spaces&quot;&gt;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;}&lt;/code&gt;&lt;code class=&quot;php keyword&quot;&gt;else&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;{&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number52 index51 alt1&quot;&gt;
&lt;code class=&quot;php spaces&quot;&gt;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;php functions&quot;&gt;echo&lt;/code&gt; &lt;code class=&quot;php string&quot;&gt;&#39;No Twitter posts have been made&#39;&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;;&lt;/code&gt;&lt;code class=&quot;php comments&quot;&gt;//Error message&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number53 index52 alt2&quot;&gt;
&lt;code class=&quot;php spaces&quot;&gt;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;}&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number54 index53 alt1&quot;&gt;
&lt;code class=&quot;php spaces&quot;&gt;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;php plain&quot;&gt;?&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number55 index54 alt2&quot;&gt;
&lt;code class=&quot;php plain&quot;&gt;&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://computer-ast.blogspot.com/feeds/750909966131900465/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9020370651846000084/750909966131900465' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/750909966131900465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/750909966131900465'/><link rel='alternate' type='text/html' href='http://computer-ast.blogspot.com/2013/03/display-twitter-rss-feed-using-php.html' title='Display Twitter RSS feed using PHP'/><author><name>abdessamad</name><uri>http://www.blogger.com/profile/05406414270854404188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9020370651846000084.post-843632397174233081</id><published>2013-02-18T16:07:00.001-08:00</published><updated>2013-02-18T16:07:51.960-08:00</updated><title type='text'>Swing: User Interfaces in Java</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div id=&quot;irc_mimg&quot;&gt;
&lt;/div&gt;
&lt;div id=&quot;irc_mimg&quot; style=&quot;text-align: center;&quot;&gt;
&lt;a data-ved=&quot;0CAgQjRwwAA&quot; href=&quot;http://www.google.com/url?sa=i&amp;amp;source=images&amp;amp;cd=&amp;amp;docid=q6QUYUVU8IYLFM&amp;amp;tbnid=6ZfaV96Wd9qbjM:&amp;amp;ved=0CAgQjRwwAA&amp;amp;url=http%3A%2F%2Ffr.wikipedia.org%2Fwiki%2FFichier%3AJava_Logo.svg&amp;amp;ei=OMIiUaSUAcakrQHZy4DoBg&amp;amp;psig=AFQjCNEvwtDWHH0FizoMeoEoaEhDdt99HQ&amp;amp;ust=1361318840073005&quot; id=&quot;irc_mil&quot; style=&quot;border: 0px none;&quot;&gt;&lt;img height=&quot;579&quot; id=&quot;irc_mi&quot; src=&quot;http://upload.wikimedia.org/wikipedia/fr/2/2e/Java_Logo.svg&quot; style=&quot;margin-top: 0px;&quot; width=&quot;311&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;h1&gt;
Swing: User Interfaces in Java&lt;/h1&gt;
Java has a fairly rich framework for creating user interfaces &quot;out of the box&quot;. That
framework is called &lt;b&gt;Swing&lt;/b&gt;. Before learning Swing, it&#39;s worth making sure
that you really understand the following:&lt;br /&gt;


&lt;ul&gt;
&lt;li&gt; the basic concepts of object-oriented programming (e.g. the notion
of classes, object creation, inheritance);
&lt;/li&gt;
&lt;li&gt; basic Java syntax: how to call methods, how to create loops etc;
&lt;/li&gt;
&lt;li&gt; &lt;b&gt;interfaces&lt;/b&gt;, in the programming sense.
&lt;/li&gt;
&lt;/ul&gt;
Why am I being so insistent? Essentially, because the Swing framework
is highly object-oriented. It contains various classes that extend one another, and
the notion of extending a base class to add required functionality to that class is
key to user interface programming in Java (and indeed in other languages).
Another key part of Swing programming is the notion of &lt;b&gt;listeners&lt;/b&gt;:
classes or components that &quot;listen out for&quot; a particular event happening such as a button
being clicked. And listeners are generally implemented as Java &lt;i&gt;interfaces&lt;/i&gt; (in the
programming sense), so they&#39;re also an important notion to understand. We&#39;ll give
a brief review of interfaces as we go along, but it helps if you&#39;ve come
across them before.
&lt;br /&gt;




&lt;div&gt;
&lt;div style=&quot;float: right; width: 404px;&quot;&gt;
&lt;img border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://ad.linksynergy.com/fs-bin/show?id=6EfLWVV23K8&amp;amp;bids=145238.168359&amp;amp;type=2&amp;amp;subid=0&quot; width=&quot;1&quot; /&gt;
&lt;/div&gt;
&lt;h2&gt;
Introduction to the Swing and user interface packages&lt;/h2&gt;
Many of the Swing classes representing windows, lists, buttons etc live
in the &lt;tt&gt;javax.swing&lt;/tt&gt; package and subpackages. The names of most Swing classes
start with the letter &lt;b&gt;J&lt;/b&gt;: &lt;b&gt;JFrame&lt;/b&gt;, &lt;b&gt;JPanel&lt;/b&gt;, &lt;b&gt;JButton&lt;/b&gt;,
&lt;b&gt;JList&lt;/b&gt; etc. In general, if you&#39;re looking for the class that represents some
visual component in Swing, its name will start with &lt;b&gt;J&lt;/b&gt;.
&lt;br /&gt;


A few classes also live in the &lt;tt&gt;java.awt&lt;/tt&gt; package and subpackages.
AWT stands for &lt;b&gt;Abstract Window Toolkit&lt;/b&gt; and was in some sense the precursor to
Swing. AWT provides a bare-bones way of creating a user interface, based
directly on &quot;native&quot; user interface components of the operating system. Swing actually
builds on AWT, and some AWT classes are still used directly in Swing programming. For
example, many of the classes responsible for laying out user interface components
lie inside the &lt;tt&gt;java.awt&lt;/tt&gt; package, and many classes to do with handling
events live in &lt;tt&gt;java.awt.event&lt;/tt&gt;; the &lt;tt&gt;Graphics&lt;/tt&gt; interface, which represents
a graphics context and is key to rendering graphics inside a window or component,
is also originally part of the AWT package.
&lt;br /&gt;


&lt;/div&gt;
&lt;h2&gt;
Example: a first Swing application&lt;/h2&gt;
By way of a vary basic example which we will extent on the next page,
the following application displays a window:
&lt;br /&gt;


&lt;div class=&quot;codefragment&quot;&gt;
&lt;pre&gt;import javax.swing.JFrame;

public class MyApp {
  public static void main(String[] args) {
    // Actually slightly incorrect from a threading point of view
    &lt;b&gt;JFrame frame = new JFrame(&quot;My Swing app&quot;);&lt;/b&gt;
    frame.setSize(500, 500);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    &lt;b&gt;frame.setVisible(true);&lt;/b&gt;
  }
}
&lt;/pre&gt;
&lt;/div&gt;
The
lines that arguably do most of the work are the ones in bold which construct
the window, specifically an instance of &lt;b&gt;JFrame&lt;/b&gt;, and then make it visible.
We mentioned that user interface components are generally represented by classes
inside the &lt;tt&gt;javax.swing&lt;/tt&gt; package with names beginning with &lt;b&gt;J&lt;/b&gt;. In
this case, a &quot;window with decorations&quot; is strictly speaking called a &lt;i&gt;frame&lt;/i&gt;,
and represented by the &lt;b&gt;JFrame&lt;/b&gt; class. So creating a window means creating
an instance of &lt;b&gt;JFrame&lt;/b&gt;. We construct one just like most Java objects: by
calling its constructor. Note that, as with many constructors, most allow us to
specify some common parameters: in this case, the title of the window.
&lt;br /&gt;


The call to set the size of the window is hopefully self-explanatory once you see it;
let us just comment for now that in general, you need to think about the size (and
potentially layout) of all windows/components when you&#39;re programming with Swing.
The call to &lt;tt&gt;setDefaultCloseOperation()&lt;/tt&gt; is a shortcut we can use in the
very simple case where we want our application to exit when the window is closed: Swing
will dutifully call &lt;tt&gt;System.exit()&lt;/tt&gt; for us. We&#39;ll see later that we can
customise what happens when a window is closed.
&lt;br /&gt;


&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://computer-ast.blogspot.com/feeds/843632397174233081/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9020370651846000084/843632397174233081' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/843632397174233081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/843632397174233081'/><link rel='alternate' type='text/html' href='http://computer-ast.blogspot.com/2013/02/swing-user-interfaces-in-java.html' title='Swing: User Interfaces in Java'/><author><name>abdessamad</name><uri>http://www.blogger.com/profile/05406414270854404188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9020370651846000084.post-438530023060907787</id><published>2013-01-31T14:04:00.002-08:00</published><updated>2013-01-31T14:04:41.131-08:00</updated><title type='text'>Understanding HTTP Web Proxy Caching</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&amp;nbsp;&lt;img height=&quot;300&quot; id=&quot;il_fi&quot; src=&quot;http://www.journaldugeek.com/files/2013/01/http.jpg&quot; style=&quot;padding-bottom: 8px; padding-right: 8px; padding-top: 8px;&quot; width=&quot;400&quot; /&gt;&lt;/div&gt;
&lt;br /&gt;
Internet users direct their requests to web servers all over the Internet. 
A caching server must act as a &lt;strong&gt;web proxy server&lt;/strong&gt; so it can serve those requests. 
After a web proxy server receives requests for web objects, it either serves 
the requests or forwards them to the &lt;strong&gt;origin server&lt;/strong&gt; (the web server that 
contains the original copy of the requested information). The Traffic Server 
proxy supports &lt;strong&gt;explicit proxy caching&lt;/strong&gt;, in which the user&#39;s client software 
must be configured to send requests directly to the Traffic Server proxy. The 
following overview illustrates how Traffic Server serves a request.&lt;br /&gt;

&lt;ol&gt;
&lt;li&gt;
Traffic Server receives a client request for a web object. &lt;br /&gt;

&lt;/li&gt;
&lt;li&gt;
Using the object address, Traffic Server tries to locate the requested 
object in its object database (&lt;strong&gt;cache&lt;/strong&gt;). &lt;br /&gt;

&lt;/li&gt;
&lt;li&gt;
If the object is in the cache, then Traffic Server checks to see 
if the object is fresh enough to serve. If it is fresh, then Traffic Server 
serves it to the client as a &lt;strong&gt;cache hit&lt;/strong&gt; (see the figure below).&lt;br /&gt;

&lt;img alt=&quot;A cache hit&quot; src=&quot;http://trafficserver.apache.org/images/admin/cache_hit.jpg&quot; /&gt;&lt;br /&gt;

&lt;/li&gt;
&lt;li&gt;
If the data in the cache is stale, then Traffic Server connects 
to the origin server and checks if the object is still fresh (a &lt;strong&gt;revalidation&lt;/strong&gt;). 
If it is, then Traffic Server immediately sends the cached copy to the client. &lt;br /&gt;

&lt;/li&gt;
&lt;li&gt;
If the object is not in the cache (a &lt;strong&gt;cache miss&lt;/strong&gt;) or if the server 
indicates the cached copy is no longer valid, then Traffic Server obtains the 
object from the origin server. The object is then simultaneously streamed to 
the client and the Traffic Server local cache (see the figure below). Subsequent 
requests for the object can be served faster because the object is retrieved 
directly from cache.&lt;br /&gt;

&lt;img alt=&quot;A cache miss&quot; src=&quot;http://trafficserver.apache.org/images/admin/cache_miss.jpg&quot; /&gt;&lt;br /&gt;

&lt;/li&gt;
&lt;/ol&gt;
Caching is typically more complex than the preceding overview suggests. In 
particular, the overview does not discuss how Traffic Server ensures freshness, 
serves correct HTTP alternates, and treats requests for objects that cannot/should 
not be cached. The following sections discuss these issues in greater detail. &lt;br /&gt;

&lt;h1 id=&quot;EnsuringCachedObjectFreshness&quot;&gt;
Ensuring Cached Object Freshness&lt;/h1&gt;
When Traffic Server receives a request for a web object, it first tries to 
locate the requested object in its cache. If the object is in cache, then Traffic 
Server checks to see if the object is fresh enough to serve. For HTTP objects, 
Traffic Server supports optional author-specified expiration dates. Traffic 
Server adheres to these expiration dates; otherwise, it picks an expiration 
date based on how frequently the object is changing and on administrator-chosen 
freshness guidelines. Objects can also be revalidated by checking with the 
origin server to see if an object is still fresh. &lt;br /&gt;

&lt;h2 id=&quot;HTTPObjectFreshness&quot;&gt;
HTTP Object Freshness&lt;/h2&gt;
Traffic Server determines whether an HTTP object in the cache is fresh by: &lt;br /&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Checking the &lt;code&gt;Expires&lt;/code&gt; or &lt;code&gt;max-age&lt;/code&gt; header&lt;/strong&gt;&lt;br /&gt;

Some HTTP objects contain &lt;code&gt;Expires&lt;/code&gt; headers or &lt;code&gt;max-age&lt;/code&gt; headers that
explicitly define how long the object can be cached. Traffic Server
compares the current time with the expiration time to determine if the
object is still fresh.&lt;br /&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Checking the &lt;code&gt;Last-Modified&lt;/code&gt; / &lt;code&gt;Date&lt;/code&gt; header&lt;/strong&gt;&lt;br /&gt;

If an HTTP object has no &lt;code&gt;Expires&lt;/code&gt; header or &lt;code&gt;max-age&lt;/code&gt; header, then
Traffic Server can calculate a freshness limit using the following formula: &lt;br /&gt;
&lt;br /&gt;

&lt;div class=&quot;codehilite&quot;&gt;
&lt;pre&gt;&lt;span class=&quot;n&quot;&gt;freshness_limit&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;date&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;last_modified&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;mf&quot;&gt;0.10&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
where &lt;em&gt;&lt;code&gt;date&lt;/code&gt;&lt;/em&gt; is the date in the object&#39;s server response header and &lt;em&gt;&lt;code&gt;last_modified&lt;/code&gt;&lt;/em&gt;
is the date in the &lt;code&gt;Last-Modified&lt;/code&gt; header. If there is no &lt;code&gt;Last-Modified&lt;/code&gt; header, then
Traffic Server uses the date the object was written to cache. The value &lt;code&gt;0.10&lt;/code&gt;
(10 percent) can be increased or reduced to better suit your needs (refer to
&lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/http-proxy-caching/index.en.html#ModifyingAgingFactorFreshnessComputations&quot;&gt;Modifying the Aging Factor for Freshness Computations&lt;/a&gt;).&lt;br /&gt;
&lt;br /&gt;

The computed freshness limit is bound by a minimum and maximum value - refer to
&lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/http-proxy-caching/index.en.html#SettingAbsoluteFreshnessLimit&quot;&gt;Setting an Absolute Freshness Limit&lt;/a&gt; for more information.&lt;br /&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Checking the absolute freshness limit&lt;/strong&gt;&lt;br /&gt;

For HTTP objects that do not have &lt;code&gt;Expires&lt;/code&gt; headers or do not have both &lt;code&gt;Last-Modified&lt;/code&gt;
and &lt;code&gt;Date&lt;/code&gt; headers, Traffic Server uses a maximum and minimum freshness limit
(refer to &lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/http-proxy-caching/index.en.html#SettingAbsoluteFreshnessLimit&quot;&gt;Setting an Absolute Freshness Limit&lt;/a&gt;).&lt;br /&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Checking revalidate rules in the &lt;code&gt;cache.config&lt;/code&gt; file&lt;/strong&gt;&lt;br /&gt;

Revalidate rules apply freshness limits to specific HTTP objects. You can set freshness
limits for objects originating from particular domains or IP addresses, objects with URLs
that contain specified regular expressions, objects requested by particular clients,
and so on (refer to &lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/cache.config&quot;&gt;&lt;code&gt;cache.config&lt;/code&gt;&lt;/a&gt;).&lt;br /&gt;

&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;ModifyingAgingFactorFreshnessComputations&quot;&gt;
Modifying Aging Factor for Freshness Computations&lt;/h2&gt;
If an object does not contain any expiration information, then Traffic Server 
can estimate its freshness from the &lt;code&gt;Last-Modified&lt;/code&gt; and &lt;code&gt;Date&lt;/code&gt; headers. By 
default, Traffic Server stores an object for 10% of the time that elapsed since 
it last changed. You can increase or reduce the percentage according to your 
needs. &lt;br /&gt;

To modify the aging factor for freshness computations&lt;br /&gt;

&lt;ol&gt;
&lt;li&gt;Edit the following variables in &lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config&quot;&gt;&lt;code&gt;records.config&lt;/code&gt;&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config#proxy.config.http.cache.heuristic_lm_factor&quot;&gt;&lt;em&gt;&lt;code&gt;proxy.config.http.cache.heuristic_lm_factor&lt;/code&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Run the &lt;code&gt;traffic_line -x&lt;/code&gt; command to apply the configuration changes.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;SettinganAbsoluteFreshnessLimit&quot;&gt;
Setting absolute Freshness Limits&lt;/h2&gt;
Some objects do not have &lt;code&gt;Expires&lt;/code&gt; headers or do not have both &lt;code&gt;Last-Modified&lt;/code&gt; 
and &lt;code&gt;Date&lt;/code&gt; headers. To control how long these objects are considered fresh 
in the cache, specify an &lt;strong&gt;absolute freshness limit&lt;/strong&gt;.&lt;br /&gt;

To specify an absolute freshness limit&lt;br /&gt;

&lt;ol&gt;
&lt;li&gt;Edit the following variables in &lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config&quot;&gt;&lt;code&gt;records.config&lt;/code&gt;&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config#proxy.config.http.cache.heuristic_min_lifetime&quot;&gt;&lt;em&gt;&lt;code&gt;proxy.config.http.cache.heuristic_min_lifetime&lt;/code&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config#proxy.config.http.cache.heuristic_max_lifetime&quot;&gt;&lt;em&gt;&lt;code&gt;proxy.config.http.cache.heuristic_max_lifetime&lt;/code&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Run the &lt;code&gt;traffic_line -x&lt;/code&gt; command to apply the configuration changes.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;SpecifyingHeaderRequirements&quot;&gt;
Specifying Header Requirements&lt;/h2&gt;
To further ensure freshness of the objects in the cache, configure Traffic 
Server to cache only objects with specific headers. By default, Traffic Server 
caches all objects (including objects with no headers); you should change the 
default setting only for specialized proxy situations. If you configure Traffic 
Server to cache only HTTP objects with &lt;code&gt;Expires&lt;/code&gt; or &lt;code&gt;max-age&lt;/code&gt; headers, then 
the cache hit rate will be noticeably reduced (since very few objects will 
have explicit expiration information).&lt;br /&gt;

To configure Traffic Server to cache objects with specific headers&lt;br /&gt;

&lt;ol&gt;
&lt;li&gt;Edit the following variable in &lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config&quot;&gt;&lt;code&gt;records.config&lt;/code&gt;&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config#proxy.config.http.cache.required_headers&quot;&gt;&lt;em&gt;&lt;code&gt;proxy.config.http.cache.required_headers&lt;/code&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Run the &lt;code&gt;traffic_line -x&lt;/code&gt; command to apply the configuration changes.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;Cache-ControlHeaders&quot;&gt;
Cache-Control Headers&lt;/h2&gt;
Even though an object might be fresh in the cache, clients or servers often 
impose their own constraints that preclude retrieval of the object from the 
cache. For example, a client might request that a object &lt;em&gt;not&lt;/em&gt; be retrieved 
from a cache, or if it does, then it cannot have been cached for more than 
10 minutes. Traffic Server bases the servability of a cached object on &lt;code&gt;Cache-Control&lt;/code&gt; 
headers that appear in both client requests and server responses. The following 
&lt;code&gt;Cache-Control&lt;/code&gt; headers affect whether objects are served from cache: &lt;br /&gt;

&lt;ul&gt;
&lt;li&gt;
The &lt;code&gt;no-cache&lt;/code&gt; header, sent by clients, tells Traffic Server that it should
  not to serve any objects directly from the cache; therefore, Traffic Server will
  always obtain the object from the origin server. You can configure Traffic Server
  to ignore client &lt;code&gt;no-cache&lt;/code&gt; headers - refer to
  &lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/http-proxy-caching/index.en.html#ConfiguringTSIgnoreClientnocacheHeaders&quot;&gt;Configuring Traffic Server to Ignore Client no-cache Headers&lt;/a&gt; for more information.&lt;br /&gt;

&lt;/li&gt;
&lt;li&gt;
The &lt;code&gt;max-age&lt;/code&gt; header, sent by servers, is compared to the object age.
  If the age is less than &lt;code&gt;max-age&lt;/code&gt;, then the object is fresh and can be served.&lt;br /&gt;

&lt;/li&gt;
&lt;li&gt;
The &lt;code&gt;min-fresh&lt;/code&gt; header, sent by clients, is an &lt;strong&gt;acceptable freshness tolerance&lt;/strong&gt;.
  This means that the client wants the object to be at least this fresh.
  Unless a cached object remains fresh at least this long in the future, it is revalidated. &lt;br /&gt;

&lt;/li&gt;
&lt;li&gt;
The &lt;code&gt;max-stale&lt;/code&gt; header, sent by clients, permits Traffic Server to serve stale
  objects provided they are not too old. Some browsers might be willing to take
  slightly stale objects in exchange for improved performance, especially during
  periods of poor Internet availability. &lt;br /&gt;

&lt;/li&gt;
&lt;/ul&gt;
Traffic Server applies &lt;code&gt;Cache-Control&lt;/code&gt; servability criteria &lt;strong&gt;&lt;em&gt;after&lt;/em&gt;&lt;/strong&gt; HTTP freshness 
criteria. For example, an object might be considered fresh but will not be 
served if its age is greater than its &lt;code&gt;max-age&lt;/code&gt;.&lt;br /&gt;

&lt;h2 id=&quot;RevalidatingHTTPObjects&quot;&gt;
Revalidating HTTP Objects&lt;/h2&gt;
When a client requests an HTTP object that is stale in the cache, Traffic Server 
revalidates the object. A &lt;strong&gt;revalidation&lt;/strong&gt; is a query to the origin server 
to check if the object is unchanged. The result of a revalidation is one of 
the following:&lt;br /&gt;

&lt;ul&gt;
&lt;li&gt;
If the object is still fresh, then Traffic Server resets its freshness
  limit and serves the object. &lt;br /&gt;

&lt;/li&gt;
&lt;li&gt;
If a new copy of the object is available, then Traffic Server caches the
  new object (thereby replacing the stale copy) and simultaneously serves the object to the client. &lt;br /&gt;

&lt;/li&gt;
&lt;li&gt;
If the object no longer exists on the origin server, then Traffic Server
  does not serve the cached copy. &lt;br /&gt;

&lt;/li&gt;
&lt;li&gt;
If the origin server does not respond to the revalidation query, then
  Traffic Server serves the stale object along with a &lt;code&gt;111 Revalidation Failed&lt;/code&gt; warning. &lt;br /&gt;

&lt;/li&gt;
&lt;/ul&gt;
By default, Traffic Server revalidates a requested HTTP object in the cache 
if it considers the object to be stale. Traffic Server evaluates object freshness 
as described in &lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/http-proxy-caching/index.en.html#HTTPObjectFreshness&quot;&gt;HTTP Object Freshness&lt;/a&gt;. You can reconfigure 
how Traffic Server evaluates freshness by selecting one of the following options: &lt;br /&gt;

&lt;ul&gt;
&lt;li&gt;Traffic Server considers all HTTP objects in the cache to be stale: 
always revalidate HTTP objects in the cache with the origin server.&lt;/li&gt;
&lt;li&gt;Traffic Server considers all HTTP objects in the cache to be fresh: 
never revalidate HTTP objects in the cache with the origin server. &lt;/li&gt;
&lt;li&gt;Traffic Server considers all HTTP objects without &lt;code&gt;Expires&lt;/code&gt; or &lt;code&gt;Cache-control&lt;/code&gt; headers to be stale: revalidate all HTTP objects without &lt;code&gt;Expires&lt;/code&gt; or &lt;code&gt;Cache-Control&lt;/code&gt; headers. &lt;/li&gt;
&lt;/ul&gt;
To configure how Traffic Server revalidates objects in the cache, you can set 
specific revalidation rules in &lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config&quot;&gt;&lt;code&gt;cache.config&lt;/code&gt;&lt;/a&gt;. &lt;br /&gt;

To configure revalidation options&lt;br /&gt;

&lt;ol&gt;
&lt;li&gt;Edit the following variable in &lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config&quot;&gt;&lt;code&gt;records.config&lt;/code&gt;&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config#proxy.config.http.cache.when_to_revalidate&quot;&gt;&lt;em&gt;&lt;code&gt;proxy.config.http.cache.when_to_revalidate&lt;/code&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Run the &lt;code&gt;traffic_line -x&lt;/code&gt; command to apply the configuration changes.&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id=&quot;SchedulingUpdatesLocalCacheContent&quot;&gt;
Scheduling Updates to Local Cache Content&lt;/h1&gt;
To further increase performance and to ensure that HTTP objects are fresh in 
the cache, you can use the &lt;strong&gt;Scheduled Update&lt;/strong&gt; option. This configures Traffic 
Server to load specific objects into the cache at scheduled times. You might 
find this especially beneficial in a reverse proxy setup, where you can
&lt;em&gt;preload&lt;/em&gt; content you anticipate will be in demand. &lt;br /&gt;

To use the Scheduled Update option, you must perform the following tasks. &lt;br /&gt;

&lt;ul&gt;
&lt;li&gt;Specify the list of URLs that contain the objects you want to schedule for update,&lt;/li&gt;
&lt;li&gt;the time the update should take place,&lt;/li&gt;
&lt;li&gt;and the recursion depth for the URL.&lt;/li&gt;
&lt;li&gt;Enable the scheduled update option and configure optional retry settings.&lt;/li&gt;
&lt;/ul&gt;
Traffic Server uses the information you specify to determine URLs for which 
it is responsible. For each URL, Traffic Server derives all recursive URLs 
(if applicable) and then generates a unique URL list. Using this list, Traffic 
Server initiates an HTTP &lt;code&gt;GET&lt;/code&gt; for each unaccessed URL. It ensures that it remains 
within the user-defined limits for HTTP concurrency at any given time. The 
system logs the completion of all HTTP &lt;code&gt;GET&lt;/code&gt; operations so you can monitor 
the performance of this feature. &lt;br /&gt;

Traffic Server also provides a &lt;strong&gt;Force Immediate Update&lt;/strong&gt; option that enables 
you to update URLs immediately without waiting for the specified update time 
to occur. You can use this option to test your scheduled update configuration 
(refer to &lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/http-proxy-caching/index.en.html#ForcingImmediateUpdate&quot;&gt;Forcing an Immediate Update&lt;/a&gt;). &lt;br /&gt;

&lt;h2 id=&quot;ConfiguringScheduledUpdateOption&quot;&gt;
Configuring the Scheduled Update Option&lt;/h2&gt;
To configure the scheduled update option&lt;br /&gt;

&lt;ol&gt;
&lt;li&gt;Edit &lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/update.config&quot;&gt;&lt;code&gt;update.config&lt;/code&gt;&lt;/a&gt; to enter a line in the file for each URL you want to update.&lt;/li&gt;
&lt;li&gt;Edit the following variables in &lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config&quot;&gt;&lt;code&gt;records.config&lt;/code&gt;&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config#proxy.config.http.update.enabled&quot;&gt;&lt;em&gt;&lt;code&gt;proxy.config.update.enabled&lt;/code&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config#proxy.config.http.update.retry_count&quot;&gt;&lt;em&gt;&lt;code&gt;proxy.config.update.retry_count&lt;/code&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config#proxy.config.http.update.retry_interval&quot;&gt;&lt;em&gt;&lt;code&gt;proxy.config.update.retry_interval&lt;/code&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config#proxy.config.http.update.concurrent_updates&quot;&gt;&lt;em&gt;&lt;code&gt;proxy.config.update.concurrent_updates&lt;/code&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Run the &lt;code&gt;traffic_line -x&lt;/code&gt; command to apply the configuration changes.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;ForcingImmediateUpdate&quot;&gt;
Forcing an Immediate Update&lt;/h2&gt;
Traffic Server provides a &lt;strong&gt;Force Immediate Update&lt;/strong&gt; option that enables you 
to immediately verify the URLs listed in the &lt;code&gt;update.config&lt;/code&gt; file. The Force 
Immediate Update option disregards the offset hour and interval set in the 
&lt;code&gt;update.config&lt;/code&gt; file and immediately updates the URLs listed. &lt;br /&gt;

To configure the Force Immediate Update option&lt;br /&gt;

&lt;ol&gt;
&lt;li&gt;Edit the following variables in &lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config&quot;&gt;&lt;code&gt;records.config&lt;/code&gt;&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config#proxy.config.http.update.force&quot;&gt;&lt;em&gt;&lt;code&gt;proxy.config.update.force&lt;/code&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Make sure the variable &lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config#proxy.config.http.update.enabled&quot;&gt;&lt;em&gt;&lt;code&gt;proxy.config.update.enabled&lt;/code&gt;&lt;/em&gt;&lt;/a&gt; is set to 1.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Run the &lt;code&gt;command traffic_line -x&lt;/code&gt; to apply the configuration changes. &lt;/li&gt;
&lt;/ol&gt;
&lt;strong&gt;IMPORTANT:&lt;/strong&gt; When you enable the Force Immediate Update option, Traffic Server 
continually updates the URLs specified in the &lt;code&gt;update.config&lt;/code&gt; file until you 
disable the option. To disable the Force Immediate Update option, set the variable 
&lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config#proxy.config.http.update.force&quot;&gt;&lt;em&gt;&lt;code&gt;proxy.config.update.force&lt;/code&gt;&lt;/em&gt;&lt;/a&gt; to &lt;code&gt;0&lt;/code&gt; (zero).&lt;br /&gt;

&lt;h1 id=&quot;PushingContentintoCache&quot;&gt;
Pushing Content into the Cache&lt;/h1&gt;
Traffic Server supports the HTTP &lt;code&gt;PUSH&lt;/code&gt; method of content delivery. Using HTTP 
&lt;code&gt;PUSH&lt;/code&gt;, you can deliver content directly into the cache without client requests. &lt;br /&gt;

&lt;h2 id=&quot;ConfiguringTSPUSHRequests&quot;&gt;
Configuring Traffic Server for PUSH Requests&lt;/h2&gt;
Before you can deliver content into your cache using HTTP &lt;code&gt;PUSH&lt;/code&gt;, you must 
configure Traffic Server to accept &lt;code&gt;PUSH&lt;/code&gt; requests.&lt;br /&gt;

To configure Traffic Server to accept &lt;code&gt;PUSH&lt;/code&gt; requests&lt;br /&gt;

&lt;ol&gt;
&lt;li&gt;Edit &lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config&quot;&gt;&lt;code&gt;records.config&lt;/code&gt;&lt;/a&gt;, modify the super mask to allow &lt;code&gt;PUSH&lt;/code&gt; request.&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config#proxy.config.http.quick_filter.mask&quot;&gt;&lt;em&gt;&lt;code&gt;proxy.config.http.quick_filter.mask&lt;/code&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Edit the following variable in &lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config&quot;&gt;&lt;code&gt;records.config&lt;/code&gt;&lt;/a&gt;, enable the push_method.&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config#proxy.config.http.push_method_enabled&quot;&gt;&lt;em&gt;&lt;code&gt;proxy.config.http.push_method_enabled&lt;/code&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Run the command &lt;code&gt;traffic_line -x&lt;/code&gt; to apply the configuration changes. &lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;UnderstandingHTTPPUSH&quot;&gt;
Understanding HTTP PUSH&lt;/h2&gt;
&lt;code&gt;PUSH&lt;/code&gt; uses the HTTP 1.1 message format. The body of a &lt;code&gt;PUSH&lt;/code&gt; request contains 
the response header and response body that you want to place in the cache. 
The following is an example of a &lt;code&gt;PUSH&lt;/code&gt; request: &lt;br /&gt;

&lt;div class=&quot;codehilite&quot;&gt;
&lt;pre&gt;PUSH http://www.company.com HTTP/1.0
Content-length: 84

HTTP/1.0 200 OK
Content-type: text/html
Content-length: 17

&lt;span class=&quot;nt&quot;&gt;&amp;lt;HTML&amp;gt;&lt;/span&gt;
a
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/HTML&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;strong&gt;IMPORTANT:&lt;/strong&gt; Your header must include &lt;code&gt;Content-length&lt;/code&gt; - &lt;code&gt;Content-length&lt;/code&gt; 
must include both &lt;code&gt;header&lt;/code&gt; and &lt;code&gt;body byte count&lt;/code&gt;.&lt;br /&gt;

&lt;h2 id=&quot;ToolsForHTTPPUSH&quot;&gt;
Tools that will help manage pushing&lt;/h2&gt;
There is a perl script for pushing, &lt;a href=&quot;http://git-wip-us.apache.org/repos/asf?p=trafficserver.git;a=blob;f=tools/push.pl&quot;&gt;&lt;code&gt;tools/push.pl&lt;/code&gt;&lt;/a&gt;, which can help you understanding how to write some script for pushing content.&lt;br /&gt;

&lt;h1 id=&quot;PinningContentinCache&quot;&gt;
Pinning Content in the Cache&lt;/h1&gt;
The &lt;strong&gt;Cache Pinning Option&lt;/strong&gt; configures Traffic Server to keep certain HTTP 
objects in the cache for a specified time. You can use this option to ensure 
that the most popular objects are in cache when needed and to prevent Traffic 
Server from deleting important objects. Traffic Server observes &lt;code&gt;Cache-Control&lt;/code&gt; 
headers and pins an object in the cache only if it is indeed cacheable.&lt;br /&gt;

To set cache pinning rules&lt;br /&gt;

&lt;ol&gt;
&lt;li&gt;
Make sure the following variable in &lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config&quot;&gt;&lt;code&gt;records.config&lt;/code&gt;&lt;/a&gt; is set&lt;br /&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config#proxy.config.cache.permit.pinning&quot;&gt;&lt;em&gt;&lt;code&gt;proxy.config.cache.permit.pinning&lt;/code&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
Add a rule in &lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/cache.config&quot;&gt;&lt;code&gt;cache.config&lt;/code&gt;&lt;/a&gt; for each URL you want Traffic Server to pin in the cache. For example:&lt;br /&gt;

&lt;div class=&quot;codehilite&quot;&gt;
&lt;pre&gt;url_regex=^https?://(www.)?apache.org/dev/ pin-in-cache=12h
&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
Run the command &lt;code&gt;traffic_line -x&lt;/code&gt; to apply the configuration changes. &lt;br /&gt;

&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id=&quot;CacheNotCache&quot;&gt;
To Cache or Not to Cache?&lt;/h1&gt;
When Traffic Server receives a request for a web object that is not in the 
cache, it retrieves the object from the origin server and serves it to the 
client. At the same time, Traffic Server checks if the object is cacheable 
before storing it in its cache to serve future requests. &lt;br /&gt;

&lt;h1 id=&quot;CachingHTTPObjects&quot;&gt;
Caching HTTP Objects&lt;/h1&gt;
Traffic Server responds to caching directives from clients and origin servers, 
as well as directives you specify through configuration options and files. &lt;br /&gt;

&lt;h2 id=&quot;ClientDirectives&quot;&gt;
Client Directives&lt;/h2&gt;
By default, Traffic Server does &lt;em&gt;not&lt;/em&gt; cache objects with the following &lt;strong&gt;request
headers&lt;/strong&gt;: &lt;br /&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;Authorization&lt;/code&gt;: header &lt;br /&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Cache-Control: no-store&lt;/code&gt; header &lt;br /&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Cache-Control: no-cache&lt;/code&gt; header&lt;br /&gt;

To configure Traffic Server to ignore the &lt;code&gt;Cache-Control: no-cache&lt;/code&gt; header,
refer to &lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/http-proxy-caching/index.en.html#ConfiguringTSIgnoreClientnocacheHeaders&quot;&gt;Configuring Traffic Server to Ignore Client no-cache Headers&lt;/a&gt;. &lt;br /&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Cookie&lt;/code&gt;: header (for text objects) &lt;br /&gt;

By default, Traffic Server caches objects served in response to requests that
contain cookies (unless the object is text). You can configure Traffic Server
to not cache cookied content of any type, cache all cookied content, or cache
cookied content that is of image type only. For more information,
refer to &lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/http-proxy-caching/index.en.html#CachingCookiedObjects&quot;&gt;Caching Cookied Objects&lt;/a&gt;.&lt;br /&gt;

&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;ConfiguringTSIgnoreClientnocacheHeaders&quot;&gt;
Configuring Traffic Server to Ignore Client no-cache Headers&lt;/h3&gt;
By default, Traffic Server strictly observes client &lt;code&gt;Cache-Control: no-cache&lt;/code&gt; 
directives. If a requested object contains a &lt;code&gt;no-cache&lt;/code&gt; header, then Traffic 
Server forwards the request to the origin server even if it has a fresh copy 
in cache. You can configure Traffic Server to ignore client &lt;code&gt;no-cache&lt;/code&gt; directives 
such that it ignores &lt;code&gt;no-cache&lt;/code&gt; headers from client requests and serves the 
object from its cache. &lt;br /&gt;

To configure Traffic Server to ignore client &lt;code&gt;no-cache&lt;/code&gt; headers&lt;br /&gt;

&lt;ol&gt;
&lt;li&gt;Edit the following variable in &lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config&quot;&gt;&lt;code&gt;records.config&lt;/code&gt;&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config#proxy.config.cache.ignore_client_no_cache&quot;&gt;&lt;em&gt;&lt;code&gt;proxy.config.cache.ignore_client_no_cache&lt;/code&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Run the command &lt;code&gt;traffic_line -x&lt;/code&gt; to apply the configuration changes. &lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;OriginServerDirectives&quot;&gt;
Origin Server Directives&lt;/h2&gt;
By default, Traffic Server does &lt;em&gt;not&lt;/em&gt; cache objects with the following &lt;strong&gt;response&lt;/strong&gt; 
&lt;strong&gt;headers&lt;/strong&gt;: &lt;br /&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Cache-Control: no-store&lt;/code&gt; header &lt;/li&gt;
&lt;li&gt;&lt;code&gt;Cache-Control: private&lt;/code&gt; header &lt;/li&gt;
&lt;li&gt;
&lt;code&gt;WWW-Authenticate&lt;/code&gt;: header&lt;br /&gt;

To configure Traffic Server to ignore&lt;code&gt;WWW-Authenticate&lt;/code&gt; headers,
 refer to &lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/http-proxy-caching/index.en.html#ConfiguringTrafficEdgeIgnoreWWWAuthenticateHeaders&quot;&gt;Configuring Traffic Server to Ignore WWW-Authenticate Headers&lt;/a&gt;. &lt;br /&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Set-Cookie&lt;/code&gt;: header &lt;br /&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Cache-Control: no-cache&lt;/code&gt; headers&lt;br /&gt;

To configure Traffic Server to ignore &lt;code&gt;no-cache&lt;/code&gt; headers,
 refer to &lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/http-proxy-caching/index.en.html#ConfiguringTrafficEdgeIgnoreServerNoCacheHeaders&quot;&gt;Configuring Traffic Server to Ignore Server no-cache Headers&lt;/a&gt;. &lt;br /&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Expires&lt;/code&gt;: header with value of 0 (zero) or a past date &lt;br /&gt;

&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;ConfiguringTSIgnoreServernocacheHeaders&quot;&gt;
Configuring Traffic Server to Ignore Server no-cache Headers&lt;/h3&gt;
By default, Traffic Server strictly observes &lt;code&gt;Cache-Control: no-cache&lt;/code&gt; directives. 
A response from an origin server with a &lt;code&gt;no-cache&lt;/code&gt; header is not stored in 
the cache and any previous copy of the object in the cache is removed. If you 
configure Traffic Server to ignore &lt;code&gt;no-cache&lt;/code&gt; headers, then Traffic Server 
also ignores &lt;code&gt;no-&lt;/code&gt;&lt;strong&gt;&lt;code&gt;store&lt;/code&gt;&lt;/strong&gt; headers. The default behavior of observing &lt;code&gt;no-cache&lt;/code&gt; 
directives is appropriate in most cases. &lt;br /&gt;

To configure Traffic Server to ignore server &lt;code&gt;no-cache&lt;/code&gt; headers&lt;br /&gt;

&lt;ol&gt;
&lt;li&gt;Edit the following variable in &lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config&quot;&gt;&lt;code&gt;records.config&lt;/code&gt;&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config#proxy.config.cache.ignore_server_no_cache&quot;&gt;&lt;em&gt;&lt;code&gt;proxy.config.cache.ignore_server_no_cache&lt;/code&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Run the command &lt;code&gt;traffic_line -x&lt;/code&gt; to apply the configuration changes. &lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;ConfiguringTSIgnoreWWWAuthenticateHeaders&quot;&gt;
Configuring Traffic Server to Ignore WWW-Authenticate Headers&lt;/h3&gt;
By default, Traffic Server does not cache objects that contain &lt;code&gt;WWW-Authenticate&lt;/code&gt; 
response headers. The &lt;code&gt;WWW-Authenticate&lt;/code&gt; header contains authentication parameters 
the client uses when preparing the authentication challenge response to an 
origin server. &lt;br /&gt;

When you configure Traffic Server to ignore origin server &lt;code&gt;WWW-Authenticate&lt;/code&gt; 
headers, all objects with &lt;code&gt;WWW-Authenticate&lt;/code&gt; headers are stored in the cache 
for future requests. However, the default behavior of not caching objects with 
&lt;code&gt;WWW-Authenticate&lt;/code&gt; headers is appropriate in most cases. Only configure Traffic 
Server to ignore server &lt;code&gt;WWW-Authenticate&lt;/code&gt; headers if you are knowledgeable 
about HTTP 1.1.&lt;br /&gt;

To configure Traffic Server to ignore server &lt;code&gt;WWW-Authenticate&lt;/code&gt; headers&lt;br /&gt;

&lt;ol&gt;
&lt;li&gt;Edit the following variable in &lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config&quot;&gt;&lt;code&gt;records.config&lt;/code&gt;&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config#proxy.config.cache.ignore_authentication&quot;&gt;&lt;em&gt;&lt;code&gt;proxy.config.cache.ignore_authentication&lt;/code&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Run the command &lt;code&gt;traffic_line -x&lt;/code&gt; to apply the configuration changes. &lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;ConfigurationDirectives&quot;&gt;
Configuration Directives&lt;/h2&gt;
In addition to client and origin server directives, Traffic Server responds to directives
you specify through configuration options and files.&lt;br /&gt;

You can configure Traffic Server to do the following: &lt;br /&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Not&lt;/em&gt; cache any HTTP objects (refer to &lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/http-proxy-caching/index.en.html#DisablingHTTPObjectCaching&quot;&gt;Disabling HTTP Object Caching&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;Cache &lt;strong&gt;dynamic content&lt;/strong&gt; - that is, objects with URLs that end in &lt;strong&gt;&lt;code&gt;.asp&lt;/code&gt;&lt;/strong&gt; or contain a question mark (&lt;strong&gt;&lt;code&gt;?&lt;/code&gt;&lt;/strong&gt;),
  semicolon (&lt;strong&gt;&lt;code&gt;;&lt;/code&gt;&lt;/strong&gt;), or &lt;strong&gt;&lt;code&gt;cgi&lt;/code&gt;&lt;/strong&gt;. For more information, refer to &lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/http-proxy-caching/index.en.html#CachingDynamicContent&quot;&gt;Caching Dynamic Content&lt;/a&gt;. &lt;/li&gt;
&lt;li&gt;Cache objects served in response to the &lt;code&gt;Cookie:&lt;/code&gt; header (refer to &lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/http-proxy-caching/index.en.html#CachingCookiedObjects&quot;&gt;Caching Cookied Objects)&lt;/a&gt;. &lt;/li&gt;
&lt;li&gt;Observe &lt;code&gt;never-cache&lt;/code&gt; rules in the &lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/cache.config&quot;&gt;&lt;code&gt;cache.config&lt;/code&gt;&lt;/a&gt; file.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;DisablingHTTPObjectCaching&quot;&gt;
Disabling HTTP Object Caching&lt;/h3&gt;
By default, Traffic Server caches all HTTP objects except those for which you 
have set &lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/cache.config#action&quot;&gt;&lt;code&gt;never-cache&lt;/code&gt;&lt;/a&gt; rules in the
&lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/cache.config&quot;&gt;&lt;code&gt;cache.config&lt;/code&gt;&lt;/a&gt; file. You can disable HTTP 
object caching so that all HTTP objects are served directly from the origin 
server and never cached, as detailed below.&lt;br /&gt;

To disable HTTP object caching manually&lt;br /&gt;

&lt;ol&gt;
&lt;li&gt;Edit the following variable in &lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config&quot;&gt;&lt;code&gt;records.config&lt;/code&gt;&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config#proxy.config.cache.http&quot;&gt;&lt;em&gt;&lt;code&gt;proxy.config.cache.http&lt;/code&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Run the command &lt;code&gt;traffic_line -x&lt;/code&gt; to apply the configuration changes.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;CachingDynamicContent&quot;&gt;
Caching Dynamic Content&lt;/h3&gt;
A URL is considered &lt;strong&gt;dynamic&lt;/strong&gt; if it ends in &lt;strong&gt;&lt;code&gt;.asp&lt;/code&gt;&lt;/strong&gt; or contains a question 
mark (&lt;strong&gt;&lt;code&gt;?&lt;/code&gt;&lt;/strong&gt;), a semicolon (&lt;strong&gt;&lt;code&gt;;&lt;/code&gt;&lt;/strong&gt;), or &lt;strong&gt;&lt;code&gt;cgi&lt;/code&gt;&lt;/strong&gt;. By default, Traffic Server 
caches dynamic content. You can configure the system to ignore dyanamic looking
content, although this is recommended only if the content is &lt;em&gt;truely&lt;/em&gt; dyanamic,
but fails to advertise so with appropriate &lt;code&gt;Cache-Control&lt;/code&gt; headers.&lt;br /&gt;

To configure Traffic Server&#39;s cache behaviour in regard to dynamic content&lt;br /&gt;

&lt;ol&gt;
&lt;li&gt;Edit the following variable in &lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config&quot;&gt;&lt;code&gt;records.config&lt;/code&gt;&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config#proxy.config.http.cache.cache_urls_that_look_dynamic&quot;&gt;&lt;em&gt;&lt;code&gt;proxy.config.http.cache.cache_urls_that_look_dynamic&lt;/code&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Run the command &lt;code&gt;traffic_line -x&lt;/code&gt; to apply the configuration changes.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;CachingCookiedObjects&quot;&gt;
Caching Cookied Objects&lt;/h3&gt;
By default, Traffic Server caches objects served in response to requests that 
contain cookies. This is true for all types of objects except for text.
Traffic Server does not cache cookied text content because object headers are
stored along with the object, and personalized cookie header values could be
saved with the object. With non-text objects, it is unlikely that personalized
headers are delivered or used. &lt;br /&gt;

You can reconfigure Traffic Server to: &lt;br /&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Not&lt;/em&gt; cache cookied content of any type. &lt;/li&gt;
&lt;li&gt;Cache cookied content that is of image type only. &lt;/li&gt;
&lt;li&gt;Cache all cookied content regardless of type.&lt;/li&gt;
&lt;/ul&gt;
To configure how Traffic Server caches cookied content&lt;br /&gt;

&lt;ol&gt;
&lt;li&gt;Edit the following variable in &lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config&quot;&gt;&lt;code&gt;records.config&lt;/code&gt;&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config#proxy.config.cache_responses_to_cookies&quot;&gt;&lt;em&gt;&lt;code&gt;proxy.config.cache_responses_to_cookies&lt;/code&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Run the command &lt;code&gt;traffic_line -x&lt;/code&gt; to apply the configuration changes. &lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id=&quot;ForcingObjectCaching&quot;&gt;
Forcing Object Caching&lt;/h1&gt;
You can force Traffic Server to cache specific URLs (including dynamic URLs) 
for a specified duration, regardless of &lt;code&gt;Cache-Control&lt;/code&gt; response headers. &lt;br /&gt;

To force document caching&lt;br /&gt;

&lt;ol&gt;
&lt;li&gt;
Add a rule for each URL you want Traffic Server to pin to the cache &lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/cache.config&quot;&gt;&lt;code&gt;cache.config&lt;/code&gt;&lt;/a&gt;:&lt;br /&gt;

&lt;div class=&quot;codehilite&quot;&gt;
&lt;pre&gt;url_regex=^https?://(www.)?apache.org/dev/ ttl-in-cache=6h
&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
Run the command &lt;code&gt;traffic_line -x&lt;/code&gt; to apply the configuration changes. &lt;br /&gt;

&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id=&quot;CachingHTTPAlternates&quot;&gt;
Caching HTTP Alternates&lt;/h1&gt;
Some origin servers answer requests to the same URL with a variety of objects. 
The content of these objects can vary widely, according to whether a server 
delivers content for different languages, targets different browsers with different 
presentation styles, or provides different document formats (HTML, XML). Different 
versions of the same object are termed &lt;strong&gt;alternates&lt;/strong&gt; and are cached by Traffic 
Server based on &lt;code&gt;Vary&lt;/code&gt; response headers. You can specify additional request 
and response headers for specific &lt;code&gt;Content-Type&lt;/code&gt;s that Traffic Server will identify 
as alternates for caching. You can also limit the number of alternate versions 
of an object allowed in the cache. &lt;br /&gt;

&lt;h2 id=&quot;ConfiguringHowTSCachesAlternates&quot;&gt;
Configuring How Traffic Server Caches Alternates&lt;/h2&gt;
To configure how Traffic Server caches alternates, follow the steps below&lt;br /&gt;

&lt;ol&gt;
&lt;li&gt;Edit the following variables in &lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config&quot;&gt;&lt;code&gt;records.config&lt;/code&gt;&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config#proxy.config.http.cache.enable_default_vary_headers&quot;&gt;&lt;em&gt;&lt;code&gt;proxy.config.http.cache.enable_default_vary_headers&lt;/code&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config#proxy.config.http.cache.vary_default_text&quot;&gt;&lt;em&gt;&lt;code&gt;proxy.config.http.cache.vary_default_text&lt;/code&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config#proxy.config.cache.vary_default_images&quot;&gt;&lt;em&gt;&lt;code&gt;proxy.config.http.cache.vary_default_images&lt;/code&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config#proxy.config.http.cache.vary_default_other&quot;&gt;&lt;em&gt;&lt;code&gt;proxy.config.http.cache.vary_default_other&lt;/code&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Run the command &lt;code&gt;traffic_line -x&lt;/code&gt; to apply the configuration changes. &lt;/li&gt;
&lt;/ol&gt;
&lt;strong&gt;Note:&lt;/strong&gt; If you specify &lt;code&gt;Cookie&lt;/code&gt; as the header field on which to vary in the above variables,
make sure that the variable &lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config#proxy.config.cache.cache_responses_to_cookies&quot;&gt;&lt;em&gt;&lt;code&gt;proxy.config.cache.cache_responses_to_cookies&lt;/code&gt;&lt;/em&gt;&lt;/a&gt; is set appropriately.&lt;br /&gt;

&lt;h2 id=&quot;LimitingNumberofAlternatesforanObject&quot;&gt;
Limiting the Number of Alternates for an Object&lt;/h2&gt;
You can limit the number of alternates Traffic Server can cache per object 
(the default is 3). &lt;br /&gt;

&lt;strong&gt;IMPORTANT:&lt;/strong&gt; Large numbers of alternates can affect Traffic Server cache 
performance because all alternates have the same URL. Although Traffic Server 
can look up the URL in the index very quickly, it must scan sequentially through 
available alternates in the object store.&lt;br /&gt;

To limit the number of alternates&lt;br /&gt;

&lt;ol&gt;
&lt;li&gt;Edit the following variable in &lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config&quot;&gt;&lt;code&gt;records.config&lt;/code&gt;&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config#proxy.config.cache.limits.http.max_alts&quot;&gt;&lt;em&gt;&lt;code&gt;proxy.config.cache.limits.http.max_alts&lt;/code&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Run the command &lt;code&gt;traffic_line -x&lt;/code&gt; to apply the configuration changes. &lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id=&quot;UsingCongestionControl&quot;&gt;
Using Congestion Control&lt;/h1&gt;
The &lt;strong&gt;Congestion Control&lt;/strong&gt; option enables you to configure Traffic Server to 
stop forwarding HTTP requests to origin servers when they become congested. 
Traffic Server then sends the client a message to retry the congested origin 
server later. &lt;br /&gt;

To use the &lt;strong&gt;Congestion Control&lt;/strong&gt; option, you must perform the following tasks: &lt;br /&gt;

&lt;ol&gt;
&lt;li&gt;Set the following variable in &lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config&quot;&gt;&lt;code&gt;records.config&lt;/code&gt;&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/records.config#proxy.config.http.congestion_control.enabled&quot;&gt;&lt;em&gt;&lt;code&gt;proxy.config.http.congestion_control.enabled&lt;/code&gt;&lt;/em&gt;&lt;/a&gt; to &lt;code&gt;1&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Create rules in the &lt;a href=&quot;http://trafficserver.apache.org/docs/trunk/admin/configuration-files/congestion.config&quot;&gt;&lt;code&gt;congestion.config&lt;/code&gt;&lt;/a&gt; file to specify: &lt;/li&gt;
&lt;li&gt;which origin servers Traffic Server tracks for congestion&lt;/li&gt;
&lt;li&gt;the timeouts Traffic Server uses, depending on whether a server is congested &lt;/li&gt;
&lt;li&gt;the page Traffic Server sends to the client when a server becomes congested &lt;/li&gt;
&lt;li&gt;if Traffic Server tracks the origin servers per IP address or per hostname &lt;/li&gt;
&lt;li&gt;Run the command &lt;code&gt;traffic_line -x&lt;/code&gt; to apply the configuration changes. &lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://computer-ast.blogspot.com/feeds/438530023060907787/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9020370651846000084/438530023060907787' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/438530023060907787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/438530023060907787'/><link rel='alternate' type='text/html' href='http://computer-ast.blogspot.com/2013/01/understanding-http-web-proxy-caching.html' title='Understanding HTTP Web Proxy Caching'/><author><name>abdessamad</name><uri>http://www.blogger.com/profile/05406414270854404188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9020370651846000084.post-2564940558479536085</id><published>2013-01-31T12:39:00.002-08:00</published><updated>2013-01-31T12:39:47.003-08:00</updated><title type='text'>Microsoft Word 2010 Tips And Tricks</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Microsoft Word 2010 is one of our favorite text editors. With such a 
big array of features, Microsoft Office Word 2010 can look complicated. 
There are many hidden tricks and shortcuts that make text editing 
easier. Here are some tips I think will help you when you are using 
Microsoft Word 2010.&lt;br /&gt;

&lt;h2&gt;
Microsoft Word 2010 Tips And Tricks&lt;/h2&gt;
&lt;strong&gt;1. Vertical Selection Of Text&lt;/strong&gt;&lt;br /&gt;

Normally, we select a character, a word, a sentence or a paragraph. 
All these selections are horizontal selections. Sometimes you may need 
to select vertically. For example, if your text has numbers in the 
beginning, you may want to select only the numbers to delete them at one
 go (see figure).&lt;br /&gt;

&lt;img alt=&quot;Fig 1 Vertical Selection 10 Most Useful Microsoft Word 2010 Tips &amp;amp; Tricks&quot; class=&quot;aligncenter size-full wp-image-50121&quot; height=&quot;196&quot; src=&quot;http://www.thewindowsclub.com/wp-content/uploads/2012/06/Fig-1-Vertical-Selection.png&quot; title=&quot;Fig 1 Vertical Selection&quot; width=&quot;285&quot; /&gt;&lt;br /&gt;

To select text horizontally, press ALT and click to drag and make a 
selection. Remember to release ALT key before releasing mouse else it 
will open the Research dialog. Check out the different uses of vertical 
selections and let us know what all you did with this feature.&lt;br /&gt;

&lt;strong&gt;2. Default Line Spacing&lt;/strong&gt;&lt;br /&gt;

The default line spacing in Microsoft Word 2010 is 1.15 against 1 in 
Microsoft Word 2003. Microsoft changed the line spacing to make your 
text more readable. If you want the default line spacing as 1, follow 
this procedure:&lt;br /&gt;

&lt;ol&gt;
&lt;li&gt;While on the Home tab, right click on the Normal quick style button and select Modify&lt;/li&gt;
&lt;li&gt;In the Format list that appears, select Paragraph&lt;/li&gt;
&lt;li&gt;Under spacing, change the line spacing from 1.15 to 1&lt;/li&gt;
&lt;li&gt;Click OK&lt;/li&gt;
&lt;li&gt;Check the box against “New documents based on this template”&lt;/li&gt;
&lt;li&gt;Click OK&lt;/li&gt;
&lt;/ol&gt;
&lt;img alt=&quot;Fig 2 Change Default Line Spacing 373x400 10 Most Useful Microsoft Word 2010 Tips &amp;amp; Tricks&quot; class=&quot;aligncenter size-medium wp-image-50122&quot; height=&quot;400&quot; src=&quot;http://www.thewindowsclub.com/wp-content/uploads/2012/06/Fig-2-Change-Default-Line-Spacing-373x400.png&quot; title=&quot;Fig 2 Change Default Line Spacing 373x400&quot; width=&quot;373&quot; /&gt;&lt;br /&gt;

&lt;strong&gt;3. Changing The Default Save Location&lt;/strong&gt;&lt;br /&gt;

By default, MS Word opens Documents folder when you press CTRL+S for 
first time. If you think this is irritating you, you can change the 
default file location to some other place where you normally store your 
documents.&lt;br /&gt;

&lt;ol&gt;
&lt;li&gt;Click on File&lt;/li&gt;
&lt;li&gt;Click on Options&lt;/li&gt;
&lt;li&gt;Click Advanced in the left side of the window that appears&lt;/li&gt;
&lt;li&gt;In the right part of the window, scroll down to the button that says “File Locations”&lt;/li&gt;
&lt;li&gt;Select Documents and click on Modify&lt;/li&gt;
&lt;li&gt;In the Save File dialog box that appears, enter or select the new path and click on OK to close the Save File dialog box.&lt;/li&gt;
&lt;li&gt;Click OK to close the window.&lt;/li&gt;
&lt;/ol&gt;
&lt;img alt=&quot;Fig 3 Change Default Word Save Location 400x321 10 Most Useful Microsoft Word 2010 Tips &amp;amp; Tricks&quot; class=&quot;aligncenter size-medium wp-image-50123&quot; height=&quot;321&quot; src=&quot;http://www.thewindowsclub.com/wp-content/uploads/2012/06/Fig-3-Change-Default-Word-Save-Location-400x321.png&quot; title=&quot;Fig 3 Change Default Word Save Location 400x321&quot; width=&quot;400&quot; /&gt;&lt;br /&gt;

&lt;strong&gt;4. Change Default Font&lt;/strong&gt;&lt;br /&gt;

The default font for new documents in MS Word 2010 is Calibri. Though
 the font is good for online viewing, it creates problems when printing.
 You may be using Times New Roman or Arial for print jobs. One method is
 to change the font manually each time after you have typed the 
document. But then, it would involve formatting the document again. 
Another method is to change the default font.&lt;br /&gt;

&lt;ol&gt;
&lt;li&gt;Right click on the Normal quick style button on Home tab.&lt;/li&gt;
&lt;li&gt;Click Modify&lt;/li&gt;
&lt;li&gt;In the dialog box that appears, click on Format… to open the drop down menu and select Font&lt;/li&gt;
&lt;li&gt;In the Font dialog box, select the font you wish to use with every document.&lt;/li&gt;
&lt;li&gt;Make any other changes you wish such as font size etc&lt;/li&gt;
&lt;li&gt;Click OK&lt;/li&gt;
&lt;li&gt;Click to select “New documents based on this template”&lt;/li&gt;
&lt;li&gt;Click OK to close the Modify dialog box.&lt;/li&gt;
&lt;/ol&gt;
&lt;img alt=&quot;Fig 4 Change Default Font In MS Word 2010 400x355 10 Most Useful Microsoft Word 2010 Tips &amp;amp; Tricks&quot; class=&quot;aligncenter size-medium wp-image-50124&quot; height=&quot;355&quot; src=&quot;http://www.thewindowsclub.com/wp-content/uploads/2012/06/Fig-4-Change-Default-Font-In-MS-Word-2010-400x355.png&quot; title=&quot;Fig 4 Change Default Font In MS Word 2010 400x355&quot; width=&quot;400&quot; /&gt;&lt;br /&gt;

&lt;strong&gt;5. Move Rows Of Text In Table&lt;/strong&gt;&lt;br /&gt;

Sometimes when you are working on the table, you may want to move one
 or more rows in the table up or down without having to change the table
 formatting. One method is copy pasting but that risks formatting.&lt;br /&gt;

Another method is using ALT+SHIFT+UP arrow key to move entire row up.
 Similarly, to move the entire row down, use ALT+SHIFT+DN arrow key. 
Note that you have to select the row before you can move it using the 
ALT+SHIFT+Arrow keys. This method makes sure the formatting is not 
disturbed.&lt;br /&gt;

&lt;strong&gt;6. Quickly Change Line Spacing&lt;/strong&gt;&lt;br /&gt;

Sometimes need arises that you have to change line spacing among different paragraphs. Here are the shortcut keys:&lt;br /&gt;

CTRL + 1 –&amp;gt; Change line spacing to 1&lt;br /&gt;






CTRL + 2 –&amp;gt; Change line spacing to 2&lt;br /&gt;

CTRL + 5 –&amp;gt; Change line spacing to 1.5&lt;br /&gt;

Note that you just need to place the cursor on the paragraph that needs to be styled. You need not select the paragraph.&lt;br /&gt;

&lt;strong&gt;7. Quickly Adding Borders to Paragraphs&lt;/strong&gt;&lt;br /&gt;

If you wish to add borders to some paragraph, you can use the Borders
 and Shading dialog box. However, if your need is just to add bottom 
border to text/paragraph, you can do it by adding three special 
characters and hitting Enter.&lt;br /&gt;

Press – (hyphen) three times and press Enter to draw an underline border of 3/4 points&lt;br /&gt;

Press _ (underscore) three times and press Enter to draw an underline border of 1.5 points&lt;br /&gt;

Press ~ (tilde) three times and press Enter to draw a zigzag underline border&lt;br /&gt;

Press * (asterisk) three times and press Enter to draw a dotted underline border&lt;br /&gt;

Press = (equal to) three times and press Enter to draw a double underline border&lt;br /&gt;

&lt;strong&gt;8. Find Special Formatting&lt;/strong&gt;&lt;br /&gt;

You can find text that is specially formatted. For example, you can 
find highlighted text or text whose font is Times New Roman. You can 
also search for bold text or italics. There are many more options when 
you use the Find option.&lt;br /&gt;

&lt;ol&gt;
&lt;li&gt;Press CTRL+F to open the Find pane. In Word 2010 it appears to the left side of the window.&lt;/li&gt;
&lt;li&gt;Click on the down facing triangle next to magnifying glass and click on Advanced Find…&lt;/li&gt;
&lt;li&gt;In the Find dialog box that appears, click on More.&lt;/li&gt;
&lt;li&gt;You can see plenty of options under Format.&lt;/li&gt;
&lt;li&gt;When you select anything, it appears under the “Find What” textbox. 
When you click Find Next without entering anything in the “Find What” 
text box, it searches for the format you have selected. For example, you
 can select Font and in the Font dialog box, select a font and its 
properties (bold, italics etc).&lt;/li&gt;
&lt;/ol&gt;
&lt;img alt=&quot;Fig 5 Find Special Formatting 400x334 10 Most Useful Microsoft Word 2010 Tips &amp;amp; Tricks&quot; class=&quot;aligncenter size-medium wp-image-50125&quot; height=&quot;334&quot; src=&quot;http://www.thewindowsclub.com/wp-content/uploads/2012/06/Fig-5-Find-Special-Formatting-400x334.png&quot; title=&quot;Fig 5 Find Special Formatting 400x334&quot; width=&quot;400&quot; /&gt;&lt;br /&gt;

&lt;strong&gt;9. Merging Formatting When Pasting Across Documents&lt;/strong&gt;&lt;br /&gt;

When you copy anything from another document and paste it in the 
current document, you will want the copied text to match the formatting 
of the current document. While you can manually format each time you 
copy text from other documents to the current one, you can also set the 
default paste to merge formatting so that the text copied from other 
sources acquires formatting of current document.&lt;br /&gt;

&lt;ol&gt;
&lt;li&gt;To set the default formatting, click on the down facing triangle below Paste on Home tab&lt;/li&gt;
&lt;li&gt;Click Set Default Paste&lt;/li&gt;
&lt;li&gt;In the window that appears, Select Merge Destinations in: 1: When 
Pasting in Same Document and 2: When Pasting between Documents.&lt;/li&gt;
&lt;li&gt;Click OK to close the window&lt;/li&gt;
&lt;/ol&gt;
&lt;img alt=&quot;Fig 5 Paste defaults 400x326 10 Most Useful Microsoft Word 2010 Tips &amp;amp; Tricks&quot; class=&quot;aligncenter size-medium wp-image-50126&quot; height=&quot;326&quot; src=&quot;http://www.thewindowsclub.com/wp-content/uploads/2012/06/Fig-5-Paste-defaults-400x326.png&quot; title=&quot;Fig 5 Paste defaults 400x326&quot; width=&quot;400&quot; /&gt;&lt;br /&gt;

&lt;strong&gt;10. Copy Only Formatting&lt;/strong&gt;&lt;br /&gt;

Sometimes you may want to apply an already existing formatting from 
one part of your document to another part. You have the Format Painter 
for the purpose. Using the Format Painter can be irritating when dealing
 with long documents. &amp;nbsp;Here is another method that is easier to use.&lt;br /&gt;

Press CTRL+SHIFT+C instead of CTRL+C. This will copy only the formatting and leave the text.&lt;br /&gt;

Move to the destination where the formatting is to be applied. Select
 the text to which formatting is to be applied. Press CTRL+SHIFT+V to 
paste the formatting to the selection.&lt;br /&gt;

&lt;em&gt;Above are some Microsoft Word 2010 tips and tricks that make your
 working on the editor easy. If you have anything to share, please use 
the comments section.&lt;/em&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://computer-ast.blogspot.com/feeds/2564940558479536085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9020370651846000084/2564940558479536085' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/2564940558479536085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/2564940558479536085'/><link rel='alternate' type='text/html' href='http://computer-ast.blogspot.com/2013/01/microsoft-word-2010-tips-and-tricks.html' title='Microsoft Word 2010 Tips And Tricks'/><author><name>abdessamad</name><uri>http://www.blogger.com/profile/05406414270854404188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9020370651846000084.post-1569828062203708892</id><published>2013-01-31T12:28:00.004-08:00</published><updated>2013-01-31T12:28:32.859-08:00</updated><title type='text'>10 cool Microsoft Word tips and tricks</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;figure class=&quot;img&quot; data-url=&quot;/images/zoom/905849-a/1&quot;&gt;&lt;img alt=&quot;10 cool Microsoft Word tips and tricks&quot; itemprop=&quot;image&quot; src=&quot;http://cdn0.mos.techradar.futurecdn.net///Review%20images/PC%20Plus/PCP%20300/PCP300.helpdesk.document_comparison-580-75.jpg&quot; /&gt;&lt;figcaption&gt;If you are a Word power-user, then these tips may well help you get more done&lt;/figcaption&gt;&lt;/figure&gt;&lt;aside class=&quot;related-articles&quot;&gt;&lt;br /&gt;&lt;/aside&gt;Despite the many alternatives that are out there, Microsoft Word remains one of the most popular word processors available. &lt;br /&gt;
However, most of us barely scratch the surface of its abilities.&lt;br /&gt;

 With this selection of Microsoft Word tips, you can really step up your
 game, no matter which version you use, and you&#39;ll be able to work more 
efficiently than ever before.&lt;br /&gt;
&lt;strong&gt;1. Configure paste options&lt;/strong&gt;&lt;br /&gt;
Word
 tries to be helpful when copied text is pasted into a document by 
automatically retaining the source formatting, while providing the 
option to change the text to match the formatting of the current 
document. &lt;br /&gt;
&lt;figure&gt;&lt;img alt=&quot;paste options&quot; src=&quot;http://cdn2.mos.techradar.futurecdn.net//Review%20images/PC%20Plus/PCP%20300/PCP300.helpdesk.paste_options-580-90.jpg&quot; width=&quot;580&quot; /&gt;&lt;/figure&gt;To
 avoid having to choose formatting options every time text is pasted, 
click the &#39;Office&#39; button, followed by &#39;Word Options&#39;, then move to the 
&#39;Advanced&#39; section. Under the &#39;Cut, copy and paste&#39; heading, use the 
first four dropdown menus to choose a default setting for format 
pasting. &lt;br /&gt;
While configuring these options, untick the box labelled
 &#39;Show Paste Options Buttons&#39; to prevent the formatting options pop-up 
from being displayed in the future.&lt;br /&gt;
&lt;strong&gt;2. Change full-justification formatting&lt;/strong&gt;&lt;br /&gt;
When
 full justification is applied to a paragraph, Word ensures that text is
 vertically aligned on the left and right of the page by adjusting the 
spacing between words. While this usually isn&#39;t a problem, there are 
occasions when it can lead to a lot of visible white space.&lt;br /&gt;
 By 
opting to use the justification style that&#39;s utilised in WordPerfect, 
the spacing between individual letters on each line is adjusted to allow
 for better-looking text when it spans from margin to margin. &lt;br /&gt;
To 
activate this option, click the &#39;Office&#39; button, followed by &#39;Word 
Options&#39;, and then click the &#39;Advanced&#39; link on the left. Scroll to the 
bottom of the advanced options and expand the &#39;Layout Options&#39; entry. 
Now you just need to tick the box labelled &#39;Do Full Justification The 
Way WordPerfect 6.x For Windows Does&#39;, then click &#39;OK&#39;.&lt;br /&gt;
&lt;strong&gt;3. Use a hanging indent&lt;/strong&gt;&lt;br /&gt;
One
 of the less frequently used means of formatting paragraphs is the 
hanging indent. This is where the first line is not indented, but all of
 the rest are. &lt;br /&gt;
&lt;figure&gt;&lt;img alt=&quot;hanging indent&quot; src=&quot;http://cdn2.mos.techradar.futurecdn.net//Review%20images/PC%20Plus/PCP%20300/PCP300.helpdesk.hanging_indents-580-90.jpg&quot; width=&quot;580&quot; /&gt;&lt;/figure&gt;Select
 the paragraph you&#39;d like to format in this way, move to the Home tab 
and double-click the arrow icon in the lower right-hand corner of the 
&#39;Paragraph&#39; pane. &lt;br /&gt;
On the Indents and Spacing tab, use the 
&#39;Special&#39; dropdown menu in the middle of the dialog to select the 
&#39;Hanging&#39; option and then indicate the indentation level. To apply the 
indent, click &#39;OK&#39;.&lt;br /&gt;
&lt;strong&gt;4. Show and hide the ribbon&lt;/strong&gt;&lt;br /&gt;

 For many people, the ribbon interface used in Office 2007 is a great 
step forward, while others find it somewhat overwhelming. If you fall 
into the latter category, you&#39;ll be happy to know that the ribbon can be
 temporarily hidden to provide you with a larger working area and clear 
away the clutter. &lt;br /&gt;
It&#39;s also worth noting that the ribbon can 
quite easily be hidden by accident, so if this has happened, these tips 
can be used to show and hide it as required. &lt;br /&gt;
The first option is 
to click the down arrow icon at the end of the Quick Access Toolbar and 
tick or untick the &#39;Minimize the Ribbon&#39; option. This menu can also be 
accessed by right-clicking anywhere on the ribbon. &lt;br /&gt;
The third 
option is to double-click one of the tabs at the top of the ribbon to 
toggle the ribbon on and off. Finally, you can always use the keyboard 
shortcut – simply press [Ctrl]+[F1].&lt;br /&gt;
&lt;strong&gt;5. Number pages&lt;/strong&gt;&lt;br /&gt;
It&#39;s
 easy to configure a header and footer for your Word document so the 
page number is displayed on every page. In many instances, though, a 
document will have a title page for which a number is not required. &lt;br /&gt;
&lt;figure&gt;&lt;img alt=&quot;page numbering&quot; src=&quot;http://cdn1.mos.techradar.futurecdn.net//Review%20images/PC%20Plus/PCP%20300/PCP300.helpdesk.page_numbering-580-90.jpg&quot; width=&quot;580&quot; /&gt;&lt;/figure&gt;Set
 up page numbering as required and then in Word 2007 and 2010, move to 
the Page Layout tab before clicking the button in the lower right-hand 
corner. Switch to the Layout tab and tick the box labelled &#39;Different 
first page&#39;, before clicking OK.&lt;br /&gt;
&lt;strong&gt;6. Back up the Quick Access Toolbar&lt;/strong&gt;&lt;br /&gt;
If
 you&#39;ve spent a great deal of time customising the Quick Access Toolbar 
(QAT), it&#39;s all too easy to forget about it if you ever need to 
reinstall Windows. Thankfully, you can create a backup of the toolbar, 
which means it can be brought back without any hassle, or copied to 
other machines that you work with.&lt;br /&gt;
 In Windows XP, use Explorer to
 navigate to &#39;C:\Documents and Settings\[username]\Local 
Settings\Application Data\ Microsoft\Office&#39;, while in Windows Vista or 
7, you should head to &#39;C:\Users\[username]\ AppData\Local\Microsoft\ 
Office&#39;. &lt;br /&gt;
Here you&#39;ll find a file called &#39;Word.qat&#39; – this can be duplicated for backup purposes, or copied to another computer.&lt;br /&gt;
&lt;strong&gt;7. Remove formatting&lt;/strong&gt;&lt;br /&gt;
If
 text has been formatted and you change your mind about how it should 
appear, click the word in question, or select a section of text, and 
press [Ctrl]+[Space] simultaneously. If the formatting has been applied 
with a style, press [Ctrl]+[Shift]+[N] and it will then revert to the 
default style. &lt;br /&gt;
&lt;strong&gt;8. Adjust font spacing in headings&lt;/strong&gt;&lt;br /&gt;
Text
 space can be adjusted to help ensure that a heading fits on a single 
line, rather than wrapping onto a second, or expanded to reduce the 
amount of white space in a line.&lt;br /&gt;
 Select a line of text, right 
click and select Font from the context menu. Letter widths can be 
adjusted by selecting a new size from the Scale dropdown menu, but it&#39;s 
also possible to adjust spacing. Use the up and down arrows in the 
Spacing section to expand or compress it. &lt;br /&gt;
&lt;strong&gt;9. Compare documents&lt;/strong&gt;&lt;br /&gt;
There
 are various reasons why you might want to compare two documents and 
Word provides the option to open two files side by side for this very 
purpose. However, if you&#39;re using a monitor in portrait mode, 
side-by-side document comparison is less useful than having one document
 displayed above the other. &lt;br /&gt;
&lt;figure&gt;&lt;img alt=&quot;compare documents&quot; src=&quot;http://cdn2.mos.techradar.futurecdn.net//Review%20images/PC%20Plus/PCP%20300/PCP300.helpdesk.document_comparison-580-90.jpg&quot; width=&quot;580&quot; /&gt;&lt;/figure&gt;Thankfully,
 this arrangement option is available. In Word 2003 and older, open the 
two documents you want to compare, click the &#39;Window&#39; menu and select 
&#39;Compare Side by Side&#39;. Now click the &#39;Window&#39; menu again and select the
 &#39;Arrange All&#39; option.&lt;br /&gt;
 In Word 2007 and 2010, open the documents 
that you want to compare and move to the View tab of the ribbon. Click 
the &#39;View Side by Side&#39; button, and then click &#39;Arrange All&#39;. Press 
&#39;Synchronous Scrolling&#39; and you can scroll then through both of your 
documents at the same time. &lt;br /&gt;
&lt;strong&gt;10. Paste text with the Spike &lt;/strong&gt;&lt;br /&gt;
While
 the clipboard provides a useful way to copy and move text around a Word
 document, there&#39;s a little-known feature called the Spike that provides
 an alternative. Text that&#39;s added to the Spike is cut from the document
 and there&#39;s no limit to the number of entries that can be added. &lt;br /&gt;
&lt;figure&gt;&lt;img alt=&quot;the spike&quot; src=&quot;http://cdn3.mos.techradar.futurecdn.net//Review%20images/PC%20Plus/PCP%20300/PCP300.helpdesk.the_spike-580-90.jpg&quot; width=&quot;580&quot; /&gt;&lt;/figure&gt;When
 the content of the Spike is pasted into a document, it&#39;s done so in the
 order that it was spiked. This provides a very handy way of 
reorganising paragraphs or lists, without the need for endless cutting 
and pasting. &lt;br /&gt;
To add text to the Spike, select it and press 
[Ctrl]+[F3] simultaneously – this can be repeated as many times as 
required. To paste the contents of the Spike back into a document, you 
just need to press [Ctrl]+[Shift]+[F3]. &lt;br /&gt;
This will clear the 
Spike, ready to start collecting more data, but it&#39;s also possible to 
paste the Spike while retaining its contents for future use. Position 
the cursor where the pasted text should appear, type the word spike and 
then press [F3].&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://computer-ast.blogspot.com/feeds/1569828062203708892/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9020370651846000084/1569828062203708892' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/1569828062203708892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/1569828062203708892'/><link rel='alternate' type='text/html' href='http://computer-ast.blogspot.com/2013/01/10-cool-microsoft-word-tips-and-tricks.html' title='10 cool Microsoft Word tips and tricks'/><author><name>abdessamad</name><uri>http://www.blogger.com/profile/05406414270854404188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9020370651846000084.post-3038458735832985666</id><published>2013-01-31T12:21:00.001-08:00</published><updated>2013-01-31T12:21:30.486-08:00</updated><title type='text'>Mot de passe oublié </title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Vous pouvez créer sous Windows XP une disquette de réinitialisation de mot
de passe. Cette disquette a pour but de vous empêcher d&#39;oublier votre mot de
passe. Pour créer cette disquette, rendez-vous dans le panneau de configuration
et cliquez sur &lt;strong&gt;Comptes utilisateurs&lt;/strong&gt;. Cliquez sur le compte pour lequel vous souhaitez créer une disquette et cliquez à gauche sur &lt;strong&gt;Empêcher un mot de passe oublié&lt;/strong&gt;. L&#39;assistant s&#39;affiche :&lt;br /&gt;

&lt;div class=&quot;c&quot;&gt;
&lt;img alt=&quot;Récupération de mot de passe oublié&quot; src=&quot;http://www.vulgarisation-informatique.com/images/articles/passe_oublie/etape_1.gif&quot; /&gt;&lt;/div&gt;
Cliquez sur &lt;strong&gt;suivant&lt;/strong&gt; et insérez une disquette vierge et
formatée dans le lecteur A.&lt;br /&gt;

&lt;div class=&quot;c&quot;&gt;
&lt;img alt=&quot;Préparation de la disquette&quot; src=&quot;http://www.vulgarisation-informatique.com/images/articles/passe_oublie/etape_2.gif&quot; /&gt;&lt;/div&gt;
Cliquez ensuite sur &lt;strong&gt;suivant&lt;/strong&gt;. Indiquez ensuite votre mot de
passe actuel, et cliquez sur &lt;strong&gt;suivant&lt;/strong&gt;&lt;br /&gt;

&lt;div class=&quot;c&quot;&gt;
&lt;img alt=&quot;Demande du mot de passe actuel&quot; src=&quot;http://www.vulgarisation-informatique.com/images/articles/passe_oublie/etape_3.gif&quot; /&gt;&lt;/div&gt;
L&#39;assistant réalise la disquette. Cliquez sur &lt;strong&gt;suivant&lt;/strong&gt; une fois la réalisation terminée..&lt;br /&gt;

&lt;div class=&quot;c&quot;&gt;
&lt;img alt=&quot;Fin de la réalisation de la disquette&quot; src=&quot;http://www.vulgarisation-informatique.com/images/articles/passe_oublie/etape_4.gif&quot; /&gt;&lt;/div&gt;
Cliquez ensuite sur &lt;strong&gt;suivant&lt;/strong&gt; pour terminer la réalisation de la disquette.&lt;br /&gt;

&lt;div class=&quot;c&quot;&gt;
&lt;img alt=&quot;Le mot de passe oublié ne sera plus qu&#39;un mauvais souvenir&quot; src=&quot;http://www.vulgarisation-informatique.com/images/articles/passe_oublie/etape_5.gif&quot; /&gt;&lt;/div&gt;
Ensuite si vous oubliez votre mot de passe, voici la méthode pour accéder
à votre ordinateur :&lt;br /&gt;

&lt;ul&gt;
&lt;li&gt;Si votre ordinateur ne fait pas partie d&#39;un domaine ou d&#39;un environnement de domaine (c&#39;est généralement le cas) :&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
     Lorsque l&#39;écran d&#39;ouverture de session s&#39;affiche, sélectionnez votre nom
     d&#39;utilisateur puis tapez votre mot de passe. Une petite boîte
     intitulée &lt;strong&gt;Avez-vous oublié votre mot de passe&lt;/strong&gt; ? s&#39;affiche.&lt;br /&gt;
     Cliquez sur &lt;strong&gt;utiliser votre disque de réinitialisation de mot de passe&lt;/strong&gt; pour
     lancer l&#39;Assistant. Suivez les instructions de l&#39;Assistant qui créera un
     nouveau mot de passe. Vous pourrez ensuite ouvrir une session en utilisant le nouveau mot de
     passe. Gardez votre disquette de récupération de mot de passe pour en
     recréer autant que vous souhaitez, il n&#39;est pas nécessaire de recréer la
     disquette.&lt;br /&gt;

&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Les instructions suivantes s&#39;appliquent uniquement dans le cas d&#39;un
environnement de domaine
ou d&#39;un ordinateur qui a fait partie d&#39;un domaine.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
Lorsque l&#39;écran d&#39;ouverture de session s&#39;affiche, appuyez sur &lt;strong&gt;CTRL+ALT+SUPPR&lt;/strong&gt; et tapez votre mot de passe dans la zone &lt;strong&gt;Mot de passe&lt;/strong&gt;. Une boîte de dialogue &lt;strong&gt;Échec de l&#39;ouverture de session&lt;/strong&gt; s&#39;affiche.
Cliquez sur &lt;strong&gt;Réinitialiser&lt;/strong&gt; et insérez la disquette de
 réinitialisation de mot de passe. Suivez les instructions de 
l&#39;Assistant qui créera un nouveau mot de passe. Ouvrez une session en 
utilisant le nouveau mot de passe, puis rangez la disquette de 
réinitialisation des mots de passe dans un endroit sûr en vue d&#39;une 
utilisation ultérieure. Il n&#39;est pas nécessaire de créer une nouvelle 
disquette.
&lt;br /&gt;
Pour obtenir des informations générales sur l&#39;Assistant Mot de 
passe oublié et sur l&#39;Assistant Réinitialisation du mot de passe, et 
pour prendre connaissance des instructions permettant de créer une 
disquette de réinitialisation des mots de passe, cliquez sur &lt;b&gt;Rubriques
          connexes&lt;/b&gt;.&lt;br /&gt;

&lt;/blockquote&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://computer-ast.blogspot.com/feeds/3038458735832985666/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9020370651846000084/3038458735832985666' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/3038458735832985666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/3038458735832985666'/><link rel='alternate' type='text/html' href='http://computer-ast.blogspot.com/2013/01/mot-de-passe-oublie.html' title='Mot de passe oublié '/><author><name>abdessamad</name><uri>http://www.blogger.com/profile/05406414270854404188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9020370651846000084.post-8795579841777702055</id><published>2013-01-31T12:09:00.003-08:00</published><updated>2013-01-31T12:09:41.875-08:00</updated><title type='text'>Créer une disquette de démarrage [Windows XP]</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;img alt=&quot;&quot; src=&quot;http://www.vulgarisation-informatique.com/images/disquette_rotation.jpg&quot; /&gt;&lt;br /&gt;

Voici l&#39;étape à suivre pour créer une disquette de démarrage qui vous servira à démarrer la console en cas de problème.
&lt;br /&gt;

Insérez une disquette (qui sera la future disquette de démarrage) 
dans le lecteur. Allez dans le poste de travail et faites une clic droit
 sur le lecteur de disquettes. Choisissez &quot;formater&quot;. &lt;br /&gt;
Vous avez un écran ressemblant à ceci normalement :&lt;br /&gt;

&lt;div class=&quot;c&quot;&gt;
&lt;img alt=&quot;&quot; src=&quot;http://www.vulgarisation-informatique.com/images/disquette_demarrage_xp.gif&quot; /&gt;&lt;/div&gt;
Cochez la case &quot;créer une disquette de démarrage MS-DOS&quot; et cliquez sur Ok.&lt;br /&gt;

Voilà, votre disquette de démarrage est terminée.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://computer-ast.blogspot.com/feeds/8795579841777702055/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9020370651846000084/8795579841777702055' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/8795579841777702055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/8795579841777702055'/><link rel='alternate' type='text/html' href='http://computer-ast.blogspot.com/2013/01/creer-une-disquette-de-demarrage.html' title='Créer une disquette de démarrage [Windows XP]'/><author><name>abdessamad</name><uri>http://www.blogger.com/profile/05406414270854404188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9020370651846000084.post-3365770672827353405</id><published>2013-01-31T12:08:00.003-08:00</published><updated>2013-01-31T12:08:30.653-08:00</updated><title type='text'>Nettoyer Windows : supprimez tous les programmes et fichiers inutiles</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Windows est très gourmand en espace disque et provoque un désordre dans
tout le PC. Pour bénéficier du maximum d&#39;espace sur votre disque dur et
accélérer votre PC, il n&#39;est pas inutile de le nettoyer en profondeur. &lt;br /&gt;

Voici comment procéder :&lt;br /&gt;

&lt;div class=&quot;rouge&quot;&gt;
&lt;b&gt;(le texte noté en gras et en rouge est à répéter
pour tous les lecteurs du poste de travail).&lt;/b&gt;&lt;/div&gt;
Tout d&#39;abord, rendez vous dans le poste de travail. Sélectionnez le lecteur
C: et faites un clic avec le bouton droit de la souris. Cliquez ensuite sur
&quot;propriétés&quot;. Vous vous retrouvez face à cet écran :&lt;br /&gt;

&lt;div class=&quot;c&quot;&gt;
&lt;img alt=&quot;propriétés du disque&quot; src=&quot;http://www.vulgarisation-informatique.com/images/nettoyage_etape_2.gif&quot; /&gt;&lt;/div&gt;
Cliquez sur &quot;nettoyage de disque&quot;. Une nouvelle
fenêtre apparaît : vous êtes dans l&#39;utilitaire qui permet de nettoyer le
disque dur. &lt;span class=&quot;rouge&quot;&gt;&lt;b&gt;Cochez toutes les cases qui se trouvent
dans le cadre &quot;Fichier à supprimer :&quot; puis cliquez sur ok. Répondez
&quot;oui&quot; à la boîte de dialogue qui s&#39;affiche.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;

&lt;div class=&quot;c&quot;&gt;
&lt;img alt=&quot;nettoyage de disque&quot; src=&quot;http://www.vulgarisation-informatique.com/images/nettoyage_etape_3.gif&quot; /&gt;&lt;/div&gt;
Revenez à la fenêtre du nettoyage de disque et cliquez ensuite
sur l&#39;onglet &quot;autres options&quot;. Ces options sont les plus importantes
et permettent de gagner énormément d&#39;espace disque : &lt;br /&gt;

&lt;div class=&quot;c&quot;&gt;
&lt;img alt=&quot;Nettoyage de disque - options avancées&quot; src=&quot;http://www.vulgarisation-informatique.com/images/nettoyage_etape_4.gif&quot; /&gt;&lt;/div&gt;
Certains composants de Windows sont cachés et ne peuvent être
supprimés sans la modification d&#39;un fichier. Cliquez sur &quot;démarrer&quot;,
puis sur &quot;rechercher&quot; et indiquez dans la zone de recherche le fichier
&quot;sysoc.inf&quot;. Le fichier se trouve dans le répertoire
&quot;C:\windows\inf&quot;. Cochez dans les préférences les cases qui
permettent de rechercher dans les fichiers cachés et les fichiers système. Une
fois ce fichier ouvert (dans le bloc notes), cliquez sur &quot;édition&quot;,
puis &quot;remplacer&quot;. Une nouvelle fenêtre apparaît. Dans la case
&quot;Rechercher :&quot;, indiquez &quot;hide&quot; et dans la case
&quot;Remplacer par :&quot;, mettez &quot;*&quot;. Cliquez sur remplacer. Les
modifications sont apportées au fichier. Cliquez sur &quot;fichier&quot;, puis
sur &quot;enregistrer&quot;. Vous pouvez fermer le bloc notes. Revenez à la
fenêtre du nettoyage de disque. Dans la case &quot;Composants Windows&quot;,
cliquez sur &quot;Nettoyer&quot;. Vous vous retrouvez face à cette fenêtre :&lt;br /&gt;

&lt;div class=&quot;c&quot;&gt;
&lt;img alt=&quot;Composants de Windows&quot; src=&quot;http://www.vulgarisation-informatique.com/images/nettoyage_etape_5.gif&quot; /&gt;&lt;/div&gt;
Sélectionnez &quot;Accessoires et utilitaires&quot; et cliquez
sur &quot;détails&quot;. Décochez les composants dont vous n&#39;avez pas besoin.
Décochez ensuite les autres accessoires tels que : &quot;MSN explorer&quot;,
&quot;Service d&#39;indexation&quot;, &quot;Windows Messenger&quot;.&lt;br /&gt;

Cliquez ensuite sur suivant et revenez à la fenêtre du
nettoyage de disque. Dans la case &quot;Programmes installés&quot;, cliquez sur
&quot;nettoyer&quot;. L&#39;écran que vous voyez devrait être similaire à
celui-ci :&lt;br /&gt;

&lt;div class=&quot;c&quot;&gt;
&lt;img alt=&quot;Ajout/suppression de programmes&quot; src=&quot;http://www.vulgarisation-informatique.com/images/nettoyage_etape_6.gif&quot; /&gt;&lt;/div&gt;
Pour chaque programme que vous n&#39;avez pas besoin, sélectionnez
le et cliquez sur &quot;supprimer&quot;. Répétez l&#39;opération autant de fois
que nécessaire. &lt;b&gt;&lt;span class=&quot;rouge&quot;&gt;Revenez à la fenêtre du nettoyage de
disque et dans la case &quot;Restauration du système&quot;, cliquez sur
&quot;Nettoyer&quot;. Répondez &quot;oui&quot; à la boîte de dialogue qui
s&#39;affiche. &lt;/span&gt;&lt;/b&gt;Faites ensuite un clic droit sur le bouton démarrer, et
cliquez sur &quot;explorer&quot;. Rendez vous tout d&#39;abord dans le dossier
&lt;strong&gt;C:\WINDOWS\Help\Tours&lt;/strong&gt;. Supprimez tous les fichiers et dossiers
résiduels. Un seul dossier restera : &lt;strong&gt;mmTour&lt;/strong&gt;, qui refuse de se
supprimer. Rendez vous ensuite au dossier parent, celui nommé &lt;strong&gt;Help&lt;/strong&gt;.
Ici se trouvent les fichiers d&#39;aide de Windows, au format .hlp et .chm. Vous
pouvez supprimer les fichiers portant cette extension si vous ne vous servez pas
de l&#39;aide de vos logiciels, ni de celle de Windows.&lt;br /&gt;

&lt;div class=&quot;c&quot;&gt;
&lt;img alt=&quot;&quot; src=&quot;http://www.vulgarisation-informatique.com/images/nettoyage_etape_7.gif&quot; /&gt;&lt;/div&gt;
Rendez vous ensuite dans le répertoire temporaire en tapant
dans la barre d&#39;adresses &lt;b&gt;%temp%&lt;/b&gt;. Appuyez sur la touche
&quot;Entrée&quot;. Ce dossier contient les fichiers normalement utilisés par
les applications et supprimés dès qu&#39;il n&#39;y en a plus besoin. En réalité il
reste toujours des fichiers dans ce dossier si l&#39;application a planté ou si
elle est mal conçue. Cliquez ensuite sur entrée et supprimez tous les dossiers
et fichiers. Voilà ! vous devriez avoir normalement gagné plusieurs dizaines
de méga octets sur votre disque.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://computer-ast.blogspot.com/feeds/3365770672827353405/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9020370651846000084/3365770672827353405' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/3365770672827353405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/3365770672827353405'/><link rel='alternate' type='text/html' href='http://computer-ast.blogspot.com/2013/01/nettoyer-windows-supprimez-tous-les.html' title='Nettoyer Windows : supprimez tous les programmes et fichiers inutiles'/><author><name>abdessamad</name><uri>http://www.blogger.com/profile/05406414270854404188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9020370651846000084.post-5399194890987336800</id><published>2013-01-31T12:07:00.002-08:00</published><updated>2013-01-31T12:07:27.572-08:00</updated><title type='text'>Créer un point de restauration système</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Créer un point de restauration système permet, le cas échéant, de 
revenir à une configuration telle qu&#39;elle se trouve au jour où le point à
 été créé. &lt;br /&gt;
Nous aurons besoin de l&#39;outil de Windows disponible ici :&lt;br /&gt;
&lt;div class=&quot;rouge&quot;&gt;
&lt;b&gt;Menu démarrer/programmes/accessoires/outils système/restauration système&lt;/b&gt;&lt;/div&gt;
Voici l&#39;écran d&#39;accueil du programme :&lt;br /&gt;
&lt;div class=&quot;c&quot;&gt;
&lt;img alt=&quot;Restauration système&quot; src=&quot;http://www.vulgarisation-informatique.com/images/restauration_1.JPG&quot; /&gt;&lt;/div&gt;
Trois
 options sont disponibles. Celle qui nous intéresse est &#39;Créer un point 
de restauration&#39;. Sélectionnez cette option et cliquez sur suivant.&lt;br /&gt;
Une
 autre page apparaît. Vous devez entrer une description de la 
restauration. Entrez une description et cliquez sur créer. Un descriptif
 s&#39;affiche. Cliquez ensuite sur démarrage, puis annuler. Votre point de
     restauration à été créé. Il vous servira par la suite à restaurer 
votre système tel qu&#39;il est maintenant.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://computer-ast.blogspot.com/feeds/5399194890987336800/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9020370651846000084/5399194890987336800' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/5399194890987336800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/5399194890987336800'/><link rel='alternate' type='text/html' href='http://computer-ast.blogspot.com/2013/01/creer-un-point-de-restauration-systeme.html' title='Créer un point de restauration système'/><author><name>abdessamad</name><uri>http://www.blogger.com/profile/05406414270854404188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9020370651846000084.post-4257524477704412823</id><published>2013-01-31T12:03:00.001-08:00</published><updated>2013-01-31T12:03:17.891-08:00</updated><title type='text'>La mise en forme conditionnelle [Excel]</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
La mise en forme conditionnelle va vous permettre de mettre en forme 
(couleur de fond, changement de police, etc) une ou plusieurs cellules 
en fonction de conditions que vous définirez. Vous pourrez par exemple 
colorier en vert toutes les cellules ayant leur valeur supérieure à 10 
et en rouge celles ayant une valeur inférieure à 0. Les possibilités 
sont infinies.&lt;br /&gt;

Pour ce tutorial, nous allons reprendre l&#39;exemple du fichier excel que nous avons pris pour le premier tutorial : &lt;a class=&quot;lb&quot; href=&quot;http://www.vulgarisation-informatique.com/tutoriel-macro-excel.php&quot;&gt;Créer une macro - Excel&lt;/a&gt;.&lt;br /&gt;

&lt;div class=&quot;c&quot;&gt;
&lt;img alt=&quot;exemple type&quot; src=&quot;http://www.vulgarisation-informatique.com/images/articles/excel_premiere_macro/etape_1.png&quot; /&gt;&lt;/div&gt;
Notre objectif sera de faire une mise en forme selon la valeur des 
chiffres de la colonne C. Spécifions des règles (une seule règle peut 
suffir, mais ici nous allons en spécifier plusieurs de manière à montrer
 un exemple) :&lt;br /&gt;

&lt;ul&gt;
&lt;li&gt;Si la valeur de la cellule se trouve comprise entre 1 et 45, la cellule deviendra rouge avec une police d&#39;écriture jaune.&lt;/li&gt;
&lt;li&gt;Si la valeur de la cellule se trouve comprise entre 46 et 70, la cellule deviendra bleue avec une police d&#39;écriture jaune.&lt;/li&gt;
&lt;li&gt;Si la valeur de la cellule se trouve comprise entre 71 et 100, la cellule deviendra verte avec une police d&#39;écriture noire.&lt;/li&gt;
&lt;/ul&gt;
Maintenant que les règles sont définies, nous allons les mettre en pratique. Sélectionnez entièrement la colonne &lt;strong&gt;C&lt;/strong&gt; en cliquant dans la liste des colonnes sur la lettre &lt;strong&gt;C&lt;/strong&gt;. Vous vous retrouvez avec un écran de ce style :&lt;br /&gt;

&lt;div class=&quot;c&quot;&gt;
&lt;img alt=&quot;Sélection de toute une colonne&quot; src=&quot;http://www.vulgarisation-informatique.com/images/articles/mise_en_forme_conditionnelle/etape_1.png&quot; /&gt;&lt;/div&gt;
Cliquez ensuite sur le menu &lt;strong&gt;Format&lt;/strong&gt; =&amp;gt; &lt;strong&gt;Mise en forme conditionnelle&lt;/strong&gt;. Une nouvelle fenêtre apparaît :&lt;br /&gt;

&lt;div class=&quot;c&quot;&gt;
&lt;img alt=&quot;choix des règles de mise en forme&quot; src=&quot;http://www.vulgarisation-informatique.com/images/articles/mise_en_forme_conditionnelle/etape_2.png&quot; /&gt;&lt;/div&gt;
Dans le cadre &lt;strong&gt;Condition1&lt;/strong&gt;, prenez l&#39;option &lt;strong&gt;La valeur de la cellule est&lt;/strong&gt; et à droit de cette option choisissez l&#39;option &lt;strong&gt;comprise entre&lt;/strong&gt;.
 Ensuite dans l’autre case à droite, vous marquez la valeur 1 et dans la
 dernière case, la valeur 45, ce qui aura pour but d&#39;activer une règle 
conditionnelle pour les valeurs comprises entre 1 et 45.&lt;br /&gt;

Nous allons maintenant spécifier la mise en forme de la cellule. Pour ce faire, cliquez sur le bouton &lt;strong&gt;Format&lt;/strong&gt; :&lt;br /&gt;

&lt;div class=&quot;c&quot;&gt;
&lt;img alt=&quot;Choix de la mise en forme de la cellule&quot; src=&quot;http://www.vulgarisation-informatique.com/images/articles/mise_en_forme_conditionnelle/etape_3.png&quot; /&gt;&lt;/div&gt;
Dans l&#39;onglet police, vous pouvez choisir la couleur du texte (prenez
 pour cette règle un jaune assez voyant) ainsi que sa mise en forme 
générale. Dans l&#39;onglet motifs, vous allez pouvoir modifier 
l&#39;arrière-plan de la cellule :&lt;br /&gt;

&lt;div class=&quot;c&quot;&gt;
&lt;img alt=&quot;Arrière plan&quot; src=&quot;http://www.vulgarisation-informatique.com/images/articles/mise_en_forme_conditionnelle/etape_4.png&quot; /&gt;&lt;/div&gt;
Choisissez ici le rouge. Cliquez sur &lt;strong&gt;Ok&lt;/strong&gt;. Cliquez ensuite sur &lt;strong&gt;Ajouter&lt;/strong&gt; pour ajouter une seconde règle conditionnelle :&lt;br /&gt;

&lt;div class=&quot;c&quot;&gt;
&lt;img alt=&quot;Ajouter une mise en forme&quot; src=&quot;http://www.vulgarisation-informatique.com/images/articles/mise_en_forme_conditionnelle/etape_5.png&quot; /&gt;&lt;/div&gt;
Vous allez pouvoir maintenant rajouter les deux règles 
conditionnelles que nous avons établies plus haut (à savoir une cellule 
bleue avec du texte jaune pour les valeurs comprises entre 46 et 70, 
ainsi que la dernière règle voulant qu&#39;une cellule ayant sa valeur 
comprise entre 71 et 100 soit sur fond vert avec du texte noir). Cliquez
 sur &lt;strong&gt;Ajouter&lt;/strong&gt; une fois que vous aurez complété la deuxième règle, pour pouvoir ajouter la dernière.&lt;br /&gt;

Si tout s&#39;est bien passé, vous devriez avoir ce résultat :&lt;br /&gt;

&lt;div class=&quot;c&quot;&gt;
&lt;img alt=&quot;Rendu final&quot; src=&quot;http://www.vulgarisation-informatique.com/images/articles/mise_en_forme_conditionnelle/etape_6.png&quot; /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://computer-ast.blogspot.com/feeds/4257524477704412823/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9020370651846000084/4257524477704412823' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/4257524477704412823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/4257524477704412823'/><link rel='alternate' type='text/html' href='http://computer-ast.blogspot.com/2013/01/la-mise-en-forme-conditionnelle-excel.html' title='La mise en forme conditionnelle [Excel]'/><author><name>abdessamad</name><uri>http://www.blogger.com/profile/05406414270854404188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9020370651846000084.post-5962467125276037169</id><published>2013-01-31T11:54:00.000-08:00</published><updated>2013-01-31T11:54:20.181-08:00</updated><title type='text'>Installer apache sous Windows</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Apache est le serveur le plus utilisé au monde. Conçu à l&#39;origine pour les
systèmes UNIX, il existe aussi pour windows. Voyons comment l&#39;installer :&lt;br /&gt;

Commencez par télécharger Apache &lt;a href=&quot;http://apache.crihan.fr/dist/httpd/binaries/win32/apache_2.0.50-win32-x86-no_ssl.msi&quot;&gt;&lt;b&gt;ici&lt;/b&gt;&lt;/a&gt;.
Ouvrez ensuite le fichier. Un écran d&#39;accueil s&#39;ouvre :&lt;br /&gt;

&lt;div class=&quot;c&quot;&gt;
&lt;img alt=&quot;Installation d&#39;apache&quot; src=&quot;http://www.vulgarisation-informatique.com/images/articles/apache/etape_1.gif&quot; /&gt;&lt;/div&gt;
Cliquez trois fois sur le bouton &lt;b&gt;Next &lt;/b&gt;(pour accepter la license et
passer la lecture du lisez-moi).&lt;br /&gt;
Vous arrivez devant cet écran :&lt;br /&gt;

&lt;div class=&quot;c&quot;&gt;
&lt;img alt=&quot;Configuration d&#39;apache&quot; src=&quot;http://www.vulgarisation-informatique.com/images/articles/apache/etape_4.gif&quot; /&gt;&lt;/div&gt;
Dans la zone &lt;b&gt;Network Domain&lt;/b&gt; indiquez l&#39;adresse IP de votre serveur (en
général la machine locale, donc 127.0.0.1). Dans la zone &lt;b&gt;Server Name&lt;/b&gt;,
indiquez &quot;localhost&quot;. Ceci vous permettra d&#39;accéder à votre serveur
en tapant ce nom dans votre barre d&#39;adresses d&#39;internet Explorer. Indiquez
ensuite un email de contact (vous pouvez mettre n&#39;importe quoi dans cette case).&lt;br /&gt;

Sélectionnez ensuite &lt;b&gt;For All Users, on Port 80, as a service --
Recommended&lt;/b&gt;, puis cliquez sur le bouton &lt;b&gt;Next.&lt;/b&gt;&lt;br /&gt;

&lt;div class=&quot;c&quot;&gt;
&lt;img alt=&quot;Configuration d&#39;apache&quot; src=&quot;http://www.vulgarisation-informatique.com/images/articles/apache/etape_5.gif&quot; /&gt;&lt;/div&gt;
Sélectionnez l&#39;option &lt;b&gt;Custom&lt;/b&gt;, et cliquez sur le bouton &lt;b&gt;Next.&lt;/b&gt; &lt;br /&gt;

&lt;div class=&quot;c&quot;&gt;
&lt;img alt=&quot;Configuration d&#39;apache&quot; src=&quot;http://www.vulgarisation-informatique.com/images/articles/apache/etape_6.gif&quot; /&gt;&lt;/div&gt;
Cliquez sur &lt;b&gt;Apache Documentation&lt;/b&gt; de manière à ne pas l&#39;installer.
Vous économiserez plus de 30 Mo d&#39;espace disque. Cliquez ensuite sur &lt;b&gt;Apache
HTTP Server 2.0.50 &lt;/b&gt;puis sur le bouton &lt;b&gt;Change&lt;/b&gt; si vous souhaitez
changer le répertoire d&#39;installation. Cliquez ensuite sur le bouton &lt;b&gt;Next. &lt;/b&gt;Cliquez
ensuite sur le bouton &lt;b&gt;Install&lt;/b&gt;, puis sur le bouton &lt;b&gt;Finish.&lt;/b&gt;&lt;br /&gt;

L&#39;installation est terminée !&lt;br /&gt;

Rendez-vous dans Internet Explorer, et tapez &quot;http://localhost&quot;.
Si une page décrivant apache s&#39;affiche, c&#39;est bon ! (vous pouvez alors 
placer vos fichiers html, zip, etc... dans le dossier htdocs (du 
répertoire apache2, lui-même situé dans le répertoire d&#39;installation 
d&#39;apache), sinon recommencez
l&#39;installation.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://computer-ast.blogspot.com/feeds/5962467125276037169/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9020370651846000084/5962467125276037169' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/5962467125276037169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/5962467125276037169'/><link rel='alternate' type='text/html' href='http://computer-ast.blogspot.com/2013/01/installer-apache-sous-windows.html' title='Installer apache sous Windows'/><author><name>abdessamad</name><uri>http://www.blogger.com/profile/05406414270854404188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9020370651846000084.post-4300641057908524941</id><published>2013-01-31T11:51:00.000-08:00</published><updated>2013-01-31T11:51:00.708-08:00</updated><title type='text'>Partager des fichiers sous Windows</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Partager des fichiers sous Windows XP (avec des PC clients sous 
Windows 98/Me/2000 ou XP) peut vite devenir l&#39;enfer et il arrive souvent
 de voir des messages &quot;Accès refusé&quot; ou encore &quot;l&#39;utilisateur ne 
bénéficie pas du type de session demandé sur cet ordinateur&quot; quand ce 
n&#39;est tout simplement pas une fenêtre qui apparaît avec un mot de passe 
alors que vous n&#39;en avez jamais défini !&lt;br /&gt;

Nous allons donc apprendre ici à paramétrer correctement Windows XP 
pour qu&#39;il permette un partage de fichiers dans les meilleures 
conditions, sans messages d&#39;erreurs. La première chose à faire lorsque 
l&#39;on veut partager des fichiers, est paradoxalement de désactiver le 
partage de fichiers simple ! Je sais, ce n&#39;est normalement pas logique, 
mais vous verrez au fur et à mesure de l&#39;utilité d&#39;une telle mesure. 
Pour désactiver le partage de fichiers simple, allez dans le poste de 
travail, puis cliquez sur le menu &lt;strong&gt;outils =&amp;gt; options des dossiers&lt;/strong&gt;. Cliquez ensuite sur l&#39;onglet &lt;strong&gt;Affichage&lt;/strong&gt;, puis décochez &lt;strong&gt;Utiliser le partage de fichiers simple (recommandé)&lt;/strong&gt;. Cliquez ensuite sur Ok. &lt;br /&gt;

&lt;div class=&quot;c&quot;&gt;
&lt;img alt=&quot;Désactiver le partage de fichiers simple&quot; src=&quot;http://www.vulgarisation-informatique.com/images/articles/partage_fichiers/etape1.gif&quot; /&gt;&lt;/div&gt;
Une fois ceci fait, il va falloir partager proprement dit les 
dossiers ou fichiers de votre choix. Nous allons utiliser par défaut le 
répertoire &lt;strong&gt;documents partagés&lt;/strong&gt; de Windows qui se situe ici : &lt;strong&gt;C:\Documents and Settings\All Users\Documents&lt;/strong&gt;.
 Il s&#39;agit d&#39;un choix arbitraire, vous pouvez tout à fait utiliser un 
autre dossier de partage situé n&#39;importe où sur votre disque dur, la 
procédure sera la même.&lt;br /&gt;

&lt;div class=&quot;c&quot;&gt;
&lt;img alt=&quot;Poste de travail&quot; src=&quot;http://www.vulgarisation-informatique.com/images/articles/partage_fichiers/etape2.gif&quot; /&gt;&lt;/div&gt;
Pour que les autres utilisateurs du réseau voient votre dossier 
partagé, il va falloir lui attribuer des autorisations spéciales. Faites
 un clic droit sur ce dossier, puis cliquez sur &lt;strong&gt;Propriétés&lt;/strong&gt;, puis sur l&#39;onglet &lt;strong&gt;Partage&lt;/strong&gt;. Vous arrivez devant une fenêtre de ce style :&lt;br /&gt;

&lt;div class=&quot;c&quot;&gt;
&lt;img alt=&quot;Options de partage&quot; src=&quot;http://www.vulgarisation-informatique.com/images/articles/partage_fichiers/etape3.gif&quot; /&gt;&lt;/div&gt;
Sélectionnez la case Partager ce dossier, et attribuez un nom (de 
préférence faisant moins de 12 caractères, mais bon ce n&#39;est pas une 
obligation si tous vos postes sont sous XP ou 2000). Il va maintenant 
falloir attribuer des autorisations d&#39;accès. Cliquez sur le bouton &lt;strong&gt;Autorisations&lt;/strong&gt;. Une fenêtre comme celle-ci s&#39;ouvre alors :&lt;br /&gt;

&lt;div class=&quot;c&quot;&gt;
&lt;img alt=&quot;Autorisations&quot; src=&quot;http://www.vulgarisation-informatique.com/images/articles/partage_fichiers/etape4.gif&quot; /&gt;&lt;/div&gt;
Par défaut les utilisateurs qui accèdent à vos dossiers de partage seront notés comme étant &lt;strong&gt;Invité&lt;/strong&gt;.
 Il va donc falloir leur permettre d&#39;accéder aux ressources mises à leur
 disposition. Pour ce faire, cliquez sur Ajouter, puis dans la zone de 
texte, tapez &lt;strong&gt;Invité&lt;/strong&gt;. Cliquez ensuite sur Ok.&lt;br /&gt;

&lt;div class=&quot;c&quot;&gt;
&lt;img alt=&quot;Ajout des invités dans la liste des autorisations&quot; src=&quot;http://www.vulgarisation-informatique.com/images/articles/partage_fichiers/etape5.gif&quot; /&gt;
&lt;/div&gt;
Si tout va bien, vous avez maintenant une fenêtre devant vous qui ressemble à ça :&lt;br /&gt;

&lt;div class=&quot;c&quot;&gt;
&lt;img alt=&quot;Autorisations&quot; src=&quot;http://www.vulgarisation-informatique.com/images/articles/partage_fichiers/etape6.gif&quot; /&gt;&lt;/div&gt;
Sélectionnez le compte &quot;Invité&quot; puis dans la liste des autorisations,
 vous pouvez maintenant cocher &quot;Lecture&quot; pour que les utilisateurs 
distants puissent voir vos fichiers, ainsi que &quot;Modification&quot; si vous 
souhaitez qu&#39;ils puissent supprimer ou écraser vos fichiers. Une fois 
ceci fait, cliquez sur Ok, puis sur l&#39;onglet &quot;Sécurité&quot;. Il va 
maintenant falloir réitérer les mêmes opérations (cliquer sur Ajouter, 
taper &quot;Invité&quot;, cliquer sur ok puis attribuer des droits).&lt;br /&gt;

&lt;div class=&quot;c&quot;&gt;
&lt;img alt=&quot;Autorisations NTFS&quot; src=&quot;http://www.vulgarisation-informatique.com/images/articles/partage_fichiers/etape7.gif&quot; /&gt;&lt;/div&gt;
Une fois tout ceci fait, cliquez sur Ok. Le dossier apparaît 
désormais avec une main en dessous, signifiant qu&#39;il est partagé. Dans 
le meilleur des mondes, il nous aurait fallu nous arrêter maintenant 
pour que tout fonctionne. Oui, mais malheureusement, les messages 
d&#39;erreurs d&#39;impossibilité d&#39;accès seront présents si on s&#39;arrête là. Il 
va donc falloir aller dans les méandres de Windows pour aller rajouter 
des autorisations d&#39;accès via le réseau pour les utilisateurs identifiés
 comme &quot;Invité&quot;. Pour ce faire, il va falloir aller dans la stratégie de
 groupe de Windows. Cliquez sur &lt;strong&gt;démarrer =&amp;gt; panneau de configuration =&amp;gt; outils d&#39;administration =&amp;gt; stratégie de sécurité locale&lt;/strong&gt;. Déroulez à gauche &lt;strong&gt;Stratégies locales&lt;/strong&gt;, puis cliquez sur &lt;strong&gt;Attribution des droits utilisateur&lt;/strong&gt;. Vous arrivez devant une fenêtre de ce style :&lt;br /&gt;

&lt;div class=&quot;c&quot;&gt;
&lt;img alt=&quot;Stratégie de sécurité locale&quot; src=&quot;http://www.vulgarisation-informatique.com/images/articles/partage_fichiers/etape8.gif&quot; /&gt;&lt;/div&gt;
L&#39;option qui nous intéresse est la première, intitulée &lt;strong&gt;Accéder à cet ordinateur depuis le réseau&lt;/strong&gt;. Double-cliquez dessus. Vous arrivez devant une fenêtre de ce style :&lt;br /&gt;

&lt;div class=&quot;c&quot;&gt;
&lt;img alt=&quot;Autorisations d&#39;accès au réseau&quot; src=&quot;http://www.vulgarisation-informatique.com/images/articles/partage_fichiers/etape9.gif&quot; /&gt;&lt;/div&gt;
Si la mention &quot;Invité&quot; n&#39;apparaît pas, cliquez sur Ajouter un utilisateur ou un groupe. Cliquez sur &lt;strong&gt;Avancé&lt;/strong&gt; puis sur &lt;strong&gt;Rechercher&lt;/strong&gt;. Sélectionnez ensuite &lt;strong&gt;Invité&lt;/strong&gt;
 puis cliquez deux fois sur Ok. Vérifiez que l&#39;option &quot;Refuser l&#39;accès à
 cet ordinateur depuis le réseau&quot; ne comporte pas la mention &quot;Invité&quot; 
puis fermez la fenêtre. Maintenant, vos documents sont visibles des 
autres ordinateurs du réseau et la procédure est terminée.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://computer-ast.blogspot.com/feeds/4300641057908524941/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9020370651846000084/4300641057908524941' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/4300641057908524941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/4300641057908524941'/><link rel='alternate' type='text/html' href='http://computer-ast.blogspot.com/2013/01/partager-des-fichiers-sous-windows.html' title='Partager des fichiers sous Windows'/><author><name>abdessamad</name><uri>http://www.blogger.com/profile/05406414270854404188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9020370651846000084.post-2313054988317559828</id><published>2013-01-31T11:49:00.002-08:00</published><updated>2013-01-31T11:49:12.430-08:00</updated><title type='text'>Partager sa connexion internet</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Le partage d&#39;une connexion internet sous Windows XP est très simple. 
Nous supposerons que votre réseau local est déjà créé. Si votre réseau 
n&#39;est pas encore créé, vous pouvez regarder cet article : &lt;a class=&quot;lb&quot; href=&quot;http://www.vulgarisation-informatique.com/creer-reseau-local.php&quot;&gt;Tutorial de création d&#39;un réseau local&lt;/a&gt;.&lt;br /&gt;

Une fois votre réseau créé, il nous reste à partager la connexion internet proprement dite. Si vous avez appliqué quelques &lt;a class=&quot;lb&quot; href=&quot;http://www.vulgarisation-informatique.com/astuces.php&quot;&gt;astuces&lt;/a&gt;
 disponibles sur le site pour rendre votre ordinateur plus rapide, le 
partage de connexion pourra se faire avec quelques difficultés 
supplémentaires. Nous irons donc voir que tout va bien au niveau des 
paramètres du système d&#39;exploitation.&lt;br /&gt;

&lt;div class=&quot;s&quot;&gt;
Vérification des paramètres du système d&#39;exploitation :&lt;/div&gt;
&lt;div style=&quot;margin-left: 30px;&quot;&gt;
Il s&#39;agit surtout de vérifier que les &lt;a class=&quot;lb&quot; href=&quot;http://www.vulgarisation-informatique.com/services.php&quot;&gt;services&lt;/a&gt;
 dont a besoin le partage de connexion peuvent être lancés à tout moment
 par le système d&#39;exploitation. Pour ce faire, cliquez sur &lt;strong&gt;démarrer&lt;/strong&gt;, &lt;strong&gt;exécuter&lt;/strong&gt; puis tapez &lt;strong&gt;services.msc&lt;/strong&gt;. Cliquez sur &lt;strong&gt;Ok&lt;/strong&gt;, une fenêtre ressemblant à celle-ci devrait apparaître :&lt;/div&gt;
&lt;div class=&quot;c&quot;&gt;
&lt;img alt=&quot;services&quot; src=&quot;http://www.vulgarisation-informatique.com/images/articles/partage_connexion_xp/etape_1.gif&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;margin-left: 30px;&quot;&gt;
Cherchez le service nommé &lt;strong&gt;Client DHCP&lt;/strong&gt; et double-cliquez dessus. Dans la zone intitulée &lt;strong&gt;Type de démarrage&lt;/strong&gt; sélectionnez la valeur &lt;strong&gt;Automatique&lt;/strong&gt;.&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;c&quot;&gt;
&lt;img alt=&quot;services - activation d&#39;un service&quot; src=&quot;http://www.vulgarisation-informatique.com/images/articles/partage_connexion_xp/etape_2.gif&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;margin-left: 30px;&quot;&gt;
 Si le service n&#39;est pas lancé, cliquez ensuite sur le bouton &lt;strong&gt;Démarrer&lt;/strong&gt;. Cliquez sur &lt;strong&gt;Ok&lt;/strong&gt; puis procédez de la même façon pour le service intitulé &lt;strong&gt;Pare feu Windows / Partage de connexion internet&lt;/strong&gt;.&lt;/div&gt;
&lt;div style=&quot;margin-left: 30px;&quot;&gt;
Les services sont maintenant configurés 
correctement pour accepter le partage de connexion internet. Nous allons
 maintenant paramétrer votre connexion internet pour la partager.&lt;/div&gt;
&lt;div class=&quot;s&quot;&gt;
Partage de la connexion proprement dit - PC hôte :&lt;/div&gt;
&lt;div style=&quot;margin-left: 30px;&quot;&gt;
Cliquez sur le menu démarrer, puis sur &lt;strong&gt;Connexions réseau&lt;/strong&gt;. Vous arrivez devant une fenêtre ressemblant à celle-ci : &lt;/div&gt;
&lt;div class=&quot;c&quot;&gt;
&lt;img alt=&quot;Connexions réseau&quot; src=&quot;http://www.vulgarisation-informatique.com/images/articles/partage_connexion_xp/etape_3.gif&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;margin-left: 30px;&quot;&gt;
Faites un clic droit sur votre connexion internet qui sera utilisée pour le partage, cliquez sur &lt;strong&gt;Propriétés&lt;/strong&gt;. Dans la fenêtre qui s&#39;ouvre, cliquez sur l&#39;onglet &lt;strong&gt;Avancé&lt;/strong&gt;. Vous arrivez devant une fenêtre ressemblant à celle-ci :&lt;/div&gt;
&lt;div class=&quot;c&quot;&gt;
&lt;img alt=&quot;Partage de connexion internet&quot; src=&quot;http://www.vulgarisation-informatique.com/images/articles/partage_connexion_xp/etape_4.gif&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;margin-left: 30px;&quot;&gt;
Cochez les deux cases intitulées respectivement &lt;strong&gt;Autoriser d&#39;autres ordinateurs du réseau à se connecter via la connexion internet de cet ordinateur&lt;/strong&gt;, et &lt;strong&gt;Etablir une connexion d&#39;accès à distance chaque fois qu&#39;un ordinateur de mon réseau tente de se connecter à internet&lt;/strong&gt;.&lt;/div&gt;
&lt;div class=&quot;s&quot;&gt;
Partage de la connexion proprement dit - PC clients :&lt;/div&gt;
&lt;div style=&quot;margin-left: 30px;&quot;&gt;
Une fois le PC qui partagera sa connexion 
internet configuré, il faut maintenant paramétrer les PC clients, ceux 
qui bénéficieront du partage.&lt;/div&gt;
&lt;div class=&quot;s&quot; style=&quot;margin-left: 30px;&quot;&gt;
Pour Windows XP :&lt;/div&gt;
&lt;div style=&quot;margin-left: 60px;&quot;&gt;
Retournez dans la fenêtre des connexions 
réseau puis faites un clic droit sur votre connexion au réseau local. 
Cliquez ensuite sur propriétés. Vous arrivez devant un écran ressemblant
 à celui-ci :&lt;/div&gt;
&lt;div class=&quot;c&quot;&gt;
&lt;img alt=&quot;Propriétés d&#39;une connexion réseau&quot; src=&quot;http://www.vulgarisation-informatique.com/images/articles/partage_connexion_xp/etape_5.gif&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;margin-left: 60px;&quot;&gt;
Sélectionnez ensuite &lt;strong&gt;Protocole TCP / IP&lt;/strong&gt; puis cliquez sur &lt;strong&gt;Propriétés&lt;/strong&gt;. Dans la zone intitulée &lt;strong&gt;Passerelle par défaut&lt;/strong&gt;, indiquez l&#39;adresse IP du PC hôte. Sélectionnez ensuite &lt;strong&gt;Utiliser l&#39;adresse de serveur DNS suivante&lt;/strong&gt; et indiquez les &lt;a class=&quot;lb&quot; href=&quot;http://www.vulgarisation-informatique.com/dns-fai.php&quot;&gt;DNS de votre fournisseur d&#39;accès&lt;/a&gt; (si vous ne les connaissez pas mettez l&#39;adresse IP du PC hôte). La configuration du PC client est terminée.&lt;/div&gt;
&lt;div class=&quot;c&quot;&gt;
&lt;img alt=&quot;Paramètre TCP / IP&quot; src=&quot;http://www.vulgarisation-informatique.com/images/articles/partage_connexion_xp/etape_6.gif&quot; /&gt;&lt;/div&gt;
&lt;div class=&quot;s&quot; style=&quot;margin-left: 30px;&quot;&gt;
Pour Windows 98 / Me :&lt;/div&gt;
&lt;div style=&quot;margin-left: 60px;&quot;&gt;
Rendez-vous dans le panneau de configuration et double-cliquez sur l&#39;icône &lt;strong&gt;Réseau&lt;/strong&gt;. Vous arrivez devant une fenêtre ressemblant à celle-ci :&lt;/div&gt;
&lt;div class=&quot;c&quot;&gt;
&lt;img alt=&quot;Propriétés du réseau - Windows 98 / Me&quot; src=&quot;http://www.vulgarisation-informatique.com/images/articles/partage_connexion_xp/etape_7.gif&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;margin-left: 60px;&quot;&gt;
Cliquez sur l&#39;onglet &lt;strong&gt;Identification&lt;/strong&gt; et notez le nom de votre ordinateur.&lt;/div&gt;
&lt;div class=&quot;c&quot;&gt;
&lt;img alt=&quot;Nom de l&#39;ordinateur&quot; src=&quot;http://www.vulgarisation-informatique.com/images/articles/partage_connexion_xp/etape_8.gif&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;margin-left: 60px;&quot;&gt;
Retournez ensuite sur l&#39;onglet Configuration
 puis sélectionnez &quot;TCP / IP&quot; et cliquez sur Paramètres. Cliquez ensuite
 sur l&#39;onglet passerelle. Vous arrivez devant un écran comme celui-ci :&lt;/div&gt;
&lt;div class=&quot;c&quot;&gt;
&lt;img alt=&quot;Paramétrage de la passerelle internet&quot; src=&quot;http://www.vulgarisation-informatique.com/images/articles/partage_connexion_xp/etape_9.gif&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;margin-left: 60px;&quot;&gt;
Indiquez dans la zone intitulée &lt;strong&gt;nouvelle passerelle&lt;/strong&gt; l&#39;adresse IP du PC hôte, puis cliquez sur &lt;strong&gt;Ajouter&lt;/strong&gt;. Cliquez ensuite sur l&#39;onglet &lt;strong&gt;Configuration DNS&lt;/strong&gt;. Un écran de ce style apparaît :&lt;/div&gt;
&lt;div class=&quot;c&quot;&gt;
&lt;img alt=&quot;Configuration DNS&quot; src=&quot;http://www.vulgarisation-informatique.com/images/articles/partage_connexion_xp/etape_10.gif&quot; /&gt;&lt;/div&gt;
&lt;div style=&quot;margin-left: 60px;&quot;&gt;
Sélectionnez Activer DNS. Dans la zone Hôte,
 indiquez le nom que vous avez noté tout à l&#39;heure. Dans la zone Ordre 
de recherche DNS, indiquez un &lt;a class=&quot;lb&quot; href=&quot;http://www.vulgarisation-informatique.com/dns-fai.php&quot;&gt;DNS de votre fournisseur d&#39;accès&lt;/a&gt;
 puis cliquez sur Ajouter. Faites de même avec le second DNS fourni par 
votre fournisseur d&#39;accès. Cliquez ensuite sur Ok, fermez tout et 
redémarrez votre PC.&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://computer-ast.blogspot.com/feeds/2313054988317559828/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/9020370651846000084/2313054988317559828' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/2313054988317559828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9020370651846000084/posts/default/2313054988317559828'/><link rel='alternate' type='text/html' href='http://computer-ast.blogspot.com/2013/01/partager-sa-connexion-internet.html' title='Partager sa connexion internet'/><author><name>abdessamad</name><uri>http://www.blogger.com/profile/05406414270854404188</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>