Actual IP Address

Sometimes, for some reason, you need to know what your IP address is.

IP addresses can be static or dynamic. A static IP address is the same all time.

A dynamic IP address changes by a DHCP server, and for this change there is no fixed time interval and it can happen tomorrow, in one month or in a year.


So what is your actual IP address? It is this one:



Clear cache

I find myself repeatedly telling my clients to clear their cache and browsing history when I’m developing or just updating a website.

Why? Here’s a little explainer. Your internet browser (Chrome, Firefox, Safari, IE) stores some files from your website to your computer or to your mobile device.

Files that are cached locally include any documents that make up a website, such as html files, CSS style sheets, JavaScript scripts – as well as graphic images and other multimedia content.

What this means is, when you visit your site again some files are not downloaded ‘fresh’. So you see parts of your site which have not been updated, even though they actually have been.

So, to see this fresh content, it’s vital to clear the cache and browsing history. It makes your life easier – and mine.

How to clear the cache

You can use Google to find out, or just click this link:

Sometimes I do implement codes for forcing fresh content, like this:

<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />

But these codes should not be implemented permanently. This is because your website will have a slower loading time, thanks to everything having to be downloaded again.
I hope this is helpful.

Many time people ask me for help with their slow computer. And many times it’s too late for help when you have slow hardware. When you go to shop to buy a new computer, you don’t need to be an expert, just check a few basic things. Then the decision between hundreds of options will be simple for you. And this article is dedicated to average users, not gamers: I won’t be talking about overclocking nor water cooling.

Desktop or laptop

This is simple: do you plan carry it? Will you want faster hardware in it in the future?
Computer (desktop version) can be easily upgraded with almost everything; in a laptop just memory and hard drive disk can be upgraded.

Processor known as CPU

Choose device with Intel processors i5 and higher (i7, i9) and forget about cheaper two cores processors nowadays.

Graphic Card known as GPU

This is important mainly for gamers, because computer games need a strong and powerful GPU. If you are not a gamer, an integrated graphic card as part of CPU (processor) is powerful enough for most of works, including 4K movies.

Memory RAM

The minimum everywhere is nowadays 4 GB. Look for computer with RAM 8 GB – this is the new standard. Ideal is 16 GB.

Hard Drive Disk

Quite often this part makes the computer slow. If you want your computer to be really fast, I mean really quickly opening everything, choose your computer with SSD disk.

If you have a limited budget, buy SSD disk separately. The system can be cloned (identical copy) from standard disk to SSD and SSD disk can be inserted to your new computer. I can tell you, once you will try SSD disk, you will never go back!

There are not many technical details to remember, just:
processor i5+, memory 8GB+, SSD hard drive disk. And you can’t go wrong.

One extra recommendation: always prefer hardware specifications before design. I am sure you don’t want end up with nice but sloooooooow computer.


I am sure everybody wants have a superfast computer. The majority of computer motherboards are supporting RAID.

RAID stands for Redundant Array of Independent Disks. One of the known modes is the RAID 0.

You will need two identical hard drive disks, the same brand, the same model, the same size. Your data will be stripped onto this two HDD. You will see this drives merged into one.

RAID0 means that any file (requested by operating system or you) will be written in 50% on first HDD and 50% on second HDD. Files are stored in blocks, you have to decide how big the blocks will be, so yes – we have to set stripe size.

Classic HDD strip size

If you are using classic hard drive disk, use 32kb stripping size for computer used for general purposes, lots of images, mp3 files, etc.
If you are using computer with big files, for example video editing, set the stripe size to 128kb.

Fast SSD strip size.

The right SSD strip size has to be much smaller on SSD drives because of its technology, even you work with big files. The best speed results are when strip size is 16kb or 8kb.

Not working internet connection

Fixing a not working connection is quite easy and simple if the problem is at home. Let’s be more positive, while we are frustrated, instead of the word ‘problem’ we should be using the word ‘issue’.

So how to fix an issue when the internet connection is not working or it has weird behaviour? I promise to keep the long story short and in ‘human’ language. As always.

Solution One: check cables, restart your computer

This is the simplest one. Turn off the computer. Check to see if all cables are connected. To avoid a ‘cold’ connection, you can unplug and plug in all the cable connectors. Don’t be too soft, don’t be too rough. When you will plug the connector in, you will hear a click. Turn on the computer.

Solution Two: restart your network device

A network device is your modem. It can have a built-in WiFi. It is a small box with a few lit LED diodes. Usually it is under your table covered by dust… Turn off your computer.

Unplug the power cable from the modem. Keep it unplugged for at least 30 sec. Plug the power cable back. Why? The modem will restart, but keep the settings. And why wait? The modem has a few electrolytic capacitors and they are charged with power. We need to erase the temporary memory in the modem (RAM), also the modem has its own small operating system.

Plug in the power cable and wait 1-5 minutes for reconnection. The time is dependent on the device and network typology. When your modem is connected to the network, turn on your computer.
It is standard to restart a modem 1-4 times per month. It is also dependent on the ‘cables’ outside. Some people just don’t restart the modem at all, because an operator (internet provider) can restart it remotely.

Solution Three: Using a command prompt

This is a little bit more sophisticated. But it really often helps. Let’s get ready: clear internet history, browsing cache, close all applications if you have opened some, restart computer.

Open command prompt. In start menu type ‘cmd’. In search result you will see the app Command Prompt with black window icon. Click on it with right button, and then click on ‘Run as administrator’.

Type in the black window the command which will clear the DNS resolver cache (translating web addresses to IP addresses and opposite):

ipconfig /flushdns [and press Enter]

Now we will reset Winsock catalogue. Type two commands:

netsh [and press Enter]
winsock [and press Enter]

You will see both commands like:

netsh winsock>

Now type ‘reset’ and press Enter. You can type ‘exit’ and press enter, 2 times, or just close the window. Restart your computer.

Use the mentioned solutions in the order as they are written! 90% of all issues are successfully resolved. 10% has to be resolved by internet providers.

Perhaps you are wondering what is ‘Winsock’

Winsock is shortened from Windows Sockets API – a specification that defines how Windows network software should access network services, especially over TCP/IP and this is the reason why it is important for us to reset it sometime over CMD.

Using a command line

Sometimes the new domain won’t work. Sometimes the domain won’t work after DNS records changes. Now I will show you how to make it work.

Using command line

The issue is local, in your computer. Keeping the story short, we will force the cache to be empty of translating names to IP addresses. And we have to do it over the command line. Maybe you will feel like a small hacker for a short time.

Search for ‘cmd’

In your computer search for CMD. Right click, and click on Run as administrator. Type in the black window

ipconfig /flushdns

See the pictures please:

Search for command line
Run cmd as administrator
Command ipconfig flushdns

Then close the window or type exit. That’s it! If DNS records are valid and refreshed your computer you will get the right address of your domain name.

Get Started Now With Shutterstock

download entire website

Yes, you can – and you should – download your entire website to your computer or smartphone and you can feel safer when you have something that you paid for.

Also it is great way how to do a backup when something will stop working or when you need to copy your entire website under different domain name or different web hosting.

How to download website

All my clients have installed a plugin which will create a file – an identical copy of your website with all images and installed plugins.

Simply login to your administration. In menu, on the left side is ‘All-in-One WP Migration’.

Page which will appear is ‘Export Site’. Click on button ‘Export to’, select file, wait and that’s all. Your website is ready for download. Simple, isn’t it?

Restoring your website

If you need restore your website, click on ‘All-in-One WP Migration’, then Backups, and you will see a list of all backups. On the end of the line you will see 3 icons: download, restore, and delete. Click on restore and just wait. Your website will be recovered.

Moving entire website to different hosting

The process is again very simple: download your backup. Install WordPress on the new hosting and also install plugin All-in-One WP Migration, activate it.

In the administration menu click on ‘All-in-One WP Migration’, then on ‘Import’. Click on button ‘Import from’, select the backup from your computer, confirm import and wait. Your entire website will be cloned into new web hosting and you are ready to go!

Making snippet

Let’s make a long story short. I will also keep it simple.

The google snippet is very important. If somebody is searching for something, the search results are snippets. Each snippet has a title and description. It means, when I develop a website and am doing a SEO (search engine optimisation), you have to provide for a google snippet:


The maximum title length is 55 characters including spaces.

The title is the most visible part, in bold font. Use important keywords. Think of marketing. Try to get the attention of your audience.


The maximum length title is 160 characters including spaces.

Provided you get the visitor’s attention, in the description will be visible what the website is about, why the visitor should click and visit your website, and what the visitor can expect. And again, use important keywords in the description.

Snippet Preview
Snippet Preview

Title and description for each site

Ideally each page of your website should have its own title and description. These are the basics.



individual wordpress language

If you are running a website in one language like me, but you need to sometimes publish the content in a different individual language over page or post and you want it SEO friendly, you have to set the correct individual language for this content.

I did some research and here is a working PHP code which has to be added into the function.php file.

The solutions below are really good if you have no plans to translate whole website.

Individual language for posts

You just have to set the new category, eg Czech Articles. So all articles in Czech Articles will have the correct Czech (or your preferred) language. Please, see the comments after “//”

function addLangMetaTag (){
$gerCatname = "Czech Articles"; //name of Czech Articles category
$postLanguage = "cs"; //language
if (is_single())
{global $post;foreach((get_the_category($post->ID)) as $category)
{if ($category->cat_name == $gerCatname)
{$postLanguage = "cs";}} //language
echo "<meta name=\"language\" content=\"" . $postLanguage . "\">";}}
add_filter( 'wp_head', 'addLangMetaTag' );

Individual language for pages

This is little bit longer and “busy looking” code for pages. You have to insert (change) the page ID and you’re ready.

function get_top_parent_page_id() {global $post;
if ($post->ancestors){return end($post->ancestors);} else {return $post->ID;}}
function addLangMetaTag ()
{$postLanguage = "en-GB";
if (is_page()) {$svPageID = get_top_parent_page_id(); // ID of parent page
if ($svPageID == "455") { // ID of the page
$postLanguage = "cs";} // czech language
echo "<meta http-equiv=\"content-language\" content=\"" . $postLanguage . "\">";}}
add_filter( 'wp_head', 'addLangMetaTag' );
function language_tagger_change_html_lang_tag()
{return "dir=\"ltr\" lang=\"" . language_tagger_determin_lang_tag() . "\"";}
function language_tagger_determin_lang_tag()
{$postLanguage = 'en-GB'; // default language
if (is_page())
{$svPageID = get_top_parent_page_id(); // ID of parent page
if ($svPageID == "455"){ // ID of the page
$postLanguage = "cs";}} // czech language
return $postLanguage;}


Tips for editing .htaccess file

I am creating and editing .htaccess files quite often, at least when I start a new WordPress project. It is very useful to manage, set up and/or protect your web site with a few code lines.

In this article you will find the most useful code snippets often used in a .htaccess file.

If something goes wrong, no problem, instead of your website you will see an ERROR500 message. No problem, just change back to the previous working .htaccess file – I guess you always do a backup, right?

About .htaccess

.htaccess is the default file name of a special configuration file. It provides commands for controlling and configuring the Apache Web Server. It controls and configures modules that can be built into the Apache installation, or included at run-time like mod_rewrite, mod_alias and mod_ssl. Well, I kept the story very short.

Redirecting for SSL certificate

When you will install a SSL certificate, you want all traffic over HTTPS. Sometimes it just works, sometimes you have to force it over a permanent redirect (301) like this:

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$$1 [R=301,L]

Redirecting, temporary and permanent

This is quite important for SEO and to let you know the search engines what have been redirected and what is the actual link. Permanent redirect is 301, temporary is 302.

So, this allows you to permanently (301) redirect your entire website to any other domain

Redirect 301 /

Redirecting temporarily (302) is good for SEO purposes when you plan to switch the website back

Redirect 302 /

Redirecting original links if they are not existing anymore, you decided to provide new or different content with different link (URL address)

Redirect 301 /olddirectory/

Allow Origin

Sometimes when you are using CDN, or loading custom fonts (or icons), you can see weird characters. To fix it, use

<FilesMatch "\.(ttf|otf|woff)$">
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"

Custom error page 404 Not found

If you created a page with link “not found” for pages which are not existing (non-valid links) you can do redirect – set up custom page. Well, nowadays most of WordPress themes has custom error page built-in.

ErrorDocument 404 errors/yournotfound/

Add Expires headers

It is very useful to set up an expiry time for files (images, attachments, scripts, etc) from the point of seo. The code with seconds for it is

<ifModule mod_expires.c>
ExpiresActive On
ExpiresDefault A432000
ExpiresByType text/css A777600
ExpiresByType image/gif A777600
ExpiresByType image/png A777600
ExpiresByType image/jpg A777600
ExpiresByType image/x-icon A777600
ExpiresByType application/x-javascript A777600
ExpiresByType text/plain A777600

If you are having frequently updated content, set it on 7 days or less, for news can be set 0. I am using for my needs 9 days, it is exactly 777600 seconds.

You can use also this for everything with one time

<ifModule mod_headers.c>
ExpiresActive On
<filesMatch ".(htm|html|css|txt|ico|gif|jpg|jpeg|png|mp4|webm|ogv|woff|eot|svg|ttf|js)$">
Header set Cache-Control "max-age=777600, public, must-revalidate"

Protecting wpconfig.php file

It is good to protect this very important configuration file by restricting access to it.

<files wp-config.php>
order allow,deny
deny from all

Extra protection against SQL injection

This should be covered by existing WordPress version, but in case you are using some extra stuff on your website, it is not a bad idea also to drop it into a .htaccess file

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2})
RewriteRule ^(.*)$ index.php [F,L]

Something small against robots

SetEnvIfNoCase User-Agent "^libwww-perl*" block_bad_bots
Deny from env=block_bad_bots

Restrict directory listing

It is nobody’s business what is on your server. Some files can be just temporary for testing etc, so it is good to prevent listing files with

Options -Indexes


IndexIgnore *

Time zone

For some purposes you want simulate different time zone you can do it with

SetEnv TZ Australia/Sydney

Full list of supported time zones is here.

Force “File Save As…” prompt

Sometime you want users to save some file which is opened by the internet browser by default. You can force the browser to “Save file as…” with a piece of code like

AddType application/octet-stream .avi .mpg .mov .pdf .xls .mp4

Gzip compression

Gzip is normaly enabled already. But if you have web hosting with a company which doesn’t care about services, you may find no gzip compression. If it is supported, you can enable it.

<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/html
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript

Protecting .htaccess file

Actually I think it is protected by server already, but an extra piece of code is good too, just in case some plugin can be infected by malware and trying to change the rules.

<files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all

Block bad bots

Bad bots are site rippers, spammers, downloaders, etc. With this code/list we will block them. Bad bots will get error page “403 Forbidden”.

RewriteEngine On 
RewriteCond %{HTTP_USER_AGENT} ^BlackWidow [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Bot\ [OR] 
RewriteCond %{HTTP_USER_AGENT} ^ChinaClaw [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Custo [OR] 
RewriteCond %{HTTP_USER_AGENT} ^DISCo [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Download\ Demon [OR] 
RewriteCond %{HTTP_USER_AGENT} ^eCatch [OR] 
RewriteCond %{HTTP_USER_AGENT} ^EirGrabber [OR] 
RewriteCond %{HTTP_USER_AGENT} ^EmailSiphon [OR] 
RewriteCond %{HTTP_USER_AGENT} ^EmailWolf [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Express\ WebPictures [OR] 
RewriteCond %{HTTP_USER_AGENT} ^ExtractorPro [OR] 
RewriteCond %{HTTP_USER_AGENT} ^EyeNetIE [OR] 
RewriteCond %{HTTP_USER_AGENT} ^FlashGet [OR] 
RewriteCond %{HTTP_USER_AGENT} ^GetRight [OR] 
RewriteCond %{HTTP_USER_AGENT} ^GetWeb! [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Go!Zilla [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Go-Ahead-Got-It [OR] 
RewriteCond %{HTTP_USER_AGENT} ^GrabNet [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Grafula [OR] 
RewriteCond %{HTTP_USER_AGENT} ^HMView [OR] 
RewriteCond %{HTTP_USER_AGENT} HTTrack [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} ^Image\ Stripper [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Image\ Sucker [OR] 
RewriteCond %{HTTP_USER_AGENT} Indy\ Library [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} ^InterGET [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Internet\ Ninja [OR] 
RewriteCond %{HTTP_USER_AGENT} ^JetCar [OR] 
RewriteCond %{HTTP_USER_AGENT} ^JOC\ Web\ Spider [OR] 
RewriteCond %{HTTP_USER_AGENT} ^larbin [OR] 
RewriteCond %{HTTP_USER_AGENT} ^LeechFTP [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Mass\ Downloader [OR] 
RewriteCond %{HTTP_USER_AGENT} ^MIDown\ tool [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Mister\ PiX [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Navroad [OR] 
RewriteCond %{HTTP_USER_AGENT} ^NearSite [OR] 
RewriteCond %{HTTP_USER_AGENT} ^NetAnts [OR] 
RewriteCond %{HTTP_USER_AGENT} ^NetSpider [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Net\ Vampire [OR] 
RewriteCond %{HTTP_USER_AGENT} ^NetZIP [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Octopus [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Offline\ Explorer [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Offline\ Navigator [OR] 
RewriteCond %{HTTP_USER_AGENT} ^PageGrabber [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Papa\ Foto [OR] 
RewriteCond %{HTTP_USER_AGENT} ^pavuk [OR] 
RewriteCond %{HTTP_USER_AGENT} ^pcBrowser [OR] 
RewriteCond %{HTTP_USER_AGENT} ^RealDownload [OR] 
RewriteCond %{HTTP_USER_AGENT} ^ReGet [OR] 
RewriteCond %{HTTP_USER_AGENT} ^SiteSnagger [OR] 
RewriteCond %{HTTP_USER_AGENT} ^SmartDownload [OR] 
RewriteCond %{HTTP_USER_AGENT} ^SuperBot [OR] 
RewriteCond %{HTTP_USER_AGENT} ^SuperHTTP [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Surfbot [OR] 
RewriteCond %{HTTP_USER_AGENT} ^tAkeOut [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Teleport\ Pro [OR] 
RewriteCond %{HTTP_USER_AGENT} ^VoidEYE [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Web\ Image\ Collector [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Web\ Sucker [OR] 
RewriteCond %{HTTP_USER_AGENT} ^WebAuto [OR] 
RewriteCond %{HTTP_USER_AGENT} ^WebCopier [OR] 
RewriteCond %{HTTP_USER_AGENT} ^WebFetch [OR] 
RewriteCond %{HTTP_USER_AGENT} ^WebGo\ IS [OR] 
RewriteCond %{HTTP_USER_AGENT} ^WebLeacher [OR] 
RewriteCond %{HTTP_USER_AGENT} ^WebReaper [OR] 
RewriteCond %{HTTP_USER_AGENT} ^WebSauger [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Website\ eXtractor [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Website\ Quester [OR] 
RewriteCond %{HTTP_USER_AGENT} ^WebStripper [OR] 
RewriteCond %{HTTP_USER_AGENT} ^WebWhacker [OR] 
RewriteCond %{HTTP_USER_AGENT} ^WebZIP [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Wget [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Widow [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Xaldon\ WebSpider [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Zeus 
RewriteRule ^.* - [F,L]

And now the best tip ever!!!

Actually it is simple: do backup, backup and backup. When something goes wrong, you can always roll back without having nervous breakdown.