# Determine the date of a webpage

There is often a need to use a webpage as a reference. So how is it possible to get the most recent date that webpage was updated?

There have been people suggesting that one might exploit the power of google and execute a specific kind of search that might reveal the date of a webpage. Like using the “inurl” trick

google.com/search?q=inurl:<webpage>


To my understanding, this trick is either outdated, or does not apply in all cases, as unfortunately in my case.

I found out that there is another trick that actually works. This includes a bit of JavaScript magic and access to the DOM, specifically the lastModified property of the document. The trick goes like this:

1. Normally open the webpage on a browser
2. Go to the address bar and type in the following javascript command and hit enter
javascript:alert(document.lastModified)


It is expected that the browser will respond with an alert box presenting the exact latest update date and time for this webpage.

*** Although Chrome and Firefox checked ok, currently there is an issue with Safari which refuses to execute a JavaScript command from the address bar (nowadays called the “smart search field”).

Apparently there is a workaround: Enable “Allow JavaScript on Smart Search Field” in the “Develop” menu of Safari (this menu is activated from Safari Preferences > Advanced)

# A basic step-by-step Linux shell-based web server installation

The following set of shell commands are among the basic steps to setup a Linux-based web server (LAMP=Linux Apache MySQL PHP). The procedure has been tested on an Ubuntu 14.04.05 Trusty Tahr (LTS) installation. Most steps and procedures are based on the tutorial found in DigitalOcean and in the linked pages.

In the commands that follow variables are shown as tags in angle brackets, like: <username>.

#### Enable ssh root access

This might be needed if there is no remote ssh access (only web console or local).

nano /etc/ssh/sshd_config
# and then restart SSH:
service ssh restart

#### Create sudo user

This is a useful user account with elevated privileges.

adduser <username>
usermod -aG sudo <username>

It might be a good idea to log in with this user account and continue…

#### Install Apache-MySQL-PHP

# make sure everything is updated.
sudo apt-get update
# install Apache
sudo apt-get install apache2
# install MySQL
sudo apt-get install mysql-server php5-mysql
# create MySQL data structure
sudo mysql_install_db
# secure the MySQL installation
sudo mysql_secure_installation
# install PHP5
sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt
# change the default file extension
sudo nano /etc/apache2/mods-enabled/dir.conf
# move the index.php at front of the list of filenames to load
sudo service apache2 restart

# install phpmyadmin package
# edit the configuration file
sudo nano /etc/apache2/apache2.conf
# and then restart the server one more time...
sudo service apache2 restart
# edit the apache configuration file of phpmyadmin
# just after: DirectoryIndex index.php
# then create the .htaccess file
# with the following contents
AuthType Basic
AuthName "Restricted Files"
Require valid-user
# and now create the htpasswd file
# ...and restart the server one more time.
sudo service apache2 restart

#### Create SSL certificate on Apache

# enable SSL
sudo a2enmod ssl
sudo service apache2 restart
# create folder to save the keys and certificates
sudo mkdir /etc/apache2/ssl
# create a self-signed SSL certificate that will expire in <days> days
sudo openssl req -x509 -nodes -days <days> -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
# set up the certificate
sudo nano /etc/apache2/sites-available/default-ssl.conf
# insert:
ServerName <server_name_or_IP>:443
# just below the ServerAdmin email entry
# also change SSLCertificateFile field to:
/etc/apache2/ssl/apache.crt
# also change SSLCertificateKeyFile field to:
/etc/apache2/ssl/apache.key
# enable the virtual host
sudo a2ensite default-ssl
sudo service apache2 reload

#### Install the FTP service

sudo apt-get install vsftpd
sudo nano /etc/vsftpd.conf
# make sure to have:
anonymous_enable=NO
local_enable=YES
write_enable=YES
# check if needed to change:
chroot_local_user=YES
sudo service vsftpd restart

#### Give folder access of apache web server files to the user

sudo apt-get install acl
sudo setfacl -m u:<username>:rwx /var/www/html

The result will be a basic setup running LAMP. The best way to access the files is through SFTP. The browsers will have HTTPS access (but the certificate will be self-signed, so the browsers will complain about it).

#### Additional/optional steps that might be handy

##### Unix user manipulation and www-data
#Add a new user to the www-data group
#Add a new user to supplementary groups called www-data and ftp:
sudo usermod -a -G www-data  <username>
#And check it:

##### WordPress-specific tweak
#Shell command to give correct access to WordPress and be able to install plug-ins and themes (and have updates)
chown -R www-data:www-data /var/www
chmod -R ug+rw /var/www


# Imagine

imagine
you are the mighty surfer
taming the waving of the sea,
but you are a glorious shimmering blob,
a single little bubble,
a transparent, refracting prism,
just hovering,
sometimes even touching
upon a wave
of an obscure origin
and flattening dark end

imagine
of what was before
and what comes next,
of things and nothings
and ideas and beliefs,
but there are only possibilities,
probabilities that collapse into necessities
a chaos ordered, determined of
uncertain origins or rhythms,
tangents upon curvatures of spaces and times
of worlds centuries apart and inches close
yet never close enough to contact,
non-perceivable assumed dimensions
under the constant cry of the eternal light

imagine
you exit to where there is no exit
just to look at what’s inside
and build more bubbles out in the nowhere
not to feel alone in the dark,
but this transforms nothing to something
by this simple given thought
and then you run back into symmetries
for a meaning all in all,
on a stage of equal weights
on which singulars are stars

imagine

# Differentiation cheat sheet

This post serves as a cheat sheet for differentiation. It just includes the most basic of the rules to be remembered when computing derivatives. First a little reminder on the notation being used in differentiation.

 Leibniz’s notation for the first derivative of a function f(x) is $\displaystyle \frac{\mathrm{d}f(x)}{\mathrm{d}x}$ Newton’s notation for the first derivative of a function f(x) is $\displaystyle \dot{f}$ Lagrange’s notation for the first derivative of a function f(x) is $\displaystyle f^\prime(x)$ Euler’s notation for the first derivative of a function f(x) is $\displaystyle D_xf(x)$ These notations are being used interchangeably and each seems to be more appropriate for some special cases, in which the mathematical expression becomes ‘clearer’ or ‘beautiful’.

In the following differentiation cheat sheet I am going to use Newton’s notation.

 Constant $\displaystyle f(x) = c \Rightarrow \dot{f} = 0$ Constant times a function $\displaystyle f(x) = c \cdot u(x) \Rightarrow \dot{f} = c \cdot \dot{u}$ Power $\displaystyle f(x) = x^n \Rightarrow \dot{f} = nx^{n-1}$ Constant times a power $\displaystyle f(x) = c \cdot x^n \Rightarrow \dot{f} = cnx^{n-1}$ Sum of functions $\displaystyle f(x) = u(x)+v(x) \Rightarrow \dot{f} = \dot{u} + \dot{v}$ Product of functions $\displaystyle f(x) = u(x) \cdot v(x) \Rightarrow \dot{f} = v \dot{u} + u \dot{v}$ Quotient of functions $\displaystyle f(x) = \frac{u(x)}{v(x)} \Rightarrow \dot{f} = \frac{v \dot{u}-u\dot{v}}{v^2}$ Chain rule $\displaystyle f(x) = u(v(x)) \Rightarrow \dot{f} = \dot{v} \cdot \dot{u}(v)$ Chain rule special $\displaystyle f(x) = [u(x)]^2 \Rightarrow \dot{f} = n[u(x)]^{n-1}\dot{u}$ Exponent $\displaystyle f(x) = e^{u(x)} \Rightarrow \dot{f} = \dot{u}e^{u(x)}$ Exponent special $\displaystyle f(x) = e^x \Rightarrow \dot{f} = f(x) = e^x$ Logarithic $\displaystyle f(x) = \ln{u(x)} \Rightarrow \dot{f} = \frac{\dot{u}}{u}$ Logarithmic spacial $\displaystyle f(x) = \ln{x} \Rightarrow \dot{f} = \frac{1}{x}$

Let’s try to derive the extremely powerful differentiation method described in a previous post.

In that post it was stated that the derivative of a function of the form
$\displaystyle f = k \cdot u^a \cdot v^b \cdots$
with k a constant and with respect to an independent variable x, is simply,
$\displaystyle \dot{f} = f \cdot \left [ a \frac{\dot{u}}{u} + b \frac{\dot{v}}{v} + \cdots \right ]$

Let us consider the simplest case, in which
$\displaystyle f = k \cdot u^a \cdot v^b$

with a little bit of mixing (primarily) of the product rule and the chain rule we get,
$\displaystyle \dot{f} = k (v^b \dot{u^a} + u^a \dot{v^b}) \\ = k (v^b a u^{a-1}\dot{u} + u^a b v^{b-1}\dot{v})$

but is is easy to see that from the original function,
$\displaystyle f = k \cdot u^a \cdot v^b \Rightarrow f = k \cdot (u^{a-1}u) \cdot v^b \Rightarrow v^b u^{a-1} = \frac{f}{ku}$

and similarly,
$\displaystyle f = k \cdot u^a \cdot v^b \Rightarrow f = k \cdot u^a \cdot (v^{b-1}v) \Rightarrow u^a v^{b-1} = \frac{f}{kv}$

Why do we need these two? simply because they showed up in the previous expression, in which we got stuck (momentarily), thus,
$\displaystyle \dot{f} = k \left[ a \frac{f}{ku} \dot{u} + b \frac{f}{kv} \dot{v} \right] = k \frac{f}{k} \left[ a \frac{\dot{u}}{u} + b \frac{\dot{v}}{v} \right] = f \left[ a \frac{\dot{u}}{u} + b \frac{\dot{v}}{v} \right]$
◻ QED