{"id":68222,"date":"2025-04-28T03:01:00","date_gmt":"2025-04-27T17:01:00","guid":{"rendered":"https:\/\/www.rjmprogramming.com.au\/ITblog\/?p=68222"},"modified":"2025-04-27T15:56:03","modified_gmt":"2025-04-27T05:56:03","slug":"background-image-data-uri-sharing-long-term-recall-tutorial","status":"publish","type":"post","link":"https:\/\/www.rjmprogramming.com.au\/ITblog\/background-image-data-uri-sharing-long-term-recall-tutorial\/","title":{"rendered":"Background Image Data URI Sharing Long Term Recall Tutorial"},"content":{"rendered":"<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/dappled_light.html\" rel=\"noopener\"><img decoding=\"async\" style=\"float:left; border: 15px solid pink;\" alt=\"Background Image Data URI Sharing Long Term Recall Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/dappled_light_cache_bookmark.gif\" title=\"Background Image Data URI Sharing Long Term Recall Tutorial\" \/><\/a><p class=\"wp-caption-text\">Background Image Data URI Sharing Long Term Recall Tutorial<\/p><\/div>\n<p>The implication of <a title='Background Image Data URI Sharing Tutorial' href='#bidurist'>Background Image Data URI Sharing Tutorial<\/a>&#8216;s &#8230;<\/p>\n<blockquote><p>\n &#8230; effectively avoiding the need to ever need to use PHP file_get_contents to retrieve that \/tmp\/ content, which we found was quite a harrowing thing to try?!\n<\/p><\/blockquote>\n<p> &#8230; panning out to be a bug at our end (sorrrrrrrry), opens the door, today, to try out an idea we had regarding an email or SMS recipient&#8217;s &#8220;lived experience&#8221; regarding our Dappled Image Background Image Sharing web application when data URIs were involved with the originator piecing together their creation ahead of sending it to their chosen recipient.<\/p>\n<p>You may have been reading this thread of postings earlier, and know we started using <a target=\"_blank\" title='Apache web server Document Root' href='https:\/\/httpd.apache.org\/docs\/2.4\/urlmapping.html#documentroot' rel=\"noopener\">Document Root<\/a> <a target=\"_blank\" href='https:\/\/en.wikipedia.org\/wiki\/Symbolic_link' rel=\"noopener\">soft links<\/a>, as per &#8230;<\/p>\n<blockquote><p>\n &#8230; meaning that our PHP helping <a target=\"_blank\" href='\/\/www.rjmprogramming.com.au\/HTMLCSS\/legend_via_map.php---------GETME' title='legend_via_map.php' rel=\"noopener\">legend_via_map.php<\/a> changing in <a target=\"_blank\" title='legend_via_map.php' href='http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/legend_via_map.php---------GETME' rel=\"noopener\">this way<\/a> now starts creating Document Root <a target=\"_blank\" href='https:\/\/en.wikipedia.org\/wiki\/Symbolic_link' rel=\"noopener\">soft links<\/a> (as can happen on Linux and Unix and macOS) pointing back to the \/tmp\/ folder content, no longer a base64 data URI (as was the case with the <a target=\"_blank\" href='https:\/\/www.rjmprogramming.com.au\/ITblog\/media-youtube-interfacer-interspersing-image-text-tutorial\/' title='Media YouTube Interfacer Interspersing Image Text Tutorial' rel=\"noopener\">Media YouTube Interfacer Interspersing Image Text Tutorial<\/a> project style of legend_via_map.php interfacing usage) but <font color=purple>actual image file contents<\/font> &#8230;\n<\/p><\/blockquote>\n<p> &#8230; to get around errors that could happen as the originator shaped to email or SMS a creation involving image data URI(s).  The thing is, though, that our design only stores the \/tmp\/ (web server) content underpinning of the Document Root soft link <font color=blue>for a couple of days<\/font> in <a target=\"_blank\" href='\/\/www.rjmprogramming.com.au\/HTMLCSS\/legend_via_map.php----------GETME' title='legend_via_map.php' rel=\"noopener\">legend_via_map.php<\/a> changing in <a target=\"_blank\" title='legend_via_map.php' href='http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/legend_via_map.php----------GETME' rel=\"noopener\">this way<\/a> &#8230;<\/p>\n<p>&lt;?php<br \/>\n<code><br \/>\n  if (isset($_GET['getthisback']) || isset($_GET['andcleanup'])) {<br \/>\n     if (isset($_GET['getthisback'])) {<br \/>\n     $fnm=str_replace('+',' ',urldecode($_GET['getthisback']));<br \/>\n     if (strpos($fnm, 'rjmprogramming.com.au\/bigmedia_') !== false) {<br \/>\n     \/\/file_put_contents('xv.xv', '\/tmp\/' . explode('.txt', basename($fnm))[0] . '.txt');<br \/>\n     if (!file_exists('\/tmp\/' . explode('.txt', basename($fnm))[0] . '.txt')) {<br \/>\n     \/\/file_put_contents('xv0.xv0', '\/tmp\/' . explode('.txt', basename($fnm))[0] . '.txt');<br \/>\n      echo \"&lt;html&gt;&lt;body&gt;Not Found is \" . $fnm . \"&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n     } else {<br \/>\n      \/\/file_put_contents('xv1.xv1', '\/tmp\/' . explode('.txt', basename($fnm))[0] . '.txt vs ' . 'http:\/\/' . explode('\/\/', $fnm)[1]);<br \/>\n      $myfile = fopen('\/tmp\/' . explode('.txt', basename($fnm))[0] . '.txt', \"r\") or die(\"Unable to open file!\");<br \/>\n      $img_file=fread($myfile,filesize('\/tmp\/' . explode('.txt', basename($fnm))[0] . '.txt'));<br \/>\n      fclose($myfile);<br \/>\n      \/\/file_put_contents('xv2.xv2', strlen($img_file) . ' \/tmp\/' . explode('.txt', basename($fnm))[0] . '.txt vs ' . 'http:\/\/' . explode('\/\/', $fnm)[1]);<br \/>\n      echo \"&lt;html&gt;&lt;body&gt;&lt;p id=pid>data:image\/\" . explode('.', $fnm)[-1 + sizeof(explode('.', $fnm))] . ';base64,' . base64_encode($img_file) . \"&lt;\/p&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n     }<br \/>\n     } else {<br \/>\n     if (!file_exists($fnm)) {<br \/>\n      echo \"&lt;html&gt;&lt;body&gt;Not found is \" . $fnm . \"&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n     } else {<br \/>\n      $myfile = fopen($fnm, \"r\") or die(\"Unable to open file!\");<br \/>\n      $img_file=fread($myfile,filesize($fnm));<br \/>\n      fclose($myfile);<br \/>\n      echo \"&lt;html&gt;&lt;body&gt;&lt;p id=pid&gt;\" . $img_file . \"&lt;\/p&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n     }<br \/>\n     }<br \/>\n     }<br \/>\n     <font color=blue>if (isset($_GET['andcleanup'])) {<br \/>\n     foreach (glob('\/tmp\/bigmedia_*.txt') as $tfl) {<br \/>\n    $filemtime = filemtime($tfl);<br \/>\n    if (time() - $filemtime >= 172800) {<br \/>\n        unlink($tfl);<br \/>\n    }<br \/>\n     }<br \/>\n     }<\/font><br \/>\n     exit;<br \/>\n  }<br \/>\n<\/code><br \/>\n?&gt; <\/p>\n<p> &#8230; a period of time we consider generous for a recipient to attend to the communication&#8217;s link clicking, as interested.  But what if that email or SMS link&#8217;s content has data URI content which a user may want to recall some days later?  Well, we now add a new dropdown option &#8230;<\/p>\n<p><code><br \/>\nCache Data URIs (then Bookmark for later viewing)<br \/>\n<\/code><\/p>\n<p> &#8230; which instigates this Javascript when selecting &#8230;<\/p>\n<p><code><br \/>\n        alert('We are redirecting you to new webpage that is good to Bookmark (after a few seconds) for future reference, else image data URIs will be forgotten after a couple of days.');<br \/>\n        location.href=document.URL.replace('cacheit=', 'cacheit=Y');<br \/>\n<\/code><\/p>\n<p> &#8230; and then accessing that <font color=blue>debugged<\/font> iframe (hosting the call to our helper PHP talked about above) onload event Javascript code &#8230;<\/p>\n<p><code><br \/>\n  function checkthis(iois) {<br \/>\n       if (iois.src.indexOf('About_Us.htm') == -1) {<br \/>\n       var aconto = (iois.contentWindow || iois.contentDocument);<br \/>\n       if (aconto != null) {<br \/>\n       if (aconto.document) { aconto = aconto.document; }<br \/>\n<br \/>\n      if (aconto.body.innerHTML.toLowerCase().indexOf('not found is') != -1) {<br \/>\n        aconto=aconto;<br \/>\n      } else if (aconto.body.innerHTML.indexOf('&lt;\/p&gt;') != -1) {<br \/>\n        dumappings.push(aconto.body.innerHTML.split('&lt;\/p&gt;')[0].split('&gt;')[eval(-1 + aconto.body.innerHTML.split('&lt;\/p&gt;')[0].split('&gt;').length)]);<br \/>\n        <font color=blue>if (numds == 2) {<br \/>\n          duin=duin.replace(encodeURIComponent(encodeURIComponent(dutmpfiles[eval(-1 + dutmpfiles.length)])), encodeURIComponent(encodeURIComponent(dumappings[eval(-1 + dumappings.length)])));<br \/>\n        } else {<br \/>\n          while (duin.indexOf(encodeURIComponent(dutmpfiles[eval(-1 + dutmpfiles.length)])) != -1) {<br \/>\n            duin=duin.replace(encodeURIComponent(dutmpfiles[eval(-1 + dutmpfiles.length)]), encodeURIComponent(dumappings[eval(-1 + dumappings.length)]));<br \/>\n          }<br \/>\n          while (duin.indexOf((dutmpfiles[eval(-1 + dutmpfiles.length)])) != -1) {<br \/>\n            duin=duin.replace((dutmpfiles[eval(-1 + dutmpfiles.length)]), (dumappings[eval(-1 + dumappings.length)]));<br \/>\n          }<br \/>\n        }<\/font><br \/>\n      }<br \/>\n<br \/>\n       }<br \/>\n       }<br \/>\n  }<br \/>\n<\/code><\/p>\n<p> &#8230; we are back with &#8220;originator data URI(s)&#8221; finding their way back to &#8220;recipient webpage data URI referencing background image&#8221; webpage data.<\/p>\n<p>Then, should a recipient want to have the best chance of storing this scenario days out into the future we think it can work if &#8230;<\/p>\n<ul>\n<li>the recipient just about immediately <a target=\"_blank\" title='Bookmark information from Wikipedia, thanks' href='https:\/\/en.wikipedia.org\/wiki\/Bookmark_(digital)' rel=\"noopener\">Bookmarks<\/a> this webpage &#8230; perhaps supplying a better name (though we add document.URL length and current time snapshots to the webpage document title) &#8230;<\/li>\n<li>later, for that recipient using that same web browser, we&#8217;re pretty sure within that two days of server retainment, no worries &#8230; and &#8230;<\/li>\n<li>after those two days, even so <font size=1>(and we&#8217;re waiting ourselves, for two days to retest)<\/font>, we&#8217;re thinking should the recipient recall their scenario via (something like the Google Chrome) &#8230;<br \/>\n<code><br \/>\nBookmarks -&gt; Bookmark Manager -&gt; Other Bookmarks -&gt; <font size=1>(navigate to bottom bookmark named like ...)<\/font> Dappled Light (11032 byte URL at Sun Apr 27 2025 14:07:35 GMT+1000 (Australian Eastern Standard Time)) - RJM Programming - April, 2025 ... thanks to https:\/\/stackoverflow.com\/questions\/20039765\/how-to-apply-a-css-filter-to-a-background-image<br \/>\n<\/code><br \/>\n &#8230; that the web browser <a target=\"_blank\" title='Cache information from Wikipedia ... thanks' href='https:\/\/en.wikipedia.org\/wiki\/Cache_(computing)' rel=\"noopener\">Cache<\/a> will help out the recipient get back their background image data on the condition they haven&#8217;t cleared their web browser cache &#8230; <a target=\"_blank\" title='?' href='https:\/\/www.youtube.com\/watch?v=PtR4cWb4HNg' rel=\"noopener\">that is<\/a><\/li>\n<\/ul>\n<p>You can try emailing or SMSing to a recipient yourself with these new ideas in <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/dappled_light.html----GETME\" rel=\"noopener\">a fifth draft<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/dappled_light.html----GETME\" rel=\"noopener\">dappled_light.html<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/dappled_light.html\" rel=\"noopener\">Dappled Light web application<\/a>.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=\"_blank\" href='\/\/www.rjmprogramming.com.au\/ITblog\/background-image-data-uri-sharing-long-term-recall-tutorial\/' rel=\"noopener\">Background Image Data URI Sharing Long Term Recall Tutorial<\/a>.<\/p-->\n<hr>\n<p id='bidurist'>Previous relevant <a target=\"_blank\" title='Background Image Data URI Sharing Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/background-image-data-uri-sharing-tutorial\/' rel=\"noopener\">Background Image Data URI Sharing Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/dappled_light.html\" rel=\"noopener\"><img decoding=\"async\" style=\"float:left; border: 15px solid pink;\" alt=\"Background Image Data URI Sharing Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/dappled_light_soft_link.gif\" title=\"Background Image Data URI Sharing Tutorial\" \/><\/a><p class=\"wp-caption-text\">Background Image Data URI Sharing Tutorial<\/p><\/div>\n<p>In yesterday&#8217;s <a title='Background Image Multiple Substances Tutorial' href='#bimst'>Background Image Multiple Substances Tutorial<\/a> we ended up with &#8230;<\/p>\n<blockquote>\n<p>Email and SMS can fail when &#8220;substances&#8221; are data URIs.  We see it as food for thought not attended to today.<\/p>\n<\/blockquote>\n<p> &#8230; and today, we&#8217;re back with a solution involving &#8230;<\/p>\n<ul>\n<li>for the originator (asking for a <a target=\"_blank\" title='Data URI information from Wikipedia ... thanks' href='https:\/\/en.wikipedia.org\/wiki\/Data_URI_scheme' rel=\"noopener\">data URI<\/a> into the mix of their creation) we&#8217;re now calling our helper PHP via Ajax <font color=blue>(with a new twist)<\/font> &#8230;<br \/>\n<code><br \/>\n  var zhr=null, zform=null;<br \/>\n  var dumappings=[], dutmpfiles=[];<br \/>\n  var duin='', numds=0;<br \/>\n<br \/>\nfunction nodu(inida) {  \/\/ used as a wrapper before the email or SMS is sent off<br \/>\n  var outida=inida;<br \/>\n  for (var ia=0; ia&lt;dumappings.length; ia++) {<br \/>\n   while (outida.indexOf(dumappings[ia]) != -1) {<br \/>\n    outida=outida.replace(dumappings[ia], dutmpfiles[ia]);<br \/>\n   }<br \/>\n  }<br \/>\n  return outida;<br \/>\n}<br \/>\n<br \/> <br \/>\n  function showStuff() {<br \/>\n  if (zhr != null) {<br \/>\n  if (zhr.readyState == 4) {<br \/>\n    if (zhr.status == 200) {<br \/>\n      if (zhr.responseText.indexOf('&lt;\/p&gt;') != -1) {<br \/>\n        dutmpfiles.push(zhr.responseText.split('&lt;\/p&gt;')[0].split('&gt;')[eval(-1 + zhr.responseText.split('&lt;\/p&gt;')[0].split('&gt;').length)]);<br \/>\n      }<br \/>\n      zhr=null;<br \/>\n    }<br \/>\n  }<br \/>\n  }<br \/>\n  }<br \/>\n<br \/> <br \/>\n  function ajaxit(indu) {<br \/>\n   var urlis='\/\/www.rjmprogramming.com.au\/HTMLCSS\/legend_via_map.php';<br \/>\n   zhr = new XMLHttpRequest();<br \/>\n   zform=new FormData();<br \/>\n   zform.append('urlbig', indu);<br \/>\n   dumappings.push(indu);<br \/>\n   zform.append('subject', '');<br \/>\n   zform.append('to', '');<br \/>\n   zform.append('cc', '');<br \/>\n   zform.append('bcc', '');<br \/>\n   zform.append('url', '');<br \/>\n   <font color=blue>if (indu.indexOf('data:') == 0) {<br \/>\n   zform.append('softlink', indu.split('\/')[1].split(';')[0].split(',')[0]);<br \/>\n   }<\/font><br \/>\n   zhr.open('post', urlis, true);<br \/>\n   zhr.onreadystatechange = showStuff;<br \/>\n   zhr.send(zform);<br \/>\n  }<br \/>\n<\/code><br \/>\n &#8230; meaning that our PHP helping <a target=\"_blank\" href='\/\/www.rjmprogramming.com.au\/HTMLCSS\/legend_via_map.php---------GETME' title='legend_via_map.php' rel=\"noopener\">legend_via_map.php<\/a> changing in <a target=\"_blank\" title='legend_via_map.php' href='http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/legend_via_map.php---------GETME' rel=\"noopener\">this way<\/a> now starts creating Document Root <a target=\"_blank\" href='https:\/\/en.wikipedia.org\/wiki\/Symbolic_link' rel=\"noopener\">soft links<\/a> (as can happen on Linux and Unix and macOS) pointing back to the \/tmp\/ folder content, no longer a base64 data URI (as was the case with the <a target=\"_blank\" href='https:\/\/www.rjmprogramming.com.au\/ITblog\/media-youtube-interfacer-interspersing-image-text-tutorial\/' title='Media YouTube Interfacer Interspersing Image Text Tutorial' rel=\"noopener\">Media YouTube Interfacer Interspersing Image Text Tutorial<\/a> project style of legend_via_map.php interfacing usage) but <font color=purple>actual image file contents<\/font> &#8230;<br \/>\n&lt;?php<br \/>\n<code><br \/>\n    if ($_POST['to'] == '' && $_POST['subject'] == '' && $_POST['urlbig'] != '' && isset($_POST['bcc']) && isset($_POST['cc'])) {<br \/>\n      $vslook='';<br \/>\n      $vsind='0';<br \/>\n      if (strpos(('~' . $_POST['urlbig']), '~data') !== false) {<br \/>\n        if ($_POST['bcc'] == '') {<br \/>\n          foreach (glob('\/tmp\/bigmedia_*.txt') as $tfl) {<br \/>\n            if ($vslook == '') {<br \/>\n                $vslook=str_replace(' ','+',urldecode($_POST['urlbig']));<br \/>\n            }<br \/>\n            $versusind=explode('.', explode('bigmedia_', $tfl)[1])[0];<br \/>\n            <font color=purple>if (isset($_POST['softlink']) && strpos($vslook, ';base64,') !== false) {<br \/>\n              if (file_get_contents($tfl) == base64_decode( explode(';base64,', $vslook)[1] )) {<br \/>\n                echo \"&lt;html&gt;&lt;body&gt;&lt;p id=pid style=display:none;&gt;\/\/www.rjmprogramming.com.au\/\" . basename($tfl) . \".\" . $_POST['softlink'] . \"&lt;\/p&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n                exit;<br \/>\n              }<br \/>\n            } else <\/font>if (file_get_contents($tfl) == $vslook) {<br \/>\n              echo \"&lt;html&gt;&lt;body&gt;&lt;p id=pid style=display:none;&gt;\" . $tfl . \"&lt;\/p&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n              exit;<br \/>\n            }<br \/>\n            if (strlen($versusind) &lt; strlen($vsind)) {<br \/>\n              $vsind=$vsind;<br \/>\n            } else if (strlen($versusind) &gt; strlen($vsind)) {<br \/>\n              $vsind='' . (1 + intval($versusind));<br \/>\n            } else if ($versusind &gt;= $vsind) {<br \/>\n              $vsind='' . (1 + intval($versusind));<br \/>\n            }<br \/>\n    $filemtime = filemtime($tfl);<br \/>\n    if (time() - $filemtime &gt;= 172800) {<br \/>\n        unlink($tfl);<br \/>\n    }<br \/>\n          }<br \/>\n          <font color=purple>if (isset($_POST['softlink'])) {<br \/>\n          file_put_contents('\/tmp\/bigmedia_' . $vsind . '.txt', base64_decode( explode(';base64,', str_replace(' ','+',urldecode($_POST['urlbig'])))[1] ) );<br \/>\n          if (file_exists($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . \"bigmedia_\" . $vsind . \".txt.\" . $_POST['softlink'])) {<br \/>\n            unlink($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . \"bigmedia_\" . $vsind . \".txt.\" . $_POST['softlink']);<br \/>\n          }<br \/>\n          exec('ln -s \/tmp\/bigmedia_' . $vsind . '.txt ' . $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . \"bigmedia_\" . $vsind . \".txt.\" . $_POST['softlink']);<br \/>\n          echo \"&lt;html&gt;&lt;body&gt;&lt;p id=pid style=display:none;&gt;\/\/www.rjmprogramming.com.au\/bigmedia_\" . $vsind . \".txt.\" . $_POST['softlink'] . \"&lt;\/p&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n          } else {<\/font><br \/>\n          file_put_contents('\/tmp\/bigmedia_' . $vsind . '.txt', str_replace(' ','+',urldecode($_POST['urlbig'])));<br \/>\n          echo \"&lt;html&gt;&lt;body&gt;&lt;p id=pid style=display:none;&gt;\/tmp\/bigmedia_\" . $vsind . \".txt&lt;\/p&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n          <font color=purple>}<\/font><br \/>\n        } else {<br \/>\n          if (strpos(strtolower($_POST['urlbig'] . '~'), ('%e2%80%a6~')) !== false || strpos(strtolower(urldecode($_POST['urlbig']) . '~'), (urldecode('%e2%80%a6') . '~')) !== false || 1 == 1) {<br \/>\n             if (file_exists('\/tmp\/bigmedia_' . trim(str_replace('+',' ',urldecode($_POST['bcc']))) . '.txt')) {<br \/>\n                if ($_POST['cc'] == '1') {<br \/>\n                echo \"&lt;html&gt;&lt;body onload=\\\" parent.document.getElementById('spareurlbig').value='\" . file_get_contents('\/tmp\/bigmedia_' . $_POST['bcc'] . '.txt') . \"';  parent.document.getElementById('spareurlbig\" . $_POST['cc'] . \"').value='\" . file_get_contents('\/tmp\/bigmedia_' . $_POST['bcc'] . '.txt') . \"'; \\\"&gt;&lt;p id=pid style=display:none;&gt;\/tmp\/bigmedia_\" . trim(str_replace('+',' ',urldecode($_POST['bcc']))) . \".txt'&lt;\/p&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n                } else if (strlen($_POST['cc']) &lt;= 1) {<br \/>\n                echo \"&lt;html&gt;&lt;body onload=\\\" parent.document.getElementById('spareurlbig\" . $_POST['cc'] . \"').value='\" . file_get_contents('\/tmp\/bigmedia_' . $_POST['bcc'] . '.txt') . \"'; \\\"&gt;&lt;p id=pid style=display:none;&gt;\/tmp\/bigmedia_\" . trim(str_replace('+',' ',urldecode($_POST['bcc']))) . \".txt'&lt;\/p&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n                } else {<br \/>\n                echo \"&lt;html&gt;&lt;body onload=\\\" parent.document.getElementById('spareurlbig').value='\" . file_get_contents('\/tmp\/bigmedia_' . $_POST['bcc'] . '.txt') . \"'; \\\"&gt;&lt;p id=pid style=display:none;&gt;\/tmp\/bigmedia_\" . trim(str_replace('+',' ',urldecode($_POST['bcc']))) . \".txt'&lt;\/p&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n                }<br \/>\n             } else {<br \/>\n                foreach (glob('\/tmp\/bigmedia_*.txt') as $tfl) {<br \/>\n                   if ($vslook == '') {<br \/>\n                     $vslook=str_replace(' ','+',urldecode($_POST['urlbig']));<br \/>\n                   }<br \/>\n                   $thislook=file_get_contents($tfl);<br \/>\n                   if (strpos($thislook, substr($vslook,0,(-13 + strlen($vslook)))) !== false) {<br \/>\n                     if ($_POST['cc'] == '1') {<br \/>\n                     echo \"&lt;html&gt;&lt;body onload=\\\" parent.document.getElementById('spareurlbig').value='\" . $thislook . \"';  parent.document.getElementById('spareurlbig\" . $_POST['cc'] . \"').value='\" . $thislook . \"'; \\\"&gt;&lt;p id=pid style=display:none;&gt;\" . $thislook . \"&lt;\/p&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n                     } else if (strlen($_POST['cc']) &lt;= 1) {<br \/>\n                     echo \"&lt;html&gt;&lt;body onload=\\\" parent.document.getElementById('spareurlbig\" . $_POST['cc'] . \"').value='\" . $thislook . \"'; \\\"&gt;&lt;p id=pid style=display:none;&gt;\" . $thislook . \"&lt;\/p&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n                     } else {<br \/>\n                     echo \"&lt;html&gt;&lt;body onload=\\\" parent.document.getElementById('spareurlbig0').value='\" . $thislook . \"'; \\\"&gt;&lt;p id=pid style=display:none;&gt;\" . $thislook . \"&lt;\/p&gt;&lt;\/body&gt;&lt;\/html&gt;\";<br \/>\n                     }<br \/>\n                   }<br \/>\n    $filemtime = filemtime($tfl);<br \/>\n    if (time() - $filemtime &gt;= 172800) {<br \/>\n        unlink($tfl);<br \/>\n    }<br \/>\n                }<br \/>\n             }<br \/>\n          }<br \/>\n        }<br \/>\n      }<br \/>\n      exit;<br \/>\n    }<br \/>\n<\/code><br \/>\n?&gt;<br \/>\n &#8230; effectively avoiding the need to ever need to use PHP file_get_contents to retrieve that \/tmp\/ content, which we found was quite a harrowing thing to try?!\n<\/li>\n<li>for the receiver clicking an email or SMS link it used to be we&#8217;d map \/tmp\/*.txt mentions back to a data URI but now that is not needed anymore &#8230; phew!<\/li>\n<\/ul>\n<p>You can try for yourself these new ideas in <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/dappled_light.html---GETME\" rel=\"noopener\">the fourth draft<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/dappled_light.html---GETME\" rel=\"noopener\">dappled_light.html<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/dappled_light.html\" rel=\"noopener\">Dappled Light web application<\/a>.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=\"_blank\" href='\/\/www.rjmprogramming.com.au\/ITblog\/background-image-data-uri-sharing-tutorial\/' rel=\"noopener\">Background Image Data URI Sharing Tutorial<\/a>.<\/p-->\n<p><b><i>Did you know?<\/i><\/b><\/p>\n<p>We all benefit by building on what has been established before.  We like it when &#8220;it feels like proof&#8221; trying something new, and verifying for yourself something you &#8220;were pretty sure was the case&#8221;.  So it was today, for us, proving with a soft link usage that the mimetype assumed comes from the<br \/> <i>ln -s [sourceFile] [targetFile]<\/i><sup>&#8216;s<\/sup> [targetFile] <font size=1>very last<\/font> file extension rather than any reference to [sourceFile] or it&#8217;s extension, and that the way you name the [sourceFile] does not have to reflect, file extension wise, that data that is in [sourceFile] necessarily.<\/p>\n<hr>\n<p id='bimst'>Previous relevant <a target=\"_blank\" title='Background Image Multiple Substances Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/background-image-multiple-substances-tutorial\/' rel=\"noopener\">Background Image Multiple Substances Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/dappled_light.html\" rel=\"noopener\"><img decoding=\"async\" style=\"float:left; border: 15px solid pink;\" alt=\"Background Image Multiple Substances Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/dappled_light_multiple_substance.gif\" title=\"Background Image Multiple Substances Tutorial\" \/><\/a><p class=\"wp-caption-text\">Background Image Multiple Substances Tutorial<\/p><\/div>\n<p>Onto yesterday&#8217;s <a title='Background Image Substance Tutorial' href='#bist'>Background Image Substance Tutorial<\/a>&#8216;s work, today we allow for more CSS styling &#8230;<\/p>\n<ul>\n<li>multiple background images &#8230; and &#8230;<\/li>\n<li>transformational functionalities &#8230; <a target=\"_blank\" title='CSS transform: rotate information' href='https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/CSS\/transform-function\/rotate' rel=\"noopener\">rotate<\/a> and <a target=\"_blank\" title='CSS transform: scale information' href='https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/CSS\/transform-function\/scale' rel=\"noopener\">scale<\/a> and <a target=\"_blank\" title='CSS translate information' href='https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/CSS\/translate' rel=\"noopener\">translate<\/a> and <a target=\"_blank\" title='CSS transform-origin information' rel=\"noopener\" href='https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/CSS\/transform-origin'>transform-origin<\/a> <font size=1>(important, but not for the faint hearted!)<\/font><br \/>\n<img style=\"width:100%;\" src='\/dappled_light_rotate_scale.png'><\/img>\n<\/li>\n<\/ul>\n<p> &#8230; as value adding propositions.  To make the idea of <i>multiple background images<\/i> work we have to control &#8230;<\/p>\n<ul>\n<li style=\"word-wrap: break-word;\">a comma separated list of image &#8220;substances&#8221; for a CSS styling <i>background: url([backgroundSubstance1]),url([backgroundSubstance2]) !important<\/i> <font size=1>etcetera<\/font> style of clause &#8230; to which we like to embellish via &#8230;<\/li>\n<li style=\"word-wrap: break-word;\"><font color=blue>background-position<\/font> and <font color=purple>background-repeat<\/font> &#8230; eg. <i>background: url([backgroundSubstance1]) <font color=blue>top left<\/font> <font color=purple>no-repeat<\/font>,url([backgroundSubstance2]) <font color=blue>bottom right<\/font> <font color=purple>no-repeat<\/font> !important;<\/i> &#8230; gets you so far, but to allow for &#8230;<\/li>\n<li style=\"word-wrap: break-word;\"><font color=magenta>opacity<\/font> we prefix  &#8230; eg. <i>background: <font color=magenta>linear-gradient(rgba(255,255,255,0.5),rgba(255,255,255,0.5)),<\/font>url([backgroundSubstance1]) <font color=blue>top left<\/font> <font color=purple>no-repeat<\/font>,<font color=magenta>linear-gradient(rgba(255,255,255,0.5),rgba(255,255,255,0.5)),<\/font>url([backgroundSubstance2]) <font color=blue>bottom right<\/font> <font color=purple>no-repeat<\/font> !important;<\/i> &#8230; the application of which is handled by the Javascript below, so as far as &#8230;<\/li>\n<li><font color=olive>background-size<\/font> goes we need Javascript to help out &#8230;<br \/>\n<code><br \/>\n  var firsturl='\/\/www.rjmprogramming.com.au\/dappled_light.jpg', lastmultpos='', firstmultpos='top left', lasturl='', numb=2, actnumb=1;<br \/>\n  var prebrest=' ' + eval(-15 + eval(screen.width \/ numb)) + 'px ' + eval(-15 + eval(screen.height \/ numb)) + 'px ';<br \/>\n  var brest=' ' + firstmultpos + ' no-repeat';<br \/>\n  var blist='', bposlist='', bcomblist='';<br \/>\n<br \/> <br \/>\n  <font color=olive>function dosize(dc) {<br \/>\n    var suffdc='';<br \/>\n    numb=2;<br \/>\n    while (actnumb &gt; eval(numb * numb)) {<br \/>\n      numb++;<br \/>\n    }<br \/>\n    for (var ij=0; ij&lt;actnumb; ij++) {<br \/>\n       if (suffdc == '') {<br \/>\n         suffdc=' !important; } .background-image { background-size: ' + ' ' + eval(-15 + eval(screen.width \/ numb)) + 'px ' + eval(-15 + eval(screen.height \/ numb)) + 'px';<br \/>\n       } else {<br \/>\n         suffdc+=',' + ' ' + eval(-15 + eval(screen.width \/ numb)) + 'px ' + eval(-15 + eval(screen.height \/ numb)) + 'px';<br \/>\n       }<br \/>\n    }<br \/>\n    return dc.replace(\/url\\(\/g, 'linear-gradient(rgba(255,255,255,0.5),rgba(255,255,255,0.5)),url(') + suffdc;<br \/>\n  }<\/font><br \/>\n<\/code>\n<\/li>\n<\/ul>\n<p> &#8230; in <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/dappled_light.html--GETME\" rel=\"noopener\">the third draft<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/dappled_light.html--GETME\" rel=\"noopener\">dappled_light.html<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/dappled_light.html\" rel=\"noopener\">Dappled Light web application<\/a>.<\/p>\n<p>Email and SMS can fail when &#8220;substances&#8221; are data URIs.  We see it as food for thought not attended to today.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=\"_blank\" href='\/\/www.rjmprogramming.com.au\/ITblog\/background-image-multiple-substances-tutorial\/' rel=\"noopener\">Background Image Multiple Substances Tutorial<\/a>.<\/p-->\n<hr>\n<p id='bist'>Previous relevant <a target=\"_blank\" title='Background Image Substance Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/background-image-substance-tutorial\/' rel=\"noopener\">Background Image Substance Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/dappled_light.html\" rel=\"noopener\"><img decoding=\"async\" style=\"float:left; border: 15px solid pink;\" alt=\"Background Image Substance Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/dappled_light_substance.gif\" title=\"Background Image Substance Tutorial\" \/><\/a><p class=\"wp-caption-text\">Background Image Substance Tutorial<\/p><\/div>\n<p>Yesterday&#8217;s <a title='Background Image CSS Primer Tutorial' href='#bicsspt'>Background Image CSS Primer Tutorial<\/a> discussed &#8230;<\/p>\n<ul>\n<li>style &#8230; but there&#8217;s also &#8230;<\/li>\n<li>substance<\/li>\n<\/ul>\n<p> &#8230; (ie. the image data source) to consider, embellishing yesterday&#8217;s &#8230;<\/p>\n<blockquote><p>\nan image\n<\/p><\/blockquote>\n<p> &#8230; break down of &#8220;substance&#8221; measures, as of <sup>and so<\/sup> yesterday.<\/p>\n<p>We&#8217;re allowing for &#8230;<\/p>\n<ul>\n<li>emoji &#128193; (to &#128194; and back) means by which user can browse for a local image file &#8230;<br \/>\n<code><br \/>\n  var absare=[], iabs=0, kabs=0, jabs=0, acount=0, arwo=null,<br \/>\n<br \/>\n  function arlook() { \/\/ via setInterval(arlook, 2000);<br \/>\n    if (arwo) {<br \/>\n    absare=arwo.document.getElementsByTagName('img');<br \/>\n    for (iabs=0; iabs&lt;absare.length; iabs++) {<br \/>\n    if (('' + absare[iabs].id).indexOf('gb') == 0) {<br \/>\n      if (document.getElementById('myaudios').innerHTML.indexOf(absare[iabs].src) == -1) { \/\/ && absare[iabs].outerHTML.indexOf(' data-done') == -1) {<br \/>\n         document.getElementById('myaudios').innerHTML+=absare[iabs].outerHTML.replace('gb','gb' + acount).replace(\"&lt;img \",\"&lt;img style=display:none; data-duration=0 onloadedmetadata=\\\"this.setAttribute('data-duration','' + this.duration);\\\" \") + '&lt;br&gt;';<br \/>\n         document.getElementsByTagName('div')[0].style.backgroundImage='url(' + absare[iabs].src + ')';<br \/>\n         acount++;<br \/>\n         document.getElementById('alocal').innerHTML='&#128193;';<br \/>\n      }<br \/>\n    }<br \/>\n    }<br \/>\n    }<br \/>\n  }<br \/>\n<\/code><br \/>\n &#8230; resolved to a <a target=\"_blank\" title='Data URI information from Wikipedia ... thanks' href='https:\/\/en.wikipedia.org\/wiki\/Data_URI_scheme' rel=\"noopener\">data URI<\/a> &#8230;<\/li>\n<li><font size=1>first<\/font> textbox means of image URL via &#8230;\n<ol>\n<li>relative URL (to https:\/\/www.rjmprogramming.com.au <a target=\"_blank\" title='?' href='https:\/\/www.youtube.com\/watch?v=PtR4cWb4HNg' rel=\"noopener\">that is<\/a>) &#8230; or &#8230;<\/li>\n<li>absolute URL &#8230; or &#8230;<\/li>\n<li><a target=\"_blank\" title='Data URI information from Wikipedia ... thanks' href='https:\/\/en.wikipedia.org\/wiki\/Data_URI_scheme' rel=\"noopener\">data URI<\/a> <font size=1>(have you ever noticed how Google Image searches of a Clip Art &#8220;Copy Image address&#8221; link so often results in such a data URI?)<\/font><\/li>\n<\/ol>\n<\/li>\n<\/ul>\n<p> &#8230; means by which a user can change their background image data source of display in <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/dappled_light.html-GETME\" rel=\"noopener\">the second draft<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/dappled_light.html-GETME\" rel=\"noopener\">dappled_light.html<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/dappled_light.html\" rel=\"noopener\">Dappled Light web application<\/a>.<\/p>\n<p>Note, too, with these changes, with all the functionality the <font size=1>first<\/font> textbox has now, in order to make this information better disseminated for mobile users, we introduced a marquee-like &#8220;Eat at Joe&#8217;s&#8221; arrangement for it &#8230;<\/p>\n<p><code><br \/>\n  var origpl='', iorigpos=0, two=2;<br \/>\n<br \/>\n  function eatatjoes() { \/\/ via setInterval(eatatjoes, 100);<br \/>\n    var atst='';<br \/>\n    iorigpos+=two;<br \/>\n    if (iorigpos &gt;= eval('' + document.getElementById('mynum').placeholder.length)) {<br \/>\n      iorigpos=0;<br \/>\n      document.getElementById('mynum').placeholder=origpl;<br \/>\n    } else {<br \/>\n      atst=origpl.substring(0,iorigpos);<br \/>\n      document.getElementById('mynum').placeholder=origpl.substring(iorigpos) + atst;<br \/>\n    }<br \/>\n  }<br \/>\n<\/code><\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=\"_blank\" href='\/\/www.rjmprogramming.com.au\/ITblog\/background-image-substance-tutorial\/' rel=\"noopener\">New Background Image Substance Tutorial<\/a>.<\/p-->\n<hr>\n<p id='bicsspt'>Previous relevant <a target=\"_blank\" title='Background Image CSS Primer Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/background-image-css-primer-tutorial\/' rel=\"noopener\">Background Image CSS Primer Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/dappled_light.html\" rel=\"noopener\"><img decoding=\"async\" style=\"float:left; border: 15px solid pink;\" alt=\"Background Image CSS Primer Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/dappled_light.gif\" title=\"Background Image CSS Primer Tutorial\" \/><\/a><p class=\"wp-caption-text\">Background Image CSS Primer Tutorial<\/p><\/div>\n<p>There&#8217;s very little you miss out on, and a whole lot to gain, treating &#8230;<\/p>\n<ul>\n<li>image data as one or more background images (to some other HTML element) &#8230; versus &#8230;<\/li>\n<li>image data as one or more HTML img element(s)<\/li>\n<\/ul>\n<p>For starters there are all the advantages involved with two webpage contributors stacked onto each other, both &#8230;<\/p>\n<ul>\n<li>contributing to the display, as required &#8230; and &#8230;<\/li>\n<li>able to be dynamically adjusted, in our favourite way, via Javascript DOM (or even serverside PHP ahead of all that clientside work)<\/li>\n<\/ul>\n<p> &#8230; with background images, as we talked about with <a title='Multiple Background Image Blockquote Tutorial' href='#mbibt'>Multiple Background Image Blockquote Tutorial<\/a>.<\/p>\n<p>Today, the approach is CSS &#8220;hands on&#8221;.  We select <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/dappled_light.jpg\" rel=\"noopener\">an image<\/a> in this <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/dappled_light.html_GETME\" rel=\"noopener\">&#8220;first draft&#8221;<\/a> <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/dappled_light.html\" rel=\"noopener\">dappled_light.html<\/a> and load it up at the web server, using it as a background image, for an HTML div &#8230;<\/p>\n<p><code><br \/>\n&lt;style&gt;<br \/>\n  .background-image {<br \/>\n    background-image: url('\/\/www.rjmprogramming.com.au\/dappled_light.jpg');<br \/>\n    background-repeat: no-repeat;<br \/>\n    background-size: contain;<br \/>\n  }<br \/>\n&lt;\/style&gt;<br \/>\n<\/code><\/p>\n<p> &#8230; rather than document.body &#8230;<\/p>\n<p><code><br \/>\n&lt;div title='' class=\"background-image\" style=\"width:100%;height:100%;\"&gt;&lt;\/div&gt;<br \/>\n<\/code><\/p>\n<p> &#8230; via the great advice from <a target=\"_blank\" title='Good advice, thanks' href='https:\/\/stackoverflow.com\/questions\/20039765\/how-to-apply-a-css-filter-to-a-background-image' rel=\"noopener\">this webpage<\/a>.<\/p>\n<p>From there on, our web application relies on how Javascript DOM can add HTML <i>style<\/i> element contributions into any old existing HTML element &#8230;<\/p>\n<p><code><br \/>\n&lt;div id=dstyles&gt;&lt;\/div&gt;<br \/>\n<\/code><\/p>\n<p> &#8230; dynamically to achieve dynamic display changes.  Probably not needed, but makes us feel better coming back from a hashtag based URL from an email or SMS link is to add to the dynamic CSS clauses &#8230;<\/p>\n<p><code><br \/>\n !important<br \/>\n<\/code><\/p>\n<p>Other than that, all pretty straightforward, and if working, can quickly allow a user to achieve a look vastly different to how they started, in a short time, and learn some CSS styling, perhaps, along the way.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=\"_blank\" href='\/\/www.rjmprogramming.com.au\/ITblog\/backgroundimage-css-primer-tutorial\/' rel=\"noopener\">Background Image CSS Primer Tutorial<\/a>.<\/p-->\n<hr>\n<p id='mbibt'>Previous relevant <a target=\"_blank\" title='Multiple Background Image Blockquote Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/multiple-background-image-blockquote-tutorial\/' rel=\"noopener\">Multiple Background Image Blockquote Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/LP_Change\/blockquote.jpg\" rel=\"noopener\"><img decoding=\"async\" style=\"float:left; border: 15px solid pink;\" alt=\"Multiple Background Image Blockquote Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/LP_Change\/blockquote.jpg\" title=\"Multiple Background Image Blockquote Tutorial\" \/><\/a><p class=\"wp-caption-text\">Multiple Background Image Blockquote Tutorial<\/p><\/div>\n<p>Yesterday&#8217;s tutorial called <a target=\"_blank\" href='#mbipt' title='Multiple Background Image Primer Tutorial' rel=\"noopener\">Multiple Background Image Primer Tutorial<\/a>, as shown below, made use of multiple background images.  Today we find another use for them.<\/p>\n<p>Today we offer an idea for styling of the HTML <a target=\"_blank\" title='Blockquote information from w3schools' href='http:\/\/www.w3schools.com\/tags\/tag_blockquote.asp' rel=\"noopener\"><i>blockquote<\/i><\/a> element (at this WordPress blog, for example).<\/p>\n<p>We use separate background images for the opening and closing quote background images we put into play, and before we go further, we must thank the great CSS-Tricks website for this <a target=\"_blank\" title='CSS-Tricks blockquote background' href='http:\/\/css-tricks.com\/examples\/Blockquotes\/' rel=\"noopener\">idea<\/a> which was modified a little for our circumstances.<\/p>\n<p>Think it is good to draw attention to the blockquote because it is usually used when important information is being imparted, and because that information is coming from a source offsite.<\/p>\n<p>This multiple background image idea has great application for some of the <a target=\"_blank\" title='Overlay tutorials' href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?tag=overlay' rel=\"noopener\">&#8220;overlay&#8221;<\/a> ideas that web designers often want to put into play.   As far as this WordPress blog goes, its header.php changed as per the bold code below &#8230;<\/p>\n<p><code><br \/>\n&lt;style&gt;<br \/>\n.<br \/>\n.<br \/>\n.<br \/>\n<b><br \/>\nblockquote {<br \/>\n  display: block;<br \/>\n  padding: 18px;<br \/>\n  border-top: 1px solid #e1cc89;<br \/>\n  border-bottom: 1px solid #e1cc89;<br \/>\n  margin: 5px;<br \/>\n  text-indent: 4px;<br \/>\n  background: url('closequote1.gif') bottom right no-repeat,url('openquote1.gif') top left no-repeat;<br \/>\n  background-color: #faebbc;<br \/>\n}<br \/>\nblockquote p {<br \/>\n  display: block;<br \/>\n  padding: 18px;<br \/>\n  margin: 5px;<br \/>\n  text-indent: 4px;<br \/>\n  background: url('closequote1.gif') bottom right no-repeat,url('openquote1.gif') top left no-repeat;<br \/>\n  background-color: #faebbc;<br \/>\n}<br \/>\n<\/b><br \/>\n.<br \/>\n.<br \/>\n.<br \/>\n&lt;\/style&gt;<br \/>\n<\/code><\/p>\n<p>Hope this <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/LP_Change\/blockquote.jpg\" title=\"Click picture\" rel=\"noopener\">tutorial<\/a> is useful for you, or somebody with whom you want to share the information, and will leave you with an example, here, at this blog &#8230; <a target=\"_blank\" title='How do I love thee? Let me count the ways. (Sonnet 43) by Elizabeth Barrett Browning' href='http:\/\/www.shmoop.com\/how-do-i-love-thee-sonnet-43\/poem-text.html' rel=\"noopener\">How do I love thee? Let me count the ways. (Sonnet 43) by Elizabeth Barrett Browning<\/a> &#8230;<\/p>\n<blockquote><p>\nHow do I love thee? Let me count the ways.<br \/>\nI love thee to the depth and breadth and height<br \/>\nMy soul can reach, when feeling out of sight<br \/>\nFor the ends of Being and ideal Grace.<br \/>\nI love thee to the level of everyday&#8217;s<br \/>\nMost quiet need, by sun and candle-light.<br \/>\nI love thee freely, as men strive for Right;<br \/>\nI love thee purely, as they turn from Praise.<br \/>\nI love thee with the passion put to use<br \/>\nIn my old griefs, and with my childhood&#8217;s faith.<br \/>\nI love thee with a love I seemed to lose<br \/>\nWith my lost saints \u2013 I love thee with the breath,<br \/>\nSmiles, tears, of all my life! \u2013 and, if God choose,<br \/>\nI shall but love thee better after death.\n<\/p><\/blockquote>\n<hr \/>\n<p id='mbipt'>Previous relevant <a target=\"_blank\" href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=11375' title='Multiple Background Image Primer Tutorial' rel=\"noopener\">Multiple Background Image Primer Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/LP_Change\/\" rel=\"noopener\"><img decoding=\"async\" style=\"float:left; border: 15px solid pink;\" alt=\"Multiple Background Image Primer Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/LP_Change\/lp_change-260of.jpg\" title=\"Multiple Background Image Primer Tutorial\" id=\"qqfoijximpept\"  onmouseover=' this.src=this.src.replace(\"252\",\"XY3\").replace(\"253\",\"XY4\").replace(\"254\",\"XY5\").replace(\"255\",\"XY6\").replace(\"256\",\"XY7\").replace(\"257\",\"XY8\").replace(\"258\",\"XY9\").replace(\"259\",\"XZ0\").replace(\"260\",\"XY2\").replace(\"XZ\",\"26\").replace(\"XY\",\"25\");    ' \/><\/a><p class=\"wp-caption-text\">Multiple Background Image Primer Tutorial<\/p><\/div>\n<p>The last time we talked about the PHP web application called &#8220;Learning Programming&#8221; at this blog was with regard to some software integration that linked the &#8220;Learning Programming&#8221; web and (<a target=\"_blank\" title='Learning Programming Android mobile app' href='https:\/\/play.google.com\/store\/apps\/details?id=com.rjmprogramming.learning_programming' rel=\"noopener\">Android<\/a> (at Google Play)) mobile application with this Blog web application with <a target=\"_blank\" title='Xcode Learning Programming Blog Course Cookies Tutorial' href='#xlpbcct' rel=\"noopener\">Xcode Learning Programming Blog Course Cookies Tutorial<\/a> as shown below.<\/p>\n<p>Today we do a bit of CSS working on the &#8220;Learning Programming&#8221; web and (Android) mobile application to add interest to the top functional area.  Firstly thought of doing clipart or real photography to do a diploma border idea, but found that with the latter the mix of realia with stark web functionality was a bit jarring, and, on a first look, didn&#8217;t gel with any of the free clip art border image ideas out there, so plumped for a background image to the HTML <i>table<\/i> element involved, and realized, working with <a target=\"_blank\" title='Paintbrush image opacity slider' href='http:\/\/superuser.com\/questions\/150506\/how-to-change-the-png-file-background-to-transparence' rel=\"noopener\">Paintbrush<\/a> PNG image opacity (before it needs the CSS approach to <a target=\"_blank\" title='Opacity information from w3schools' href='http:\/\/www.w3schools.com\/css\/css_image_transparency.asp' rel=\"noopener\">opacity<\/a>), that it would be okay to hive off that first image another one with a bit of transparent design to add a hint of educational paperwork to the project.  Of course, an expert in graphic design would be throwing many more ideas at this, and implementing a great result, but am, today, showing you how multiple background images can be quite effective and <a target=\"_blank\" title='Schweppervescence' href='https:\/\/www.youtube.com\/watch?v=Gn52eThyTwQ' rel=\"noopener\">refreshing<\/a> &#8230; aaaaahhhhh.<\/p>\n<p>So the Before <img decoding=\"async\" style=\"width:100px;\" alt=\"Before\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/LP_Change\/lp_change-252of.jpg\" title=\"Before\"  \/> vs <img decoding=\"async\" style=\"width:100px;\" alt=\"After\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/LP_Change\/lp_change-260of.jpg\" title=\"After\"  \/> After infomercial today had these steps, roughly:<\/p>\n<ul>\n<li>Show Before &#8220;Learning Programming&#8221; in Firefox web browser <img decoding=\"async\" style=\"width:100px;\" alt=\"Before\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/LP_Change\/lp_change-252of.jpg\" title=\"Before\"  \/><\/li>\n<li>Use <a target=\"_blank\" title='Firebug' href='http:\/\/getfirebug.com\/' rel=\"noopener\">Firebug<\/a> to examine &#8220;Learning Programming&#8221; <img decoding=\"async\" style=\"width:100px;\" alt=\"Firebug\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/LP_Change\/lp_change-253of.jpg\" title=\"Firebug\"  \/><\/li>\n<li>Use Mac <a target=\"_blank\" title='Mac Grab' href='http:\/\/www.organizingcreativity.com\/2014\/01\/quickly-taking-screenshots-on-the-mac\/' rel=\"noopener\">Grab<\/a> application&#8217;s Selection tool to grab one for one copy of that area of webpage <img decoding=\"async\" style=\"width:100px;\" alt=\"One for one\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/LP_Change\/lp_change-254of.jpg\" title=\"One for one\"  \/><\/li>\n<li>Use (Mac) <a target=\"_blank\" title='Paintbrush for Mac' href='http:\/\/paintbrush.sourceforge.net\/downloads\/' rel=\"noopener\">Paintbrush<\/a> application to:<\/li>\n<ul>\n<li>Make transparent rectangle under web functionality of interest (with the HTML <i>td<\/i> element)<\/li>\n<li>Save this <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/LP_Change\/lp_background.png\" rel=\"noopener\">image<\/a> and make a copy<\/li>\n<li>With the copy make an opaque thick blue border inside the rectangle of above<\/li>\n<li>Draw in thinner paperwork\/stationery lines<\/li>\n<li>Give a slight 3d look by infilling those lines with a cyan 70% opacity rudimentary shadowing<\/li>\n<li>Make all the orange areas transparent using the paintcan with a fully transparent colour selected<\/li>\n<li>Save the second <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/LP_Change\/lp_background2.png\" rel=\"noopener\">image<\/a><\/li>\n<li><img decoding=\"async\" style=\"width:100px;\" alt=\"Paintbrush 1\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/LP_Change\/lp_change-255of.jpg\" title=\"Paintbrush 1\"  \/><img decoding=\"async\" style=\"width:100px;\" alt=\"Paintbrush 2\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/LP_Change\/lp_change-256of.jpg\" title=\"Paintbrush 2\"  \/><img decoding=\"async\" style=\"width:100px;\" alt=\"Paintbrush 3\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/LP_Change\/lp_change-257of.jpg\" title=\"Paintbrush 3\"  \/><img decoding=\"async\" style=\"width:100px;\" alt=\"Paintbrush 4\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/LP_Change\/lp_change-258of.jpg\" title=\"Paintbrush 4\"  \/><\/li>\n<\/ul>\n<li>Copy the images over to the website<\/li>\n<li>Adjust &#8220;Learning Programming&#8221; PHP to change (the underlying HTML) as per bold bits below<br \/>\n<code><br \/>\n&lt;style&gt;<br \/>\n#wrapperold h1{<br \/>\nfont:normal 24pt Arial;<br \/>\ncolor:#FFFFFF;<br \/>\ntext-shadow: 0 1px 0 #ccc,<br \/>\n0 2px 0 #c9c9c9,<br \/>\n0 3px 0 #bbb,<br \/>\n0 4px 0 #b9b9b9,<br \/>\n0 5px 0 #aaa,<br \/>\n0 6px 1px rgba(0,0,0,.1),<br \/>\n0 0 5px rgba(0,0,0,.1),<br \/>\n0 1px 3px rgba(0,0,0,.3),<br \/>\n0 3px 5px rgba(0,0,0,.2),<br \/>\n0 5px 10px rgba(0,0,0,.25),<br \/>\n0 10px 10px rgba(0,0,0,.2),<br \/>\n0 20px 20px rgba(0,0,0,.15);<br \/>\n}<br \/>\n<b><br \/>\n#thehead {<br \/>\nbackground: url('lp_background.png'),url('lp_background2.png') no-repeat;<br \/>\n}<br \/>\n<\/b><br \/>\n&lt;\/style&gt;<br \/>\n<\/code>\n<\/li>\n<li>Show After &#8220;Learning Programming&#8221; in Firefox web browser  <img decoding=\"async\" style=\"width:100px;\" alt=\"After\" src=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/LP_Change\/lp_change-260of.jpg\" title=\"After\"  \/> and see it as a <a target=\"_blank\" title='Learning Programming' href='http:\/\/www.rjmprogramming.com.au\/Learning\/Programming\/?isMobile=n' rel=\"noopener\">live run<\/a><\/li>\n<li><strike>Have a ham sandwich with rhubarb and vegemite followed by a lemon curry chaser<\/strike><\/li>\n<\/ul>\n<p>Why no <a target=\"_blank\" title='Gimp' href='http:\/\/www.gimp.org\/downloads\/' rel=\"noopener\">Gimp<\/a>?  Good question.   It&#8217;s a public holiday hereabouts, and well, Gimp&#8217;s off to <a target=\"_blank\" title='Bondi Beach' href='https:\/\/www.google.com.au\/search?q=%22Bondi+Beach%22+%22New+Year%27s+Day%22&#038;biw=1280&#038;bih=661&#038;source=lnms&#038;tbm=isch&#038;sa=X&#038;ei=4bikVPH1L4Tn8gWQqIL4BQ&#038;ved=0CAYQ_AUoAQ' rel=\"noopener\">Bondi Beach<\/a> today!  Where&#8217;s <a target=\"_blank\" title=\"Where's Gimp?\" href='http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/b2.html' rel=\"noopener\">Gimp<\/a>?<\/p>\n<p>Am hoping you give multiple background images a go one day should it suit your <strike>porpoise<\/strike> purpose &#8230; the heat&#8217;s getting to <strike>moi<\/strike> me.<\/p>\n<hr \/>\n<p id='xlpbcct'>Previous relevant <a target=\"_blank\" title='Xcode Learning Programming Blog Course Cookies Tutorial' href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=10320' rel=\"noopener\">Xcode Learning Programming Blog Course Cookies Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/LearningProgramming\/LearningProgramming_LastCoursePosting_iOS.jpg\" rel=\"noopener\"><img decoding=\"async\" style=\"float:left; border: 15px solid pink;\" alt=\"Xcode Learning Programming Blog Course Cookies Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/LearningProgramming\/LearningProgramming_LastCoursePosting_iOS.jpg\" title=\"Xcode Learning Programming Blog Course Cookies Tutorial\" id=\"qoijximpept\"  \/><\/a><p class=\"wp-caption-text\">Xcode Learning Programming Blog Course Cookies Tutorial<\/p><\/div>\n<p>Today we continue to make use of the ideas from two previous tutorials called <a target=\"_blank\" href='#xidupt' title='Xcode iOS Dynamic UIButton Primer Tutorial' rel=\"noopener\">Xcode iOS Dynamic UIButton Primer Tutorial<\/a> as below and <a target=\"_blank\" href='#ximpept' title='Xcode iOS Mobile Project Exporting Primer Tutorial' rel=\"noopener\">Xcode iOS Mobile Project Exporting Primer Tutorial<\/a> as shown way below, covering the Xcode iOS Mobile App issue (ie. the &#8220;UIWebView &#8216;on its lonesome&#8217; issue&#8221;) to create an iOS mobile app for our <a target=\"_blank\" href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=705' title='Learning Programming Android App' rel=\"noopener\">Learning Programming<\/a> idea extended to include the option of <a target=\"_blank\" href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=10064' title='WordPress Blog Course Design Cookies Tutorial' rel=\"noopener\">Blog Course Postings<\/a>, and using dynamic UIButton to &#8230;<\/p>\n<ol>\n<li><a target=\"_blank\" href='#xidupt' title='Xcode iOS Dynamic UIButton Primer Tutorial' rel=\"noopener\">show you<\/a> how to add a dynamic <a target=\"_blank\" title='UIButton information from Apple' href='https:\/\/developer.apple.com\/library\/ios\/documentation\/uikit\/reference\/uibutton_class\/index.html' rel=\"noopener\">UIButton<\/a> at loading (if you want to know &#8230; thanks to the great Open Source community for all the ideas emanating from this <a target=\"_blank\" title='Dynamic UIButton ideas ... thanks' href='http:\/\/stackoverflow.com\/questions\/1378765\/how-do-i-create-a-basic-uibutton-programmatically' rel=\"noopener\">link<\/a>)<\/li>\n<li>also is one way to solve the UIWebView &#8220;on its lonesome&#8221; issue (when pointing at URLs without total navigational integrity (ie. they have <i>a<\/i> tags with <i>target=&#8217;_blank&#8217;<\/i> for instance)) &#8230; <b>&#8216;(but please know such a scenario is not good without also providing, at least, buttons for the equivalent functionality as the web browser&#8217;s back and forward buttons &#8230; remember, with UIWebView there is no address bar, and no multiple tabs nor windows &#8230; if your webpage has complete forward and backward navigational integrity that could suit a UIWebView <i>&#8220;on its lonesome&#8221;<\/i>)&#8217;<\/b> &#8230; mentioned in <a target=\"_blank\" href='#ximpept' title='Xcode iOS Mobile Project Exporting Primer Tutorial' rel=\"noopener\">Xcode iOS Mobile Project Exporting Primer Tutorial<\/a> as shown below<\/li>\n<\/ol>\n<p>&#8230; but this time we tidy up some loose ends such as &#8230;<\/p>\n<ul>\n<li>fixing a lack of functionality within the iOS mobile app&#8217;s UIWebView contents cookie processing regarding the <i>&#8220;last&#8221;<\/i> course blog posting used, by setting up our own <a target=\"_blank\" title='Claytons' href='https:\/\/www.youtube.com\/watch?v=ylH43Tcaj60' rel=\"noopener\"><i>&#8220;Clayton&#8217;s&#8221;<\/i><\/a> cookies (ie. we use PHP to simulate cookies without there being cookies &#8211; which don&#8217;t always work in UIWebView without some consideration &#8230; another approach is shown with this <a target=\"_blank\" title='UIWebView information about Cookies from Apple' href='https:\/\/discussions.apple.com\/thread\/2297336?start=0&#038;tstart=0' rel=\"noopener\">link<\/a>)<\/li>\n<li>fixing an annoying feature of the work whereby with mobile apps any scrolling jumps are quite annoying, and we stop this happening for mobile platforms<\/li>\n<li>adding an extra link to allow navigation to the top of the blog course posting once nearing the bottom, especially as this can represent a lot of scrolling on occasions and because once you are down the bottom it would be good to also see what you have just viewed in some way shape or form (issues like this are considerations for the <a target=\"_blank\" title='UX information from Wikipedia ... thanks' href='http:\/\/en.wikipedia.org\/wiki\/User_experience' rel=\"noopener\">UX<\/a> area of knowledge)<\/li>\n<\/ul>\n<p id='xxmyptoday'>As a general comment about Xcode iOS mobile development (but please note that the idea of step 1. above circumvents the complication &#8230; by the way, the two small red circles in the tutorial <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/LearningProgramming\/LearningProgramming_LastCoursePosting_iOS.jpg\" title=\"Click picture\" rel=\"noopener\">picture<\/a> are me showing you where the Back and Forward buttons are (rather than the code ) &#8230; now that iOS 8 buttons have no background by default it is sometimes necessary to point them out) you must try to get efficient at the linking (or &#8220;connecting&#8221;) of <i>&#8220;nib&#8221;<\/i> file and\/or <i>&#8220;storyboard&#8221;<\/i> GUI objects to your ViewController.h code and for this, we&#8217;d really like to defer to a YouTube video we mentioned in a tutorial a long time back called <a target=\"_blank\" href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=105' title='Wish me luck \u2026 1 of ?) iOS Hello World on iPhone 5 simulator ...' rel=\"noopener\">Wish me luck \u2026 1 of ?) iOS Hello World on iPhone 5 simulator<\/a> &#8230; since then have worked out, with some web browsers, how to lob you at the exact bit, and am hoping you get <i>straight<\/i> to that <i>bit<\/i> with this <a target=\"_blank\" title='How to make iOS Apps - Intro to Xcode 4: Building Your First App' href='https:\/\/www.youtube.com\/watch?v=Ok70cZEIW3I#t=8m54s' rel=\"noopener\">link<\/a> (please have sound up to hear of role of the &#8220;control&#8221; button &#8220;while dragging&#8221;).  By the way, the pink circle shows a new web page link (not the app this time) to link back to the mobile app from the web page iframe element and the orange circle shows the <i>&#8220;Last&#8221;<\/i> (Blog Course Posting) link which, in this mobile scenario, on an iPad, would use our PHP <i>&#8220;Clayton&#8217;s&#8221;<\/i> cookies system.<\/p>\n<p>We test the new changes deployed on a real iPad device today, the idea of which is more than somewhat verging on great, as you can&#8217;t rely on simulators forever (by the way, with iOS 8 simulators we had <a target=\"_blank\" title='Search Google for problem ... thanks' href='https:\/\/www.google.com.au\/search?q=%22An+error+was+encountered+while+running+%28Domain+%3D+DTiPhoneSimulatorErrorDomain%2C+Code+%3D+2%29%22&#038;ie=utf-8&#038;oe=utf-8&#038;aq=t&#038;rls=org.mozilla:en-US:official&#038;client=firefox-a&#038;channel=sb&#038;gfe_rd=cr&#038;ei=An9AVJ2ZGsGN8QfL14DoDA' rel=\"noopener\">problems<\/a> and we needed to consult with <a target=\"_blank\" title='iOS version 8 simulator error' href='http:\/\/stackoverflow.com\/questions\/12932750\/ios-simulator-failed-to-install-the-application\/13006893' rel=\"noopener\">this link<\/a> &#8230; where you may notice that we ended up reverting to iOS version 7.1 simulators &#8230; thanks), though the options in this field grow, as you can imagine, because it is impossible to keep up owning all the gadgetry you&#8217;d need as a programmer to test for everything with real devices.   Don&#8217;t confuse this &#8220;middle game&#8221; <i>&#8220;quality assurance&#8221;<\/i> or <i>&#8220;unit test&#8221;<\/i> concept with the concept of an &#8220;end game&#8221; deployment as an Apple App Store app (where there are quite a few extra steps to undertake).  When dealing with real devices you will need:<\/p>\n<ul>\n<li>the device &#8230; doh, chortle, doh, chortle<\/li>\n<li>the Mac OS X laptop that runs Xcode<\/li>\n<li>the white lead that temporarily connects your iPad or iPhone or iPod mobile device with your Mac OS X laptop that runs Xcode<\/li>\n<li>a lack of fear of all things <a target=\"_blank\" title='File synchronization information from Wikipedia ... thanks' href='http:\/\/en.wikipedia.org\/wiki\/File_synchronization' rel=\"noopener\"><i>&#8220;sync&#8221;<\/i><\/a><\/li>\n<li>the iTunes device (up arrow eject) button to safely eject the device (similar functionality as Windows icon right-click Eject options (in Windows Explorer))<\/li>\n<\/ul>\n<p>Here is a link to some downloadable PHP programming source code for an iOS Web App&#8217;s UIWebView&#8217;s underlying content, that is used when the platform is a mobile one, while the pre-existant <a target=\"_blank\" title='coursecookies.html' href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/coursecookies.html_GETME\" rel=\"noopener\">coursecookies.html<\/a> is still okay for non-mobile platforms which still use real cookies:<\/p>\n<ul>\n<li><a target=\"_blank\" title='coursecookies.php' href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/coursecookies.php_GETME\" rel=\"noopener\">coursecookies.php<\/a><\/li>\n<\/ul>\n<p>&#8230; and there were changes needed for PHP code in wp-content\/themes\/twentyten\/header.php (the bold parts of which are particularly relevant to the last modifications) because it establishes the header Javascript and two sections of code are involved &#8230;<\/p>\n<p><code><br \/>\nvar ourck=location.search.split('ck=')[1] ? location.search.split('ck=')[1].split('&')[0] : '';<br \/>\nvar ourpp=location.search.split('pp=')[1] ? location.search.split('pp=')[1].split('&')[0] : '';<br \/>\nvar ourpn=location.search.split('pn=')[1] ? location.search.split('pn=')[1].split('&')[0] : '';<br \/>\nvar ourpage=location.search.split('page_id=')[1] ? location.search.split('page_id=')[1].split('&')[0] : '';<br \/>\nvar ourp=location.search.split('p=')[1] ? location.search.split('p=')[1].split('&')[0] : '';<br \/>\nvar ourcourseurl='';<br \/>\nvar ourcoursetitle='';<br \/>\n<b><br \/>\nvar ua = navigator.userAgent;<br \/>\nvar isiPad = \/iPad\/i.test(ua) || \/iPhone OS 3_1_2\/i.test(ua) || \/Android\/i.test(ua) || \/iPhone OS 3_2_2\/i.test(ua);<\/p>\n<p>if (isiPad) {<br \/>\n  &lt;?php<br \/>\n             \/\/echo \"n alert('*\" . $_SERVER['REQUEST_URI'] . \"*'); n\";<br \/>\n    if (strpos(($_SERVER['REQUEST_URI'] . \"*\"), \"?p*\") !== false) {<br \/>\n             \/\/echo \"n alert('\" . $_SERVER['QUERY_STRING'] . \"'); n\";<\/p>\n<p>    $cstuffis = \"\";<\/p>\n<p>    $rma = $_SERVER['REMOTE_ADDR'];<br \/>\n    $ua = strtolower($_SERVER['HTTP_USER_AGENT']);<br \/>\n    \/\/ you can add different browsers with the same way ..<br \/>\n    if(preg_match('\/(chromium)[ \/]([w.]+)\/', $ua))<br \/>\n            $rma = '000000'.$rma;<br \/>\n    elseif(preg_match('\/(chrome)[ \/]([w.]+)\/', $ua))<br \/>\n            $rma = '00000'.$rma;<br \/>\n    elseif(preg_match('\/(safari)[ \/]([w.]+)\/', $ua))<br \/>\n            $rma = '0000'.$rma;<br \/>\n    elseif(preg_match('\/(opera)[ \/]([w.]+)\/', $ua))<br \/>\n            $rma = '000'.$rma;<br \/>\n    elseif(preg_match('\/(msie)[ \/]([w.]+)\/', $ua))<br \/>\n            $rma = '00'.$rma;<br \/>\n    elseif(preg_match('\/(mozilla)[ \/]([w.]+)\/', $ua))<br \/>\n            $rma = '0'.$rma;<\/p>\n<p>            echo \"n alert('\" . $ua . \"'); n\";<\/p>\n<p>        if (file_exists(dirname(__FILE__) . \"\/..\/PHP\/cookie_\" . $rma . \".is\")) {<br \/>\n          $cstuffis = file_get_contents(dirname(__FILE__) . \"\/cookie_\" . $rma . \".is\");<br \/>\n        } else if (file_exists(dirname(__FILE__) . \"\/..\/..\/..\/PHP\/cookie_\" . $rma . \".is\")) {<br \/>\n          $cstuffis = file_get_contents(dirname(__FILE__) . \"\/..\/..\/..\/PHP\/cookie_\" . $rma . \".is\");<br \/>\n        }<\/p>\n<p>        if ($cstuffis != \"\") {<br \/>\n          $actfs = explode(\"lastcourse=\", $cstuffis);<br \/>\n          if (sizeof($actfs) &gt; 1) {<br \/>\n           $aactfs = explode(\";\", $actfs[1]);<br \/>\n           if ($aactfs[0] != \"\") echo \"n location.href = '\" . $aactfs[0] . \"'; n\";<br \/>\n          }<br \/>\n        }<br \/>\n    }<br \/>\n  ?&gt;<br \/>\n}<br \/>\n<\/b><br \/>\n<\/code><\/p>\n<p>&#8230; at the top just under &lt;script type=&#8217;text\/javascript&#8217;&gt; and &#8230;<\/p>\n<p><code><\/p>\n<p>function topViaDelay() {<br \/>\n  parent.scroll(0, 0);<br \/>\n}<\/p>\n<p>function courseCookies() {<br \/>\n<b><br \/>\n  var ext = \".html\";  \/\/ \".php\"<br \/>\n  var extp = \".html?\";  \/\/ \".php\"<br \/>\n  var huhd = new Date();<br \/>\n  if (isiPad) {<br \/>\n    ext = \".php?date=\" + huhd;<br \/>\n    extp = \".php?date=\" + huhd + \"&\";<br \/>\n    if ((ourpp != \"\" || ourpn != \"\") && ourpp != ourp && ourpn != ourp) {<br \/>\n&lt;?php<br \/>\n    if ((isset($_GET['pp']) || isset($_GET['pn']))) {<br \/>\n    if ($_GET['p'] != $_GET['pp'] && $_GET['p'] != $_GET['pn'] && ($_GET['pn'] . $_GET['pp']) != \"\") {<\/p>\n<p>    $rma = $_SERVER['REMOTE_ADDR'];<br \/>\n    $ua = strtolower($_SERVER['HTTP_USER_AGENT']);<br \/>\n    \/\/ you can add different browsers with the same way ..<br \/>\n    if(preg_match('\/(chromium)[ \/]([w.]+)\/', $ua))<br \/>\n            $rma = '000000'.$rma;<br \/>\n    elseif(preg_match('\/(chrome)[ \/]([w.]+)\/', $ua))<br \/>\n            $rma = '00000'.$rma;<br \/>\n    elseif(preg_match('\/(safari)[ \/]([w.]+)\/', $ua))<br \/>\n            $rma = '0000'.$rma;<br \/>\n    elseif(preg_match('\/(opera)[ \/]([w.]+)\/', $ua))<br \/>\n            $rma = '000'.$rma;<br \/>\n    elseif(preg_match('\/(msie)[ \/]([w.]+)\/', $ua))<br \/>\n            $rma = '00'.$rma;<br \/>\n    elseif(preg_match('\/(mozilla)[ \/]([w.]+)\/', $ua))<br \/>\n            $rma = '0'.$rma;<\/p>\n<p>        if (file_exists(dirname(__FILE__) . \"\/..\/PHP\/coursecookies.html\")) {<br \/>\n          file_put_contents(dirname(__FILE__) . \"\/..\/PHP\/cookie_\" . $rma . \".is\", \"lastcourse=\" . \"http:\/\/\" . $_SERVER['SERVER_NAME'] . \":\" . $_SERVER['SERVER_PORT'] . $_SERVER['REQUEST_URI'] . \"; \");<br \/>\n        } else if (file_exists(dirname(__FILE__) . \"\/..\/..\/..\/..\/PHP\/coursecookies.html\")) {<br \/>\n            \/\/ echo \"n alert('\" . dirname(__FILE__) . \"\/..\/..\/..\/..\/PHP\/coursecookies.html\" . \"'); n\";<br \/>\n          file_put_contents(dirname(__FILE__) . \"\/..\/..\/..\/..\/PHP\/cookie_\" . $rma . \".is\", \"lastcourse=\" . \"http:\/\/\" . $_SERVER['SERVER_NAME'] . \":\" . $_SERVER['SERVER_PORT'] . $_SERVER['REQUEST_URI'] . \"; \");<br \/>\n        }<br \/>\n      }<br \/>\n      }<br \/>\n?&gt;<br \/>\n   }<br \/>\n  }<br \/>\n<\/b><br \/>\n  if (document.URL.indexOf(\"#content\") != -1) {<br \/>\n    setTimeout(topViaDelay, 2000);<br \/>\n  } else {<br \/>\n   if ((ourpp != \"\" || ourpn != \"\") && ourpp != ourp && ourpn != ourp) {<br \/>\n<b><br \/>\n    document.getElementById(\"content\").innerHTML = \"&lt;iframe width=1 height=1 id='myccor' src='\" + document.URL.replace(\"\/wordpress\/?\", \"\/PHP\/coursecookies\" + extp).replace(\"\/wordpress\/\", \"\/PHP\/coursecookies\" + ext)  + \"'&gt;&lt;\/iframe&gt;\" + document.getElementById(\"content\").innerHTML;<br \/>\n<\/b><br \/>\n    setTimeout(topViaDelay, 2000);<br \/>\n   } else {<br \/>\n<b><br \/>\n    document.getElementById(\"content\").innerHTML = \"&lt;iframe width=1 height=1 id='myccor' src='..\/PHP\/coursecookies\" + ext + \"'&gt;&lt;\/iframe&gt;\" + document.getElementById(\"content\").innerHTML;<br \/>\n<\/b><br \/>\n   }<br \/>\n  }<br \/>\n}<\/p>\n<p>&lt;\/script&gt;<br \/>\n&lt;\/head&gt;<\/p>\n<p>&lt;body onload=\"courseCookies();\" &lt;?php body_class(); ?&gt;&gt;<br \/>\n<\/code><\/p>\n<p>&#8230; around  &lt;\/script&gt;<\/p>\n<p><\/code><\/p>\n<\/li>\n<\/ul>\n<p>Thanks for visiting today&#8217;s <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/LearningProgramming\/LearningProgramming_LastCoursePosting_iOS.jpg\" title=\"Click picture\" rel=\"noopener\">tutorial<\/a>.<\/p>\n<hr \/>\n<p id='xlppt'>Previous relevant <a target=\"_blank\" href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=10287' title='Xcode Learning Programming Primer Tutorial' rel=\"noopener\">Xcode Learning Programming Primer Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/LearningProgramming\/LearningProgramming_iOS.jpeg\" rel=\"noopener\"><img decoding=\"async\" style=\"float:left; border: 15px solid pink;\" alt=\"Xcode Learning Programming Primer Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/LearningProgramming\/LearningProgramming_iOS.jpeg\" title=\"Xcode Learning Programming Primer Tutorial\" id=\"oijximpept\" onmouseover=\" this.src=this.src.replace('.jpg','.JPEG').replace('.jpeg','.GIF').replace('.png','.jpg').replace('.gif','.png').replace('.JPEG','.jpeg').replace('.GIF','.gif');   \" \/><\/a><p class=\"wp-caption-text\">Xcode Learning Programming Primer Tutorial<\/p><\/div>\n<p>Today we make use of the ideas from two previous tutorials called <a target=\"_blank\" href='#xidupt' title='Xcode iOS Dynamic UIButton Primer Tutorial' rel=\"noopener\">Xcode iOS Dynamic UIButton Primer Tutorial<\/a> as below and <a target=\"_blank\" href='#ximpept' title='Xcode iOS Mobile Project Exporting Primer Tutorial' rel=\"noopener\">Xcode iOS Mobile Project Exporting Primer Tutorial<\/a> as shown way below, covering the Xcode iOS Mobile App issue (ie. the &#8220;UIWebView &#8216;on its lonesome&#8217; issue&#8221;) to create an iOS mobile app for our <a target=\"_blank\" href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=705' title='Learning Programming Android App' rel=\"noopener\">Learning Programming<\/a> idea extended to include the option of <a target=\"_blank\" href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=10064' title='WordPress Blog Course Design Cookies Tutorial' rel=\"noopener\">Blog Course Postings<\/a>, and using dynamic UIButton to:<\/p>\n<ol>\n<li><a target=\"_blank\" href='#xidupt' title='Xcode iOS Dynamic UIButton Primer Tutorial' rel=\"noopener\">show you<\/a> how to add a dynamic <a target=\"_blank\" title='UIButton information from Apple' href='https:\/\/developer.apple.com\/library\/ios\/documentation\/uikit\/reference\/uibutton_class\/index.html' rel=\"noopener\">UIButton<\/a> at loading (if you want to know &#8230; thanks to the great Open Source community for all the ideas emanating from this <a target=\"_blank\" title='Dynamic UIButton ideas ... thanks' href='http:\/\/stackoverflow.com\/questions\/1378765\/how-do-i-create-a-basic-uibutton-programmatically' rel=\"noopener\">link<\/a>)<\/li>\n<li>also is one way to solve the UIWebView &#8220;on its lonesome&#8221; issue (when pointing at URLs without total navigational integrity (ie. they have <i>a<\/i> tags with <i>target=&#8217;_blank&#8217;<\/i> for instance)) &#8230; <b>&#8216;(but please know such a scenario is not good without also providing, at least, buttons for the equivalent functionality as the web browser&#8217;s back and forward buttons &#8230; remember, with UIWebView there is no address bar, and no multiple tabs nor windows &#8230; if your webpage has complete forward and backward navigational integrity that could suit a UIWebView <i>&#8220;on its lonesome&#8221;<\/i>)&#8217;<\/b> &#8230; mentioned in <a target=\"_blank\" href='#ximpept' title='Xcode iOS Mobile Project Exporting Primer Tutorial' rel=\"noopener\">Xcode iOS Mobile Project Exporting Primer Tutorial<\/a> as shown below<\/li>\n<\/ol>\n<p id='xmyptoday'>As a general comment about Xcode iOS mobile development (but please note that the idea of step 1. above circumvents the complication &#8230; by the way, the two small red circles in the tutorial <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/LearningProgramming\/LearningProgramming_iOS.jpeg\" title=\"Click picture\" rel=\"noopener\">picture<\/a> are me showing you where the Back and Forward buttons are (rather than the code ) &#8230; now that iOS 8 buttons have no background by default it is sometimes necessary to point them out) you must try to get efficient at the linking (or &#8220;connecting&#8221;) of <i>&#8220;nib&#8221;<\/i> file and\/or <i>&#8220;storyboard&#8221;<\/i> GUI objects to your ViewController.h code and for this, we&#8217;d really like to defer to a YouTube video we mentioned in a tutorial a long time back called <a target=\"_blank\" href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=105' title='Wish me luck \u2026 1 of ?) iOS Hello World on iPhone 5 simulator ...' rel=\"noopener\">Wish me luck \u2026 1 of ?) iOS Hello World on iPhone 5 simulator<\/a> &#8230; since then have worked out, with some web browsers, how to lob you at the exact bit, and am hoping you get <i>straight<\/i> to that <i>bit<\/i> with this <a target=\"_blank\" title='How to make iOS Apps - Intro to Xcode 4: Building Your First App' href='https:\/\/www.youtube.com\/watch?v=Ok70cZEIW3I#t=8m54s' rel=\"noopener\">link<\/a> (please have sound up to hear of role of the &#8220;control&#8221; button &#8220;while dragging&#8221;).  By the way, the green circle shows a new web page link (not the app this time) to link back to the mobile app from the web page iframe element.<\/p>\n<p>We test the change&#8217;s deployment on a real iPad device today, the idea of which is somewhat verging on great, as you can&#8217;t rely on simulators forever (by the way, with iOS 8 simulators we had <a target=\"_blank\" title='Search Google for problem ... thanks' href='https:\/\/www.google.com.au\/search?q=%22An+error+was+encountered+while+running+%28Domain+%3D+DTiPhoneSimulatorErrorDomain%2C+Code+%3D+2%29%22&#038;ie=utf-8&#038;oe=utf-8&#038;aq=t&#038;rls=org.mozilla:en-US:official&#038;client=firefox-a&#038;channel=sb&#038;gfe_rd=cr&#038;ei=An9AVJ2ZGsGN8QfL14DoDA' rel=\"noopener\">problems<\/a> and we needed to consult with <a target=\"_blank\" title='iOS version 8 simulator error' href='http:\/\/stackoverflow.com\/questions\/12932750\/ios-simulator-failed-to-install-the-application\/13006893' rel=\"noopener\">this link<\/a> &#8230; where you may notice that we ended up reverting to iOS version 7.1 simulators &#8230; thanks), though the options in this field grow, as you can imagine, because it is impossible to keep up owning all the gadgetry you&#8217;d need as a programmer to test for everything with real devices.   Don&#8217;t confuse this &#8220;middle game&#8221; <i>&#8220;quality assurance&#8221;<\/i> or <i>&#8220;unit test&#8221;<\/i> concept with the concept of an &#8220;end game&#8221; deployment as an Apple App Store app (where there are quite a few extra steps to undertake).  When dealing with real devices you will need:<\/p>\n<ul>\n<li>the device &#8230; doh, chortle, doh, chortle<\/li>\n<li>the Mac OS X laptop that runs Xcode<\/li>\n<li>the white lead that temporarily connects your iPad or iPhone or iPod mobile device with your Mac OS X laptop that runs Xcode<\/li>\n<li>a lack of fear of all things <a target=\"_blank\" title='File synchronization information from Wikipedia ... thanks' href='http:\/\/en.wikipedia.org\/wiki\/File_synchronization' rel=\"noopener\"><i>&#8220;sync&#8221;<\/i><\/a><\/li>\n<li>the iTunes device (up arrow eject) button to safely eject the device (similar functionality as Windows icon right-click Eject options (in Windows Explorer))<\/li>\n<\/ul>\n<p>Here is a link to some downloadable Xcode (on a Mac laptop) Objective-C programming source code for an iOS Web App which turns this WordPress Blog into a mobile app (of more use than the one of the tutorial below &#8230; because of the addition of two UIButtons for Back and Forward <i><b>UIWebView<\/b><\/i> navigation (as distinct from the website navigation &#8230; ie. the buttons belong to the app, not the website, even though they look as though they could belong to the website)) which you may want to rename to <a target=\"_blank\" title='AppDelegate.h' href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/LearningProgramming\/AppDelegate.h_GETME\" rel=\"noopener\">AppDelegate.h<\/a>, <a target=\"_blank\" title='AppDelegate.m' href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/LearningProgramming\/AppDelegate.m_GETME\" rel=\"noopener\">AppDelegate.m<\/a>, <a target=\"_blank\" title='ViewController.h' href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/LearningProgramming\/ViewController.h_GETME\" rel=\"noopener\">ViewController.h<\/a>, <a target=\"_blank\" title='ViewController.m' href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/LearningProgramming\/ViewController.m_GETME\" rel=\"noopener\">ViewController.m<\/a> and <a target=\"_blank\" title='main.m' href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/LearningProgramming\/main.m_GETME\" rel=\"noopener\">main.m<\/a> <\/p>\n<p>What needed to change to integrate Blog Course Postings as extra functionality into the existing Learning Programming software was:<\/p>\n<ul>\n<li>changes to <a target=\"_blank\" title='design_a_course.php' href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/PHP\/design_a_course.php---GETME\" rel=\"noopener\">design_a_course.php<\/a> &#8230; to get this into context try reading <a target=\"_blank\" title='WordPress Blog Course Design Cookies Tutorial' href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=10064' rel=\"noopener\">WordPress Blog Course Design Cookies Tutorial<\/a> and <a target=\"_blank\" href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=705' title='Learning Programming Android App' rel=\"noopener\">Learning Programming Android App<\/a><\/li>\n<li>changes to the Learning Programming landing page as you can see <a target=\"_blank\" title='Learning Programming landing page changes' href='http:\/\/www.rjmprogramming.com.au\/PHP\/indexOfLearningProgramming.diffs' rel=\"noopener\">here<\/a><\/li>\n<li>changes to  PHP code in this WordPress Blog&#8217;s document root&#8217;s wp-content\/themes\/twentyten\/functions.php (in bold below &#8230; to get this into context try reading <a target=\"_blank\" title='WordPress Blog Course Design Cookies Tutorial' href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=10064' rel=\"noopener\">WordPress Blog Course Design Cookies Tutorial<\/a>):\n<p><code><\/p>\n<p>if ( ! function_exists( 'may_be_obsolete' ) ) :<br \/>\n\/**<br \/>\n * Truncate unknown previous\/next.<br \/>\n *<br \/>\n * @since October 2014 by RJM Programming<br \/>\n *\/<br \/>\nfunction may_be_obsolete($proposed) {<br \/>\n  if (strpos($proposed, \"&gt;Previous\") !== false) {<br \/>\n    if (strpos(($proposed . \"&\"), \"&pp=&\") !== false) {<br \/>\n      $bitsare = explode(\"&gt;\", $proposed);<br \/>\n      $nums = explode(\"=\", str_replace(\"&\", \"=\", str_replace(\"&pp=\", \"\", str_replace(\"&pn\", \"\", str_replace(\"?p=\", \"\", $proposed)))));<br \/>\n      if ($nums[0] == $nums[1]) {<br \/>\n        $proposed = str_replace($bitsare[sizeof($bitsare) - 1], \"\", $proposed);<br \/>\n      }<br \/>\n    }<br \/>\n  } else if (strpos($proposed, \"&gt;Next\") !== false) {<br \/>\n    if (strpos(($proposed . \"&\"), \"&pn=&\") !== false) {<br \/>\n      $bitsare = explode(\"&gt;\", $proposed);<br \/>\n      $nums = explode(\"=\", str_replace(\"&\", \"=\", str_replace(\"&pn=\", \"\", str_replace(\"&pp\", \"\", str_replace(\"?p=\", \"\", $proposed)))));<br \/>\n      if ($nums[0] == $nums[1]) {<br \/>\n        $proposed = str_replace($bitsare[sizeof($bitsare) - 1], \"\", $proposed);<br \/>\n      }<br \/>\n    }<br \/>\n  }<br \/>\n  return $proposed;<br \/>\n}<br \/>\nendif;<\/p>\n<p>if ( ! function_exists( 'get_other_one' ) ) :<br \/>\n\/**<br \/>\n * Get unknown previous\/next.<br \/>\n *<br \/>\n * @since October 2014 by RJM Programming<br \/>\n *\/<br \/>\nfunction get_other_one($proposedp, $onetogetprefix, $onep) {<br \/>\n  if (file_exists(\"..\/PHP\/\" . $proposedp . \"_\" . $_SERVER['REMOTE_ADDR'] . \".npg\")) {<br \/>\n    $prehuh = file_get_contents(\"..\/PHP\/\" . $proposedp . \"_\" . $_SERVER['REMOTE_ADDR'] . \".npg\");<br \/>\n    $xxpa = explode(str_replace(\"&\", \"\", $onetogetprefix), $prehuh);<br \/>\n    $xxpaa = explode(\"&\", $xxpa[sizeof($xxpa) - 1]);<br \/>\n    return $proposedp . $onetogetprefix . $xxpaa[0];<br \/>\n  } else if (file_exists(\"..\/PHP\/\" . $onep . \"_\" . $_SERVER['REMOTE_ADDR'] . \".npg\")) {<br \/>\n    $prehuh = file_get_contents(\"..\/PHP\/\" . $onep . \"_\" . $_SERVER['REMOTE_ADDR'] . \".npg\");<br \/>\n    $xxpa = explode(str_replace(\"&\", \"\", $onetogetprefix), $prehuh);<br \/>\n    $xxpaa = explode(\"&\", $xxpa[sizeof($xxpa) - 1]);<br \/>\n    return $onep . $onetogetprefix . $xxpaa[0];<br \/>\n  }<br \/>\n  $huh = file_get_contents(dirname(__FILE__) . \"\/..\/..\/..\/..\/index.html\");<br \/>\n  if ($proposedp == \"\") {<br \/>\n    $xxp = explode(\"?p=\" . $onep . \"&\", $huh);<br \/>\n    if (sizeof($xxp) &gt; 1) {<br \/>\n      $xxpa = explode(str_replace(\"&\", \"\", $onetogetprefix), $xxp[1]);<br \/>\n      $xxpaa = explode(\"&\", $xxpa[sizeof($xxpa) - 1]);<br \/>\n      return $onep . $onetogetprefix . $xxpaa[0];<br \/>\n    }<br \/>\n    return $onep;<br \/>\n  } else {<br \/>\n    $xxp = explode(\"?p=\" . $proposedp . \"&\", $huh);<br \/>\n    if (sizeof($xxp) &gt; 1) {<br \/>\n      $xxpa = explode(str_replace(\"&\", \"\", $onetogetprefix), $xxp[1]);<br \/>\n      $xxpaa = explode(\"&\", $xxpa[sizeof($xxpa) - 1]);<br \/>\n      return $proposedp . $onetogetprefix . $xxpaa[0];<br \/>\n    }<br \/>\n    return $proposedp;<br \/>\n  }<br \/>\n  return $proposedp;<br \/>\n}<br \/>\nendif;<\/p>\n<p>if ( ! function_exists( 'get_tutorial_topic' ) ) :<br \/>\n\/**<br \/>\n * Get tutorial topic (word).<br \/>\n *<br \/>\n * @since October 2014 by RJM Programming<br \/>\n *\/<br \/>\nfunction get_tutorial_topic($thistopic) {<br \/>\n  $words = explode(\" \", str_replace(\"  \", \"++\", str_replace(\"~~\", \"#~\", $thistopic)));<br \/>\n  if (sizeof($words) &gt; 1) {<br \/>\n    return \" \" . $words[0];<br \/>\n  }<br \/>\n  return \"\";<br \/>\n}<br \/>\nendif;<\/p>\n<p>if ( ! function_exists( 'previous_next' ) ) :<br \/>\n\/**<br \/>\n * Allow for next and previous via &pn= and &pp= respectively.<br \/>\n *<br \/>\n * @since October 2014 by RJM Programming<br \/>\n *\/<br \/>\nfunction previous_next($both = true) {<br \/>\n  if (isset($_GET['pp']) || isset($_GET['pn'])) {<br \/>\n      $prefix = \" id='atop\";<br \/>\n      if ($both) $prefix = \" id='abottom\";<br \/>\n      $topic = \"\";<br \/>\n      $tget = \"\";<br \/>\n<b><br \/>\n          $topsuff = \"\";<br \/>\n          $isuff = \"#content\";<br \/>\n\t  $isiPad = (bool) strpos($_SERVER['HTTP_USER_AGENT'],'iPad');<br \/>\n\t  if ($isiPad === false) {<br \/>\n  \t\t$isiPad = (bool) strpos($_SERVER['HTTP_USER_AGENT'],'iPhone');<br \/>\n\t  }<br \/>\n\t  if ($isiPad === false) {<br \/>\n  \t\t$isiPad = (bool) strpos($_SERVER['HTTP_USER_AGENT'],'Android');<br \/>\n\t  }<br \/>\n          if ($isiPad) $isuff = \"&content=y\";<br \/>\n<\/b><br \/>\n\t  if (isset($_GET['title'])) {<br \/>\n\t\t$tget = \"&title=\" . $_GET['title'];<br \/>\n\t\t$topic = str_replace(\"~\", \" \", get_tutorial_topic(str_replace(\"_\", \" \", $_GET['title'])));<br \/>\n                <b>if ($both) $topsuff = \"&nbsp;&nbsp;&lt;a href='#content' title='Back to \" . str_replace(\"~\", \" \", $_GET['title']) . \"'&gt;^&lt;\/a&gt;&nbsp;&nbsp;\";  <\/b><br \/>\n\t  } else {<br \/>\n        $topic = str_replace(\"~\", \" \", get_tutorial_topic($post-&gt;title));<br \/>\n      }<br \/>\n      if (strpos(($_SERVER['QUERY_STRING'] . \"&\"), \"&pp=&pn=&\") !== false) {<br \/>\n       $prefix = $prefix;<br \/>\n      } else {<br \/>\n       echo \"&lt;table style='width:98%; background-color: #F6F5F1;'&gt;&lt;tbody&gt;&lt;tr&gt;\";<br \/>\n       <b>$cbackto = \"\";<br \/>\n       if (isset($_GET['backto'])) $isuff = \"&content=y\";<br \/>\n       if (isset($_GET['backto'])) $cbackto = \"&backto=\" . urldecode($_GET['backto']);<\/b><br \/>\n       if (isset($_GET['pp'])) {<br \/>\n        <b>echo \"&lt;th&gt;&lt;a\" . $prefix . \"p' target=_blank title='Previous' href='\" . str_replace(\"?\" . $_SERVER['QUERY_STRING'], \"\", $_SERVER['REQUEST_URI']) . \"?p=\" . may_be_obsolete(get_other_one($_GET['pp'], \"&pp=\", $_GET['p']) . \"&pn=\" . $_GET['p'] . $tget . $cbackto . \"'&gt;Previous\" . $topic . \" Suggestion\") . \"&lt;\/a&gt;\" . $topsuff . \"&lt;\/th&gt;\";<br \/>\n             $topsuff = \"\";<\/b><br \/>\n       }<br \/>\n       if (isset($_GET['pn'])) {<br \/>\n        <b>echo \"&lt;th&gt;\" . $topsuff . \"&lt;a\" . $prefix . \"n' target=_blank title='Next' href='\" . str_replace(\"?\" . $_SERVER['QUERY_STRING'], \"\", $_SERVER['REQUEST_URI']) . \"?p=\" . may_be_obsolete(get_other_one($_GET['pn'], \"&pn=\", $_GET['p']) . \"&pp=\" . $_GET['p'] . $tget . $cbackto . \"'&gt;Next\" . $topic . \" Suggestion\") . \"&lt;\/a&gt;&lt;th&gt;\"; <\/b><br \/>\n       }<br \/>\n       <b>if (isset($_GET['backto'])) echo \"&lt;th&gt;&lt;a target=_top href='\" . urldecode($_GET['backto']) . \"' title='Back to Learning Programming'&gt;Learning Programming&lt;\/a&gt;&lt;\/th&gt;\"; <\/b><br \/>\n       if ($both) {<br \/>\n        echo \"&lt;\/tr&gt;&lt;tr&gt;\";<br \/>\n        if (isset($_GET['pp'])) {<br \/>\n         <b>echo \"&lt;td&gt;&lt;iframe src='\" . str_replace(\"?\" . $_SERVER['QUERY_STRING'], \"\", $_SERVER['REQUEST_URI']) . \"?p=\" . $_GET['pp'] . $isuff . \"' width=400 height=800&gt;&lt;\/iframe&gt;&lt;\/td&gt;\"; <\/b><br \/>\n        }<br \/>\n        if (isset($_GET['pn'])) {<br \/>\n         <b>echo \"&lt;td&gt;&lt;iframe src='\" . str_replace(\"?\" . $_SERVER['QUERY_STRING'], \"\", $_SERVER['REQUEST_URI']) . \"?p=\" . $_GET['pn'] . $isuff . \"' width=400 height=800&gt;&lt;\/iframe&gt;&lt;\/td&gt;\"; <\/b><br \/>\n        }<br \/>\n        <b>echo \"&lt;td&gt;&lt;a href='#content' title='Back to \" . $topic . \"'&gt;\" . $topic . \"&lt;\/a>&lt;\/td&gt;\"; <\/b><br \/>\n      }<br \/>\n      echo \"&lt;\/tr&gt;&lt;\/tbody&gt;&lt;\/table&gt;\";<br \/>\n      }<br \/>\n  }<br \/>\n}<br \/>\nendif;<\/p>\n<p><\/code><\/p>\n<\/li>\n<\/ul>\n<p>Thanks for visiting today&#8217;s <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/LearningProgramming\/LearningProgramming_iOS.jpeg\" title=\"Click picture\" rel=\"noopener\">tutorial<\/a>.<\/p>\n<hr \/>\n<p id='xidupt'>Previous relevant <a target=\"_blank\" href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=10239' title='Xcode iOS Dynamic UIButton Primer Tutorial' rel=\"noopener\">Xcode iOS Dynamic UIButton Primer Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/iOS_Dynamic_Buttons.png\" rel=\"noopener\"><img decoding=\"async\" style=\"float:left; border: 15px solid pink;\" alt=\"Xcode iOS Dynamic UIButton Primer Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/iOS_Dynamic_Buttons.png\" title=\"Xcode iOS Dynamic UIButton Primer Tutorial\" id=\"ijximpept\" onmouseover=\" this.src=this.src.replace('.jpg','.PNG').replace('.png','.jpg').replace('.PNG','.png');   \" \/><\/a><p class=\"wp-caption-text\">Xcode iOS Dynamic UIButton Primer Tutorial<\/p><\/div>\n<p>Today we come at an Xcode iOS Mobile App issue (ie. the &#8220;UIWebView &#8216;on its lonesome&#8217; issue&#8221; &#8230; codename <a target=\"_blank\" href='https:\/\/www.youtube.com\/watch?v=6iaz0GIlSzM' title='All four letter acronym mean something ... do not you agree, my liege?' rel=\"noopener\">Uiol<\/a>) from two sides:<\/p>\n<ol>\n<li>to show you how to add a dynamic <a target=\"_blank\" title='UIButton information from Apple' href='https:\/\/developer.apple.com\/library\/ios\/documentation\/uikit\/reference\/uibutton_class\/index.html' rel=\"noopener\">UIButton<\/a> at loading (if you want to know &#8230; thanks to the great Open Source community for all the ideas emanating from this <a target=\"_blank\" title='Dynamic UIButton ideas ... thanks' href='http:\/\/stackoverflow.com\/questions\/1378765\/how-do-i-create-a-basic-uibutton-programmatically' rel=\"noopener\">link<\/a>)<\/li>\n<li>also is one way to solve the UIWebView &#8220;on its lonesome&#8221; issue (when pointing at URLs without total navigational integrity (ie. they have <i>a<\/i> tags with <i>target=&#8217;_blank&#8217;<\/i> for instance)) &#8230; <b>&#8216;(but please know such a scenario is not good without also providing, at least, buttons for the equivalent functionality as the web browser&#8217;s back and forward buttons &#8230; remember, with UIWebView there is no address bar, and no multiple tabs nor windows &#8230; if your webpage has complete forward and backward navigational integrity that could suit a UIWebView <i>&#8220;on its lonesome&#8221;<\/i>)&#8217;<\/b> &#8230; mentioned in <a target=\"_blank\" href='#ximpept' title='Xcode iOS Mobile Project Exporting Primer Tutorial' rel=\"noopener\">Xcode iOS Mobile Project Exporting Primer Tutorial<\/a> as shown below<\/li>\n<\/ol>\n<p id='myptoday'>As a general comment about Xcode iOS mobile development (but please note that the idea of step 1. above circumvents the complication &#8230; by the way, the two small yellow circles in the tutorial <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/iOS_Dynamic_Buttons.png\" title=\"Click picture\" rel=\"noopener\">picture<\/a> are me showing you where the Back and Forward buttons are (rather than the code (which is still stuck on working out how to make toast in the morning before you get up, even before you thought you knew you wanted it &#8230; codename <a href='#myptoday' onclick=' alert(\"Does not compute ... chortle, chortle\"); '><i>Wohtmtitmbygu_Ebutykywi<\/i><\/a>)) &#8230; now that iOS 8 buttons have no background by default it is sometimes necessary to point them out) you must try to get efficient at the linking (or &#8220;connecting&#8221;) of <i>&#8220;nib&#8221;<\/i> file and\/or <i>&#8220;storyboard&#8221;<\/i> GUI objects to your ViewController.h code and for this, we&#8217;d really like to defer to a YouTube video we mentioned in a tutorial a long time back called <a target=\"_blank\" href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=105' title='Wish me luck \u2026 1 of ?) iOS Hello World on iPhone 5 simulator ...' rel=\"noopener\">Wish me luck \u2026 1 of ?) iOS Hello World on iPhone 5 simulator<\/a> &#8230; since then have worked out, with some web browsers, how to lob you at the exact bit, and am hoping you get <i>straight<\/i> to that <i>bit<\/i> with this <a target=\"_blank\" title='How to make iOS Apps - Intro to Xcode 4: Building Your First App' href='https:\/\/www.youtube.com\/watch?v=Ok70cZEIW3I#t=8m54s' rel=\"noopener\">link<\/a> (please have sound up to hear of role of the &#8220;control&#8221; button &#8220;while dragging&#8221;).<\/p>\n<p>We test the change&#8217;s deployment on a real iPad device today, the idea of which is somewhat verging on great, as you can&#8217;t rely on simulators forever, though the options in this field grow, as you can imagine, because it is impossible to keep up owning all the gadgetry you&#8217;d need as a programmer to test for everything with real devices.   Don&#8217;t confuse this &#8220;middle game&#8221; <i>&#8220;quality assurance&#8221;<\/i> or <i>&#8220;unit test&#8221;<\/i> concept with the concept of an &#8220;end game&#8221; deployment as an Apple App Store app (where there are quite a few extra steps to undertake).  When dealing with real devices you will need:<\/p>\n<ul>\n<li>the device &#8230; doh, chortle, doh, chortle<\/li>\n<li>the Mac OS X laptop that runs Xcode<\/li>\n<li>the white lead that temporarily connects your iPad or iPhone or iPod mobile device with your Mac OS X laptop that runs Xcode<\/li>\n<li>a lack of fear of all things <a target=\"_blank\" title='File synchronization information from Wikipedia ... thanks' href='http:\/\/en.wikipedia.org\/wiki\/File_synchronization' rel=\"noopener\"><i>&#8220;sync&#8221;<\/i><\/a><\/li>\n<li>the iTunes device (up arrow eject) button to safely eject the device (similar functionality as Windows icon right-click Eject options (in Windows Explorer))<\/li>\n<\/ul>\n<p>Here is a link to some downloadable Xcode (on a Mac laptop) Objective-C programming source code for an iOS Web App which turns this WordPress Blog into a mobile app (of more use than the one of the tutorial below &#8230; because of the addition of two UIButtons for Back and Forward <i><b>UIWebView<\/b><\/i> navigation (as distinct from the website navigation &#8230; ie. the buttons belong to the app, not the website, even though they look as though they could belong to the website)) which you may want to rename to <a target=\"_blank\" title='AppDelegate.h' href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/AppDelegate.h_GETME\" rel=\"noopener\">AppDelegate.h<\/a>, <a target=\"_blank\" title='AppDelegate.m' href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/AppDelegate.m_GETME\" rel=\"noopener\">AppDelegate.m<\/a>, <a target=\"_blank\" title='ViewController.h' href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/ViewController.h_GETME\" rel=\"noopener\">ViewController.h<\/a>, <a target=\"_blank\" title='ViewController.m' href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/ViewController.m-GETME\" rel=\"noopener\">ViewController.m<\/a> and <a target=\"_blank\" title='main.m' href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/main.m_GETME\" rel=\"noopener\">main.m<\/a> <\/p>\n<p>The only code that needed to change for <i>Dynamic UIButton purposes<\/i> is described via the link &#8230; <a target=\"_blank\" title='ViewController.m' href='http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/ViewController.m-GETME' rel=\"noopener\">ViewController.m<\/a><\/p>\n<hr \/>\n<p id='ximpept'>Previous relevant <a target=\"_blank\" href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=10082' title='Xcode iOS Mobile Project Exporting Primer Tutorial' rel=\"noopener\">Xcode iOS Mobile Project Exporting Primer Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/\" rel=\"noopener\"><img decoding=\"async\" style=\"float:left; border: 15px solid pink;\" alt=\"Xcode iOS Mobile Project Exporting Primer Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/Xcode_iOS_Project_Exporting-72of.jpg\" title=\"Xcode iOS Mobile Project Exporting Primer Tutorial\" id=\"iximpept\" onmouseover=\" this.src=this.src.replace('-99of.jpg','-64of.JPG').replace('-64of.jpg','-72of.JPG').replace('-72of.jpg','-99of.JPG').replace('.JPG','.jpg');   \" \/><\/a><p class=\"wp-caption-text\">Xcode iOS Mobile Project Exporting Primer Tutorial<\/p><\/div>\n<p>The Xcode <a target=\"_blank\" title='IDE information from Wikipedia' href='http:\/\/en.wikipedia.org\/wiki\/Integrated_development_environment' rel=\"noopener\">IDE<\/a>, like many IDEs, holds that special fascination for the occasions when you, the user, (or youse, the users (chortle, chortle)) can go <i>&#8220;File->New Project&#8221;<\/i> as we showed, below, with the previous <a target=\"_blank\" href='#xiuapt' title='Xcode iOS Utility Application Primer Tutorial' rel=\"noopener\">Xcode iOS Utility Application Primer Tutorial<\/a>.   With a couple more button presses the user will feel that satisfaction of making the fastest progress they can expect to ever feel progressing on a project.   Today, though, we take that a little further along and say <i>&#8220;we&#8217;ve got this Xcode iOS Mobile Project that we would like to &#8216;clone&#8217; into a new project with a few tweaks because it is so close to what we want&#8221;<\/i>.   So you look around the <i>File<\/i> menu for mention of the word <i>Export<\/i>, as a first instinct, and, lo and behold it isn&#8217;t there &#8230; boo hoo.   So we go off and find this very <a target=\"_blank\" title='Useful link ... look for advice of Diago' href='http:\/\/stackoverflow.com\/questions\/4746557\/save-export-the-whole-project-in-xcode' rel=\"noopener\">useful link<\/a>, from which we &#8220;cherry pick&#8221; Diago&#8217;s advice, because it is all &#8220;d\u00e9j\u00e0 vu&#8221; all over again for me, and think we&#8217;ve gone through this mild pain before &#8230; thanks.<\/p>\n<p id='mypback'>Do all the workings of <i>&#8220;nib&#8221;<\/i> files and\/or <i>&#8220;storyboards&#8221;<\/i> come across? &#8230; Well, I hate to give away too many surprises so if you want to find out for yourself, view the <a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/\" title=\"Click picture\" rel=\"noopener\">tutorial<\/a>, and\/or have a sneak peek <a href=\"#mypback\" onclick=\" alert('Yes'); \">?<\/a><\/p>\n<p>Today, we show how, with the <a target=\"_blank\" title='Xcode IDE information from Apple' href='https:\/\/developer.apple.com\/technologies\/tools\/' rel=\"noopener\">Xcode<\/a> IDE and a bit of work the creation of a <a target=\"_blank\" title='Mobile app information from Wikipedia' href='http:\/\/en.wikipedia.org\/wiki\/Mobile_app' rel=\"noopener\">mobile application<\/a> showing the use of a <a target=\"_blank\" title='UIWebView information from Apple' href='https:\/\/developer.apple.com\/library\/ios\/documentation\/Uikit\/reference\/UIWebView_Class\/index.html' rel=\"noopener\">UIWebView<\/a>, the contents being this WordPress Blog (but please know such a scenario is not good without also providing, at least, buttons for the equivalent functionality as the web browser&#8217;s back and forward buttons &#8230; remember, with UIWebView there is no address bar, and no multiple tabs nor windows &#8230; if your webpage has complete forward and backward navigational integrity that could suit a UIWebView <i>&#8220;on its lonesome&#8221;<\/i>).<\/p>\n<p>And today we show you some steps in deploying it to an iPad &#8230; say some steps, because it ignores all the first steps regarding registering with Apple as an <a target=\"_blank\" title='Apple iOS Developer Program' href='https:\/\/developer.apple.com\/programs\/ios\/' rel=\"noopener\">iOS Developer<\/a> and getting your iPad registered as a development device associated with your iOS Developer Account (accessible by its associated <a target=\"_blank\" title='Apple ID information from Apple' href='https:\/\/appleid.apple.com\/' rel=\"noopener\">Apple ID<\/a>) &#8230; your (provisioning) profile &#8230; because this had already been done with the iPad involved &#8230; but if you are into &#8220;thrills and spills&#8221; (it wasn&#8217;t quite as straightforward as shown) take a geek at the upgrade of the iPad&#8217;s iOS (operating system) to 8.0.2 and Xcode (on the laptop) to an SDK to suit iOS 8 &#8230; the &#8220;it&#8217;s a great bag of fruit, it&#8217;s a <a target=\"_blank\" title=\"It's really there, if you look!\" href='http:\/\/www2b.abc.net.au\/science\/k2\/stn\/archives\/archive54\/newposts\/476\/topic476381.shtm' rel=\"noopener\"><strike>Silvertex<\/strike><\/a> iOS 8 suit&#8221; &#8230; very lame chortle, very lame chortle.<\/p>\n<p>So, as with Android development, all this is like the <i>&#8220;middle game&#8221;<\/i> that we talked about in Android development, and put into context with <a target=\"_blank\" href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=2377' title='Eclipse Android App Google Play Ready Primer Tutorial' rel=\"noopener\">Eclipse Android App Google Play Ready Primer Tutorial<\/a> &#8230; with mobile development there are not so big &#8220;start games&#8221;, big to huge &#8220;middle games&#8221; and big &#8220;end games&#8221; (less big with Android &#8220;end games&#8221;).<\/p>\n<p>As a general comment about Xcode iOS mobile development you must try to get efficient at the linking (or &#8220;connecting&#8221;) of <i>&#8220;nib&#8221;<\/i> file and\/or <i>&#8220;storyboard&#8221;<\/i> GUI objects to your ViewController.h code and for this, we&#8217;d really like to defer to a YouTube video we mentioned in a tutorial a long time back called <a target=\"_blank\" href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=105' title='Wish me luck \u2026 1 of ?) iOS Hello World on iPhone 5 simulator ...' rel=\"noopener\">Wish me luck \u2026 1 of ?) iOS Hello World on iPhone 5 simulator<\/a> &#8230; since then have worked out, with some web browsers, how to lob you at the exact bit, and am hoping you get <i>straight<\/i> to that <i>bit<\/i> with this <a target=\"_blank\" title='How to make iOS Apps - Intro to Xcode 4: Building Your First App' href='https:\/\/www.youtube.com\/watch?v=Ok70cZEIW3I#t=8m54s' rel=\"noopener\">link<\/a> (please have sound up to hear of role of the &#8220;control&#8221; button &#8220;while dragging&#8221;).<\/p>\n<p>This deployment to real devices, of course, is great, as you can&#8217;t rely on simulators forever, though the options in this field grow, as you can imagine, because it is impossible to keep up owning all the gadgetry you&#8217;d need as a programmer to test for everything with real devices.   Don&#8217;t confuse this &#8220;middle game&#8221; <i>&#8220;quality assurance&#8221;<\/i> or <i>&#8220;unit test&#8221;<\/i> concept with the concept of an &#8220;end game&#8221; deployment as an Apple App Store app (where there are quite a few extra steps to undertake).  When dealing with real devices you will need:<\/p>\n<ul>\n<li>the device &#8230; doh, chortle, doh, chortle<\/li>\n<li>the Mac OS X laptop that runs Xcode<\/li>\n<li>the white lead that temporarily connects your iPad or iPhone or iPod mobile device with your Mac OS X laptop that runs Xcode<\/li>\n<li>a lack of fear of all things <a target=\"_blank\" title='File synchronization information from Wikipedia ... thanks' href='http:\/\/en.wikipedia.org\/wiki\/File_synchronization' rel=\"noopener\"><i>&#8220;sync&#8221;<\/i><\/a><\/li>\n<li>the iTunes device (up arrow eject) button to safely eject the device (similar functionality as Windows icon right-click Eject options (in Windows Explorer))<\/li>\n<\/ul>\n<p>Here is a link to some downloadable Xcode (on a Mac laptop) Objective-C programming source code which you may want to rename to <a target=\"_blank\" title='AppDelegate.h' href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/AppDelegate.h_GETME\" rel=\"noopener\">AppDelegate.h<\/a>, <a target=\"_blank\" title='AppDelegate.m' href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/AppDelegate.m_GETME\" rel=\"noopener\">AppDelegate.m<\/a>, <a target=\"_blank\" title='ViewController.h' href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/ViewController.h_GETME\" rel=\"noopener\">ViewController.h<\/a>, <a target=\"_blank\" title='ViewController.m' href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/ViewController.m_GETME\" rel=\"noopener\">ViewController.m<\/a> and <a target=\"_blank\" title='main.m' href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Xcode\/iOS8\/UIWebView\/main.m_GETME\" rel=\"noopener\">main.m<\/a> <\/p>\n<hr \/>\n<p id='xiuapt'>Previous relevant <a target=\"_blank\" href='http:\/\/www.rjmprogramming.com.au\/wordpress\/?p=5855' title='Xcode iOS Utility Application Primer Tutorial' rel=\"noopener\">Xcode iOS Utility Application Primer Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"http:\/\/www.rjmprogramming.com.au\/C\/Objective-C\/Xcode\/iOS\/Utility\/\" rel=\"noopener\"><img decoding=\"async\" style=\"float:left; border: 15px solid pink;\" alt=\"Xcode iOS Utility Application Primer Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/C\/Objective-C\/Xcode\/iOS\/Utility\/UtilityApplication_99of.jpg\" title=\"Xcode iOS Utility Application Primer Tutorial\" \/><\/a><p class=\"wp-caption-text\">Xcode iOS Utility Application Primer Tutorial<\/p><\/div>\n<p>The Xcode <a target=\"_blank\" title='IDE information from Wikipedia' href='http:\/\/en.wikipedia.org\/wiki\/Integrated_development_environment' rel=\"noopener\">IDE<\/a>, like many IDEs, holds that special fascination for the occasions when you, the user, (or youse, the users (chortle, chortle)) can go <i>&#8220;File->New Project&#8221;<\/i>.   With a couple more button presses the user will feel that satisfaction of making the fastest progress they can expect to ever feel progressing on a project.<\/p>\n<p>This great feeling is well worth it, as long as the user doesn&#8217;t fall into the &#8220;post FNP navel gazing&#8221; period.<\/p>\n<p>Today, we show how, with the <a target=\"_blank\" title='Xcode IDE information from Apple' href='https:\/\/developer.apple.com\/technologies\/tools\/' rel=\"noopener\">Xcode<\/a> IDE and a few button presses, with no coding (yet), the user can achieve giant leaps in their Xcode iOS Utility <a target=\"_blank\" title='Mobile app information from Wikipedia' href='http:\/\/en.wikipedia.org\/wiki\/Mobile_app' rel=\"noopener\">mobile application<\/a>.<\/p>\n<p>IDEs are worth discussing in relation to pros and cons with respect to this:<\/p>\n<p>Pros are &#8230;<\/p>\n<ol>\n<li>speed of initial progress<\/li>\n<li>the clarity you get to do with the design aspects of seeing what you have after the initial non-coding FNP phase<\/li>\n<li>the main files you will ever need have been created in the right places with the correct permissions, etcetera<\/li>\n<li>any makefiles required will have been created and any additional files added will be handled by the IDE as far as keeping the (underlying) makefile up to date<\/li>\n<li>there is online help with IDE procedures and search engines are good with your IDE keyword<\/li>\n<li>multi-device scenarios catered for<\/li>\n<li>debugging facilities are great<\/li>\n<\/ol>\n<p>Cons might be <span style=\"color: red;\">(my argument is that you can control lots of these with awareness)<\/span> &#8230;<\/p>\n<ol>\n<li>what to do after speed of initial progress (&#8220;post FNP navel gazing&#8221;?), and the hard slog begins <span style=\"color: red;\">(take some time between this and your next bit of work planning the first few more important bits of the &#8220;hard slog&#8221; to do)<\/span><\/li>\n<li>the design has a lot of similarities to other products &#8220;out there&#8221; <span style=\"color: red;\">(plan for some things you want to do that can be done in a variety of ways and pick a way that you have never tried before, if applicable)<\/span><\/li>\n<li>you may have lost that intimate awareness of where each file is and what its role is for your project <span style=\"color: red;\">(go to the Finder or Windows Explorer or other, and locate your project, and see what&#8217;s there, now, preferably)<\/span><\/li>\n<li>you lack intimate understanding of how to compile your code when it comes to porting it to another environment <span style=\"color: red;\">(the next IDE along, if applicable, may help with this (we hope))<\/span><\/li>\n<li>the relationship of code to GUI can be baffling <span style=\"color: red;\">(practice the GUI to code linkage points, and look around more when succeeding, and remember that the more you practice the better you get)<\/span><\/li>\n<li>the diversity of choice of environment is sometimes unnecessary and confusing <span style=\"color: red;\">(this is worth putting up with, especially as the more scenarios you test, the more solid your project is)<\/span><\/li>\n<li>you may debug your way to a less efficient and elegant solution <span style=\"color: red;\">(leave debugging to only deeply embedded issues or problems, rather than using it in any way like a design tool)<\/span><\/li>\n<\/ol>\n<p>Think Pro 2. on its own, makes it worth while to use IDEs, as you can see what is behind you and ahead of you, and it helps you envisage the <i>&#8220;big picture&#8221;<\/i> of what you want to achieve overall.<\/p>\n<p>Here is a link to some downloadable Xcode (on a Mac laptop) Objective-C programming source code which you may want to rename to <a target=\"_blank\" title='AppDelegate.h' href=\"http:\/\/www.rjmprogramming.com.au\/C\/Objective-C\/Xcode\/iOS\/Utility\/AppDelegate.h_GETME\" rel=\"noopener\">AppDelegate.h<\/a>, <a target=\"_blank\" title='AppDelegate.m' href=\"http:\/\/www.rjmprogramming.com.au\/C\/Objective-C\/Xcode\/iOS\/Utility\/AppDelegate.m_GETME\" rel=\"noopener\">AppDelegate.m<\/a>, <a target=\"_blank\" title='MainViewController.h' href=\"http:\/\/www.rjmprogramming.com.au\/C\/Objective-C\/Xcode\/iOS\/Utility\/MainViewController.h_GETME\" rel=\"noopener\">MainViewController.h<\/a>, <a target=\"_blank\" title='MainViewController.m' href=\"http:\/\/www.rjmprogramming.com.au\/C\/Objective-C\/Xcode\/iOS\/Utility\/MainViewController.m_GETME\" rel=\"noopener\">MainViewController.m<\/a>, <a target=\"_blank\" title='FlipsideViewController.h' href=\"http:\/\/www.rjmprogramming.com.au\/C\/Objective-C\/Xcode\/iOS\/Utility\/FlipsideViewController.h_GETME\" rel=\"noopener\">FlipsideViewController.h<\/a>, <a target=\"_blank\" title='FlipsideViewController.m' href=\"http:\/\/www.rjmprogramming.com.au\/C\/Objective-C\/Xcode\/iOS\/Utility\/FlipsideViewController.m_GETME\" rel=\"noopener\">FlipsideViewController.m<\/a> and <a target=\"_blank\" title='main.m' href=\"http:\/\/www.rjmprogramming.com.au\/C\/Objective-C\/Xcode\/iOS\/Utility\/main.m_GETME\" rel=\"noopener\">main.m<\/a> <\/p>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d5855' onclick='var dv=document.getElementById(\"d5855\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"http:\/\/www.rjmprogramming.com.au\/wordpress\/?s=Objective-C\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d5855' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr \/>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d10082' onclick='var dv=document.getElementById(\"d10082\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"http:\/\/www.rjmprogramming.com.au\/wordpress\/?s=iOS\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d10082' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr \/>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d10239' onclick='var dv=document.getElementById(\"d10239\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"http:\/\/www.rjmprogramming.com.au\/wordpress\/?tag=UIButton\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d10239' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr \/>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d10287' onclick='var dv=document.getElementById(\"d10287\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"http:\/\/www.rjmprogramming.com.au\/wordpress\/?tag=mobile\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d10287' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr \/>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d10320' onclick='var dv=document.getElementById(\"d10320\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"http:\/\/www.rjmprogramming.com.au\/wordpress\/?tag=cookies\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d10320' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr \/>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d11375' onclick='var dv=document.getElementById(\"d11375\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"http:\/\/www.rjmprogramming.com.au\/wordpress\/?tag=CSS\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d11375' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr \/>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d11408' onclick='var dv=document.getElementById(\"d11408\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"http:\/\/www.rjmprogramming.com.au\/wordpress\/?tag=overlay\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d11408' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d68145' onclick='var dv=document.getElementById(\"d68145\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/background-size\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d68145' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d68155' onclick='var dv=document.getElementById(\"d68155\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/url\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d68155' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d68166' onclick='var dv=document.getElementById(\"d68166\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/rotate\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d68166' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d68184' onclick='var dv=document.getElementById(\"d68184\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/soft-link\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d68184' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d68222' onclick='var dv=document.getElementById(\"d68222\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/cache\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d68222' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n","protected":false},"excerpt":{"rendered":"<p>The implication of Background Image Data URI Sharing Tutorial&#8216;s &#8230; &#8230; effectively avoiding the need to ever need to use PHP file_get_contents to retrieve that \/tmp\/ content, which we found was quite a harrowing thing to try?! &#8230; panning out &hellip; <a href=\"https:\/\/www.rjmprogramming.com.au\/ITblog\/background-image-data-uri-sharing-long-term-recall-tutorial\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,14,37],"tags":[52,69,126,127,2379,1653,2541,177,4723,2008,1709,281,290,1785,1654,327,354,367,5170,385,405,576,587,590,652,1928,2092,870,3275,2643,997,4453,1045,1071,1072,1094,1165,4886,1209,1212,1232,1675,1298,1300,1301,1319,1345,1418],"class_list":["post-68222","post","type-post","status-publish","format-standard","hentry","category-elearning","category-event-driven-programming","category-tutorials","tag-absolute-url","tag-ajax","tag-background","tag-background-image","tag-background-size","tag-base64","tag-bookmark","tag-cache","tag-clip-art","tag-clipart","tag-communication","tag-css","tag-data","tag-data-source","tag-data-uri","tag-did-you-know","tag-dom","tag-dropdown","tag-eat-at-joes","tag-emoji","tag-exec","tag-html","tag-iframe","tag-image","tag-javascript","tag-marquee","tag-multiple","tag-onload","tag-originator","tag-placeholder","tag-programming","tag-recipient","tag-relative-url","tag-rotate","tag-rotation","tag-scale","tag-soft-link","tag-softlink","tag-style","tag-styling","tag-symbolic-link","tag-textbox","tag-transform","tag-translate","tag-translation","tag-tutorial","tag-url","tag-webpage"],"_links":{"self":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/68222"}],"collection":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/comments?post=68222"}],"version-history":[{"count":8,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/68222\/revisions"}],"predecessor-version":[{"id":68234,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/68222\/revisions\/68234"}],"wp:attachment":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/media?parent=68222"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/categories?post=68222"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/tags?post=68222"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}