{"id":70825,"date":"2025-11-30T03:01:00","date_gmt":"2025-11-29T17:01:00","guid":{"rendered":"https:\/\/www.rjmprogramming.com.au\/ITblog\/?p=70825"},"modified":"2025-11-30T18:57:26","modified_gmt":"2025-11-30T08:57:26","slug":"text-to-speech-hashtagging-tutorial","status":"publish","type":"post","link":"https:\/\/www.rjmprogramming.com.au\/ITblog\/text-to-speech-hashtagging-tutorial\/","title":{"rendered":"Text to Speech Hashtagging Tutorial"},"content":{"rendered":"<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/macos_say_record.php\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Text to Speech Hashtagging Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/text_to_speech_hashtagging.gif\" title=\"Text to Speech Hashtagging Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Text to Speech Hashtagging Tutorial<\/p><\/div>\n<p>Around here &#8230; it&#8217;s official &#8230;<\/p>\n<blockquote><p>\nwe&#8217;re having a morph!\n<\/p><\/blockquote>\n<p>Please &#8230; please &#8230; no congratulations yet?!  And thanks for the tomatoes &#8230; very ripe?!<\/p>\n<p>Anyway, yesterday&#8217;s <a title='Local Operating System Menu Intranet Feel Commentary Tutorial' href='#losmifct'>Local Operating System Menu Intranet Feel Commentary Tutorial<\/a> has struck a chord in that for &#8230;<\/p>\n<p><code><br \/>\nmacOS<br \/>\n<\/code><\/p>\n<p> &#8230; users we think there is a different aspect to ideas revolving around &#8230;<\/p>\n<ul>\n<li>speech &#8230; and &#8230;<\/li>\n<li>text<\/li>\n<\/ul>\n<p> &#8230; we want to pursue.  We&#8217;ve already forewarned above, of exclusions, but for <i>full functionality<\/i> with these ideas there probably will be more to follow.<\/p>\n<p>Around here there is no adage &#8220;let perfection be the enemy of the good&#8221; and so &#8220;on we go&#8221;, but, a precursor is to introduce &#8230;<\/p>\n<ul>\n<li>our inhouse macOS <a target=\"_blank\" title='say command information from Apple' href='https:\/\/ss64.com\/osx\/say.html' rel=\"noopener\">&#8220;say&#8221;<\/a> interfacing PHP &#8230; to &#8230;<\/li>\n<li>more independent hashtagging smarts<\/li>\n<\/ul>\n<p> &#8230; hashtagging <font size=1>(as we&#8217;ve been harping on about more and more recently)<\/font> being &#8230;<\/p>\n<ul>\n<li>able to support a lot of data up at any URL (eg. of a web browser address bar, and so can help interface a public domain &#8220;Internet&#8221; URL talking to a local (eg. <a target=\"_blank\" title='MAMP for Apache\/PHP\/MySql on Mac OS X local web server' href='http:\/\/www.mamp.info' rel=\"noopener\">MAMP<\/a> Apache web server based) web server &#8220;Intranet&#8221;<sup> feeling<\/sup> URL) &#8230;<\/li>\n<li>can support dynamic scenarios with web application webpages (especially PHP ones) where the webpage can achieve things dynamically without navigating to another webpage<\/li>\n<\/ul>\n<blockquote><p>\nBut aren&#8217;t we going to confront CORS restrictions here?\n<\/p><\/blockquote>\n<p>Well &#8230; shhhhhh &#8230; but a name<sup>d<\/sup> HTML <font color=blue>iframe child<\/font> and a <font color=purple>window.open<\/font> &#8230;<\/p>\n<p>&lt;?php<br \/>\n<code><br \/>\n $issayable='';<br \/>\n $vcb=\"Alex\";<br \/>\n $vvcb=\"\";<br \/>\n if (PHP_OS == \"Darwin\") {<br \/>\n   $issayable='y';<br \/>\n   if (isset($_GET['saythis']) && $vvcb == \"\") {<br \/>\n     $vvcb=str_replace('  ',' +',str_replace('+',' ',urldecode($_GET['saythis'])));<br \/>\n   }<br \/>\n   if (isset($_GET['voice'])) {<br \/>\n     $vcb=explode(' ',str_replace('+',' ',urldecode($_GET['voice'])))[0];<br \/>\n   }<br \/>\n   if (isset($_GET['justsayingforafriend']) && $vvcb != \"\") {<br \/>\n     exec('say -v ' . $vcb . ' ' . $vvcb);<br \/>\n     exit;<br \/>\n   }<br \/>\n }<br \/>\n<\/code><br \/>\n&lt;?php echo &#8221;<br \/>\n<code><br \/>\n  var saymode='\" . $dsm . \"';<br \/>\n  var issayable='\" . $issayable . \"';<br \/>\n  var lastlhis='', lastlhthingo='',lhlook=false;<br \/>\n<br \/> <br \/>\n function lastlhex() {<br \/>\n           if (lastlhis != document.getElementById('theproofif').src) {<br \/>\n              lastlhis=document.getElementById('theproofif').src;<br \/>\n           } else if (lastlhthingo != ('' + location.hash)) {<br \/>\n              lastlhthingo=('' + location.hash);<br \/>\n   if ((issayable == 'y' || ('' + navigator.platform).toLowerCase().indexOf('mac') == 0) && ('' + document.URL + '#' + decodeURIComponent(('' + location.hash))).indexOf('saythis=') != -1 && ('' + document.URL + '#' + decodeURIComponent(('' + location.hash))).indexOf('media=') == -1) {<br \/>\n     if ((issayable == 'y' || ('' + navigator.platform).toLowerCase().indexOf('mac') == 0) && ('' + document.URL + '#' + decodeURIComponent(('' + location.hash))).indexOf('voice=') != -1 && ('' + document.URL + '#' + decodeURIComponent(('' + location.hash))).indexOf('media=') == -1) {<br \/>\n       if (document.getElementById('svoicecode').innerHTML.indexOf(decodeURIComponent(document.URL.split('voice=')[1].split('&')[0].split('#')[0]).replace(\/\\+\/g,' ').replace(\/\\ \\ \/g,'  +') + '\\\"') != -1) {<br \/>\n         document.getElementById('svoicecode').value=document.getElementById('svoicecode').innerHTML.split(decodeURIComponent(document.URL.split('voice=')[1].split('&')[0].split('#')[0]).replace(\/\\\\+\/g,' ').replace(\/\\\\ \\\\ \/g,'  +') + '\\\"')[0].split('\\\"')[eval(-1 + document.getElementById('svoicecode').innerHTML.split(decodeURIComponent(document.URL.split('voice=')[1].split('&')[0].split('#')[0]).replace(\/\\\\+\/g,' ').replace(\/\\\\ \\\\ \/g,'  +') + '\\\"')[0].split('\\\"').length)] + decodeURIComponent(document.URL.split('voice=')[1].split('&')[0].split('#')[0]).replace(\/\\\\+\/g,' ').replace(\/\\\\ \\\\ \/g,'  +');<br \/>\n       }<br \/>\n     }<br \/>\n     document.getElementById('thewords').value=decodeURIComponent(document.URL.split('saythis=')[1].split('&')[0].split('#')[0]).replace(\/\\+\/g,' ').replace(\/\\ \\ \/g,'  +');<br \/>\n     if (56 == 56) {<br \/>\n     if (issayable == 'y') {<br \/>\n     document.getElementById('theproofif').src='HTTP:\/\/localhost:8888\/macos_say_record.php?justsayingforafriend=y&voice=' + document.getElementById('svoicecode').value.split(' ')[eval(-1 + document.getElementById('svoicecode').value.split(' ').length)] + '&saythis=' + encodeURIComponent(document.getElementById('thewords').value);<br \/>\n     } else {<br \/>\n     <font color=purple>window.open('HTTP:\/\/localhost:8888\/macos_say_record.php?justsayingforafriend=y&voice=' + document.getElementById('svoicecode').value.split(' ')[eval(-1 + document.getElementById('svoicecode').value.split(' ').length)] + '&saythis=' + encodeURIComponent(document.getElementById('thewords').value), 'theproofif');<\/font><br \/>\n     }<br \/>\n     } else {<br \/>\n     zhr = new XMLHttpRequest();<br \/>\n     zform=new FormData();<br \/>\n     zform.append('justsayingforafriend', 'y');<br \/>\n     zform.append('saythis', document.getElementById('thewords').value);<br \/>\n     zform.append('voice', document.getElementById('svoicecode').value.split(' ')[eval(-1 + document.getElementById('svoicecode').value.split(' ').length)]);<br \/>\n     zhr.open('get', 'HTTP:\/\/localhost:8888\/macos_say_record.php', true);<br \/>\n     zhr.send(zform);<br \/>\n     }<br \/>\n   }<br \/>\n              }<br \/>\n }<br \/>\n<\/code><br \/>\n&#8220;; ?><br \/>\n&lt;?php echo &#8221;<br \/>\n<code><br \/>\n<font color=blue>&lt;iframe data-onerror=alert(564); onload=resproof(this); name=theproofif id=theproofif style=display:none; src='\/About_Us.html'&gt;&lt;\/iframe&gt;<\/font><br \/>\n<\/code><br \/>\n&#8220;; ?><\/p>\n<p> &#8230; can be that &#8220;Fred and Ginger&#8221; pairing to make this &#8220;Internet and Intranet&#8221; interplay seamless &#8230; shhhhhhh!<\/p>\n<p>That being said, if you are a macOS user with a local web server like MAMP installed we&#8217;d ask you to <a target=\"_blank\" title='macos_say_record.php' href='https:\/\/www.rjmprogramming.com.au\/macos_say_record.php----------------------------------GETME' download='macos_say_record.php' rel=\"noopener\">download<\/a> to a macOS MAMP port 8888 Document Root folder <a target=\"_blank\" title='macos_say_record.php' href='https:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=https:\/\/www.rjmprogramming.com.au\/macos_say_record.php----------------------------------GETME' rel=\"noopener\">the changed<\/a> PHP <a target=\"_blank\" title='macos_say_record.php' href='https:\/\/www.rjmprogramming.com.au\/macos_say_record.php----------------------------------GETME' rel=\"noopener\">macos_say_record.php<\/a> (where macOS users who have downloaded to an 8888 port MAMP local Apacahe web server can click\/try the user editable <span contenteditable=true style=text-decoration:underline;cursor:pointer; onclick=\"window.open(this.innerHTML.replace(\/\\&#038;amp\\;\/g,'&#038;'),'_blank','top=50,left=50,width=500,height=500');\">HtTp:\/\/localhost:8888\/macos_say_record.php?justsayingforafriend=y&#038;saythis=Welcome+one+and+all&#038;voice=Karen<\/span>) and try at the public RJM Programming website via <a target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/macos_say_record.php\" rel=\"noopener\">this link<\/a> or below &#8230;<\/p>\n<p><iframe style=\"width:100%;height:1200px;\" src=\"https:\/\/www.rjmprogramming.com.au\/macos_say_record.php\" rel=\"noopener\"><\/iframe><\/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\/text-to-speech-hashtagging-tutorial\/' rel=\"noopener\">Text to Speech Hashtagging Tutorial<\/a>.<\/p-->\n<hr>\n<p id='losmifct'>Previous relevant <a target=\"_blank\" title='Local Operating System Menu Intranet Feel Commentary Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/local-operating-system-menu-intranet-feel-commentary-tutorial\/' rel=\"noopener\">Local Operating System Menu Intranet Feel Commentary Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/open_extravaganza.php\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Local Operating System Menu Intranet Feel Commentary Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/open_extravaganza_commentary.gif\" title=\"Local Operating System Menu Intranet Feel Commentary Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Local Operating System Menu Intranet Feel Commentary Tutorial<\/p><\/div>\n<p>Further to yesterday&#8217;s <a title='Local Operating System Menu Intranet Feel Operator Tutorial' href='#losmifot'>Local Operating System Menu Intranet Feel Operator Tutorial<\/a> there are a couple of macOS specific additional pieces of functionality we&#8217;d like to offer users, they being &#8230;<\/p>\n<ol>\n<li>the macOS open command has the ability to try to open any windows it creates in the background via it&#8217;s &#8230;<br \/>\n<code><br \/>\n<a target=\"_blank\" href='https:\/\/scriptingosx.com\/2017\/02\/the-macos-open-command\/' rel=\"noopener\"> -g <\/a><br \/>\n<\/code><br \/>\n &#8230; switch <\/li>\n<li>as we are on macOS why not offer a Text to Speech means of adding commentary as macOS open commands are issued via its &#8230;<br \/>\n<code><br \/>\n<a target=\"_blank\" title='say command information from Apple' href='https:\/\/ss64.com\/osx\/say.html' rel=\"noopener\">say<\/a><br \/>\n<\/code><br \/>\n &#8230; command<\/li>\n<\/ol>\n<p>?  <font size=1>And closing arguments against this will be accepted up until the end of Black Friday sales, whenever that is?!<\/font><\/p>\n<p>We decided to pass these over as your usual get arguments on the address bar URL, being as we are always using PHP $_GET[] data, now, so far, in this project.<\/p>\n<p>And so, yet again, perhaps, you may want to (re-)try <a download=\"open_extravaganza.php\" target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/open_extravaganza.php-----GETME\" rel=\"noopener\">download<\/a> as <a data-download=\"open_extravaganza.php\" target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/open_extravaganza.php----GETME\" rel=\"noopener\">open_extravaganza.php<\/a> filename (changed  <a data-download=\"open_extravaganza.php\" target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=https:\/\/www.rjmprogramming.com.au\/open_extravaganza.php-----GETME\" rel=\"noopener\">this way<\/a>) to MAMP&#8217;s Document Root folder\/directory), and we think it is now less boring for macOS or Windows users to begin with interfacing to our public RJM Programming website <font size=1>(though if you have no Apache\/PHP\/MySql local web server, and want to install one, a right click on the dropdown below, for your non-mobile platform is a possibility for port 8888 on macOS and port 80 (ie. the default) on Windows)<\/font> or <a href='#thisiffy'>try it below<\/a> &#8230;<\/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\/local-operating-system-menu-intranet-feel-commentary-tutorial\/' rel=\"noopener\">Local Operating System Menu Intranet Feel Commentary Tutorial<\/a>.<\/p-->\n<hr>\n<p id='losmifot'>Previous relevant <a target=\"_blank\" title='Local Operating System Menu Intranet Feel Operator Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/local-operating-system-menu-intranet-feel-operator-tutorial\/' rel=\"noopener\">Local Operating System Menu Intranet Feel Operator Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/open_extravaganza.php\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Local Operating System Menu Intranet Feel Operator Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/open_extravaganza_operator.gif\" title=\"Local Operating System Menu Intranet Feel Operator Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Local Operating System Menu Intranet Feel Operator Tutorial<\/p><\/div>\n<p>Further to yesterday&#8217;s <a title='Local Operating System Menu Intranet Feel Options Tutorial' href='#xlosmifot'>Local Operating System Menu Intranet Feel Options Tutorial<\/a> we broach the issue &#8230;<\/p>\n<blockquote><p>\nWhat happens when a <i>delimiter<\/i> character is the same as an <i>operator<\/i> character in amongst data sent via HTML form from one webpage to the next webpage?\n<\/p><\/blockquote>\n<p>We&#8217;re talking about the <i>+<\/i> character which can be &#8230;<\/p>\n<ul>\n<li>a space encryption character used a lot when PHP is the receiving webpage&#8217;s language<\/li>\n<li>an operator in mathematics, for addition<\/li>\n<\/ul>\n<p>If the latter is the meaning of a <i>+<\/i> plus character within that form data sent out, how can we know it is not just a space character encrypted?<\/p>\n<blockquote><p>\nExcellent question, that we grapple with in different ways around here, all the time!\n<\/p><\/blockquote>\n<p>Today, as far as this goes, take a look at <font color=blue>the value<\/font> attribute of <i>a new macOS dropdown option<\/i> we introduced today &#8230;<\/p>\n<p>&lt;?php<br \/>\n<code><br \/>\n    $selstuff=\"&lt;br&gt;&lt;br&gt;&lt;form onsubmit=\\\"formclickmode=0; document.body.style.cursor='pointer'; if (lastselo) { lastselo.style.cursor='pointer'; lastselo=null; } if (document.getElementById('opsel')) { if (document.getElementById('opsel').value.length &gt; 0) { this.action=document.getElementById('opsel').value;  }   } return perhaps(true,this);\\\" id=myform method=GET action='.\/open_extravaganza.php'&gt;&lt;select title='Right click can modify dropdown choices' style=background-color:yellow; size=18 id=mysel multiple name=afteropen onchange=\\\"if (this.value.length != 0) { if (1 == 1) { formclickmode=prg(1,event.target); } else { document.getElementById('sbutmac').click(); } } \\\"&gt;&lt;option oncontextmenu=ocmopt(this); value=''&gt;Select macOS open command type(s) below ...&lt;\/option&gt;&lt;option oncontextmenu=ocmopt(this); value=' -a Finder'&gt;Finder&lt;\/option&gt;&lt;option oncontextmenu=ocmopt(this); value=' -a Preview'&gt;Preview&lt;\/option&gt;&lt;option oncontextmenu=ocmopt(this); value=' -a TextEdit'&gt;TextEdit&lt;\/option&gt;&lt;option oncontextmenu=ocmopt(this); value=' -b com.apple.VoiceMemos'&gt;Voice Memo&lt;\/option&gt;&lt;option oncontextmenu=ocmopt(this); value=' -b com.apple.QuickTimePlayerX https:\/\/www.rjmprogramming.com.au\/Windows\/windows_step_recorder.mov'&gt;QuickTime Player&lt;\/option&gt;&lt;option oncontextmenu=ocmopt(this); value=' -b com.apple.VoiceOverUtility'&gt;VoiceOver Utility&lt;\/option&gt;&lt;option oncontextmenu=ocmopt(this); value=' ~\/Desktop\/Screen\\\\ Shot\\\\ *.png'&gt;Preview all screenshot files&lt;\/option&gt;&lt;option oncontextmenu=ocmopt(this); value=' -a Firefox https:\/\/www.rjmprogramming.com.au'&gt;Firefox&lt;\/option&gt;&lt;option oncontextmenu=ocmopt(this); value='<font color=olive> -a Safari http:\/\/localhost:8888\/macos_say_record.php?saythis=Welcome\\\\&voice=Karen\\\\&audioname=;open<\/font> -a Safari http:\/\/localhost:8888\/macos_say_record.php'&gt;Safari interface attempt to say&lt;\/option&gt;&lt;option oncontextmenu=ocmopt(this); value=' -b com.apple.ScriptEditor2 ~\/Desktop\/test_gvp.scpt'&gt;AppleScript example ready to Script-&gt;Run&lt;\/option&gt;<i>&lt;option oncontextmenu=ocmopt(this); value=\\\"<font color=blue>IGVjaG8gJzU2NCs5ODc2NScgfCBiYw==<\/font>\\\"&gt;Add 564 to 98765&lt;\/option&gt;<\/i>&lt;option oncontextmenu=ocmopt(this); value=' ~\/Documents ~\/Desktop ~\/Downloads'&gt;Open the D folders&lt;\/option&gt;&lt;option oncontextmenu=ocmopt(this); value=' https:\/\/google.com'&gt;Google&lt;\/option&gt;&lt;option oncontextmenu=ocmopt(this); value=' https:\/\/wikipedia.org'&gt;Wikipedia&lt;\/option&gt;&lt;option oncontextmenu=ocmopt(this); value=' https:\/\/www.rjmprogramming.com.au'&gt;RJM Programming&lt;\/option&gt;&lt;option oncontextmenu=ocmopt(this); value='ls -l . | open -f'&gt;Pipe folder listing into TextEdit&lt;\/option&gt;&lt;option oncontextmenu=ocmopt(this); value='x-man-page:\/\/open'&gt;Show man page in Terminal&lt;\/option&gt;&lt;\/select&gt;&lt;br&gt;&lt;br&gt;&lt;input id=sbutmac type=submit value='Execute'&gt;&lt;\/input&gt;&lt;\/form&gt;\";<br \/>\n<\/code><br \/>\n?&gt;<\/p>\n<p>Do you recognize any new encryption pattern with this option&#8217;s value?   Yes, it is the &#8230;<\/p>\n<blockquote><p>\nbase64 encoded\n<\/p><\/blockquote>\n<p> &#8230; version of &#8230;<\/p>\n<p><code><br \/>\n echo '564+98765' | bc<br \/>\n<\/code><\/p>\n<p> &#8230; as a macOS Terminal application command line way to add 564 + 98765 via the macOS <a target=\"_blank\" title='macOS bc' href='https:\/\/ss64.com\/mac\/bc.html' rel=\"noopener\">bc<\/a> command, we got wind of via &#8230;<\/p>\n<p><code><br \/>\n&lt;html&gt;<br \/>\n&lt;body&gt;<br \/>\n&lt;script type=text\/javascript&gt;<br \/>\n  var x=prompt('' + <a target=\"_blank\" title='Javascript btoa information from w3schools' href='https:\/\/www.w3schools.com\/jsref\/met_win_btoa.asp' rel=\"noopener\">window.btoa<\/a>(\" echo '564+98765' | bc\"), '' + window.btoa(\" echo '564+98765' | bc\"));<br \/>\n&lt;\/script&gt;<br \/>\n&lt;\/body&gt;<br \/>\n&lt;\/html&gt;<br \/>\n<\/code><\/p>\n<p> &#8230; and please be assured if one of your own dropdown option entry values contains a <i>+<\/i> character you do not have to do the work above <font size=1>(unless you are a masochist, <span><a target=\"_blank\" title='?' class=\"audioytplay\" href='https:\/\/www.youtube.com\/watch?v=PtR4cWb4HNg' rel=\"noopener\">that is<\/a><\/span>)<\/font>, rather the web application can help you out.<\/p>\n<p>Which begs the question &#8230;<\/p>\n<blockquote><p>\nIf <i>window.btoa<\/i> is the &#8220;Fred&#8221; of the Javascript side of the work, what is the PHP receiving side&#8217;s &#8220;Ginger&#8221;?\n<\/p><\/blockquote>\n<p>Well, <a target=\"_blank\" title=\"?\" href='https:\/\/www.youtube.com\/watch?v=Bq7VQc7kLAo' rel=\"noopener\">yes<\/a>, would that be <i>base64_decode<\/i> <font color=purple>pray tell<\/font>?!<\/p>\n<p>&lt;?php<br \/>\n<code><br \/>\n  <font color=purple>$plusin='+';<br \/>\n  $plusout=' ';<\/font><br \/>\n  $fromsc='~\/Desktop\/test_gvp.scpt';<br \/>\n  $tosc='~\/Desktop\/test_gvp.scpt';<br \/>\n  <br \/>\n  <font color=purple>function oururldecode($ofwhat) {<br \/>\n    global $plusin, $plusout, $fromsc, $tosc;<br \/>\n    $interim=str_replace($fromsc,$tosc,urldecode($ofwhat));<br \/>\n    if (strpos($interim, ' ') === false || substr(($interim . 'x'),0,1) == '+') {<br \/>\n      $plusin=' ';<br \/>\n      $plusout=' ';<br \/>\n      return str_replace($fromsc,$tosc,<a target=\"_blank\" title='PHP base64_decode information' href='http:\/\/php.net\/manual\/en\/function.base64-decode.php' rel=\"noopener\">base64_decode<\/a>($ofwhat));<br \/>\n    } else {<br \/>\n      $plusin='+';<br \/>\n      $plusout=' ';<br \/>\n    }<br \/>\n    return $interim;<br \/>\n  }<\/font><br \/>\n  <br \/>\n  if (isset($_GET['afteropen'])) {<br \/>\n    if (sizeof(explode('afteropen=', '?' . $_SERVER['QUERY_STRING'])) &gt; 2) {<br \/>\n    for ($thisone=1; $thisone&lt;sizeof(explode('afteropen=', '?' . $_SERVER['QUERY_STRING'])); $thisone++) {<br \/>\n    array_push($afteropens, str_replace('  ',' '<font color=purple> . $plusin<\/font>,str_replace(<font color=purple>$plusin,$plusout,<\/font><font color=purple>our<\/font>urldecode(explode('#',explode('&',explode('afteropen=', $_SERVER['QUERY_STRING'])[$thisone])[0])[0]))));<br \/>\n    }<br \/>\n    } else {<br \/>\n    $afteropen=(trim(str_replace('  ',' '<font color=purple> . $plusin<\/font>,str_replace(<font color=purple>$plusin,$plusout,<\/font><font color=purple>our<\/font>urldecode($_GET['afteropen'])))) == '' ? '' : ' ' . trim(str_replace('  ',' ' . $plusin,str_replace($plusin,$plusout,oururldecode($_GET['afteropen'])))));<br \/>\n    $afteropens=[$afteropen];<br \/>\n    }<br \/>\n  }<br \/>\n<\/code><br \/>\n?&gt;<\/p>\n<p>This offers a dynamic way to swap between the concepts, whose logic depends a bit on that first value character always being a space in this project.   But that is so, and so this thinking helps a lot, and allows for that differentiation of <i>+<\/i> character meaning between (the rare) <i>+<\/i> operator (in mathematics) meaning and the <i>+<\/i> character PHP space character encryption meaning.<\/p>\n<p>Today we&#8217;re also introducing an AppleScript interfacing option, and with the &#8220;say&#8221; option we now <font color=olive>allow for command conjoining<\/font> with the dropdown option value as long as the <i>open<\/i> directly follows on from the semicolon conjoining <sup>think it&#8217;s an<\/sup> operator!<\/p>\n<p>And so, again, perhaps, you may want to (re-)try <a download=\"open_extravaganza.php\" target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/open_extravaganza.php----GETME\" rel=\"noopener\">download<\/a> as <a data-download=\"open_extravaganza.php\" target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/open_extravaganza.php---GETME\" rel=\"noopener\">open_extravaganza.php<\/a> filename (changed  <a data-download=\"open_extravaganza.php\" target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=https:\/\/www.rjmprogramming.com.au\/open_extravaganza.php----GETME\" rel=\"noopener\">this way<\/a>) to MAMP&#8217;s Document Root folder\/directory), and we think it is now less boring for macOS or Windows users to begin with interfacing to our public RJM Programming website <font size=1>(though if you have no Apache\/PHP\/MySql local web server, and want to install one, a right click on the dropdown below, for your non-mobile platform is a possibility for port 8888 on macOS and port 80 (ie. the default) on Windows)<\/font> or <a href='#thisiffy'>try it below<\/a> &#8230;<\/p>\n<p><b><i>Did you know?<\/i><\/b><\/p>\n<p>Have you noticed in amongst the macOS <i>open<\/i> command values lots of ones starting with the switch &#8230;<\/p>\n<p><code><br \/>\n -b<br \/>\n<\/code><\/p>\n<p>?  Well, <a target=\"_blank\" href='https:\/\/scriptingosx.com\/2017\/02\/the-macos-open-command\/' rel=\"noopener\">The macOS open command<\/a>, thanks, told us &#8230;<\/p>\n<blockquote cite='https:\/\/scriptingosx.com\/2017\/02\/the-macos-open-command\/'><p>\nYou can specify just the name of an application or the full path, i.e. \/Applications\/Preview.app. If you need to be specific, you can also specify an application\u2019s bundle identifier with -b com.apple.Preview.\n<\/p><\/blockquote>\n<p> &#8230; found out, we&#8217;ve been finding, successfully, via &#8230;<\/p>\n<ol>\n<li>in Finder right click the application of interest<\/li>\n<li>click Show Package Contents<\/li>\n<li>open the info.plist file in your favourite Text Editor<\/li>\n<li>look for &#8230;<br \/>\n<blockquote><p>\nCFBundleIdentifier\n<\/p><\/blockquote>\n<p> &#8230; within, for example, AppleScript&#8217;s info.plist &#8230;<br \/>\n<code><br \/>\n&lt;key&gt;CFBundleIdentifier&lt;\/key&gt;<br \/>\n&lt;string&gt;com.apple.ScriptEditor2&lt;\/string&gt;<br \/>\n<\/code><br \/>\n &#8230; to come up with, for example &#8230;<br \/>\n<code><br \/>\nopen -b com.apple.ScriptEditor2<br \/>\n<\/code><br \/>\n &#8230; as a way to open macOS application AppleScript (or Script Editor)\n<\/li>\n<\/ol>\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\/local-operating-system-menu-intranet-feel-operator-tutorial\/' rel=\"noopener\">Local Operating System Menu Intranet Feel Operator Tutorial<\/a>.<\/p-->\n<hr>\n<p id='xlosmifot'>Previous relevant <a target=\"_blank\" title='Local Operating System Menu Intranet Feel Options Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/local-operating-system-menu-intranet-feel-options-tutorial\/' rel=\"noopener\">Local Operating System Menu Intranet Feel Options Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/open_extravaganza.php\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Local Operating System Menu Intranet Feel Options Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/Windows\/open_extravaganza_share.gif\" title=\"Local Operating System Menu Intranet Feel Options Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Local Operating System Menu Intranet Feel Options Tutorial<\/p><\/div>\n<p>A static list of options in the functional dropdown, as with yesterday&#8217;s <a title='Local Operating System Menu Intranet Feel Windows Tutorial' href='#losmifwt'>Local Operating System Menu Intranet Feel Windows Tutorial<\/a> does not sound as much fun as &#8230;<\/p>\n<ul>\n<li>dropdown (ie. select element) options that if you right click bring up a means by which &#8230;\n<ol>\n<li>existant option can be modified<\/li>\n<li>a new option can be added<\/li>\n<li>the option pointed at effectively nullified<\/li>\n<li>an option to remember for next time on that web browser when the web application is re-opened<\/li>\n<li>an option to forget the previous option&#8217;s work &#8230; <font size=1>it works!  &#8230; we&#8217;ve already forgotten!  &#8230; chortle, chortle<\/font><\/li>\n<\/ol>\n<p> &#8230; and we decided also, now that the user has some control over functionality, then &#8230;<\/li>\n<li>offer email and\/or SMS sharing including or excluding any option tinkering as described above<\/li>\n<li>offer more Windows explorer.exe options thanks to <a target=\"_blank\" title='https:\/\/www.geoffchappell.com\/studies\/windows\/shell\/explorer\/cmdline.htm' href='\/\/www.geoffchappell.com\/studies\/windows\/shell\/explorer\/cmdline.htm' rel=\"noopener\">https:\/\/www.geoffchappell.com\/studies\/windows\/shell\/explorer\/cmdline.htm<\/a><\/li>\n<li>offer the chance off an RJM Programming incarnation&#8217;s top <a target=\"_blank\" title='MAMP for Apache\/PHP\/MySql on Mac OS X local web server' href='http:\/\/www.mamp.info' rel=\"noopener\">MAMP<\/a>\/macOS\/Windows dropdown (ie. select element, now showing with size attribute 3) right click chances to adjust Apache (eg. MAMP) port setting assumptions<\/li>\n<\/ul>\n<p>And so, perhaps, you may want to (re-)try <a download=\"open_extravaganza.php\" target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/open_extravaganza.php---GETME\" rel=\"noopener\">download<\/a> as <a data-download=\"open_extravaganza.php\" target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/open_extravaganza.php--GETME\" rel=\"noopener\">open_extravaganza.php<\/a> filename (changed  <a data-download=\"open_extravaganza.php\" target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=https:\/\/www.rjmprogramming.com.au\/open_extravaganza.php---GETME\" rel=\"noopener\">this way<\/a>) to MAMP&#8217;s Document Root folder\/directory), and we think it is now less boring for macOS or Windows users to begin with interfacing to our public RJM Programming website <font size=1>(though if you have no Apache\/PHP\/MySql local web server, and want to install one, a right click on the dropdown below, for your non-mobile platform is a possibility for port 8888 on macOS and port 80 (ie. the default) on Windows)<\/font> or <a href='#thisiffy'>try it below<\/a> &#8230;<\/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\/local-operating-system-menu-intranet-feel-options-tutorial\/' rel=\"noopener\">Local Operating System Menu Intranet Feel Options Tutorial<\/a>.<\/p-->\n<hr>\n<p id='losmifwt'>Previous relevant <a target=\"_blank\" title='Local Operating System Menu Intranet Feel Windows Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/local-operating-system-menu-intranet-feel-windows-tutorial\/' rel=\"noopener\">Local Operating System Menu Intranet Feel Windows Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/open_extravaganza.php\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Local Operating System Menu Intranet Feel Windows Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/Windows\/windows_extravaganza.gif\" title=\"Local Operating System Menu Intranet Feel Windows Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Local Operating System Menu Intranet Feel Windows Tutorial<\/p><\/div>\n<p>Yesterday&#8217;s <a title='Local Operating System Menu Intranet Feel Multiple Tutorial' href='#losmifmt'>Local Operating System Menu Intranet Feel Multiple Tutorial<\/a>&#8216;s smarts regarding dropdown multiple selections gets passed through to today&#8217;s &#8230;<\/p>\n<blockquote><p>\nWindows MAMP PHP 7.4.16\n<\/p><\/blockquote>\n<p> &#8230; <sub>oh, oh<\/sub><sup> &#8220;They&#8217;re mentioning version numbers &#8230; that can&#8217;t be good&#8221;<\/sup> &#8230; interfacing work.<\/p>\n<p>And yes, it was a struggle, with this PHP version on MAMP disallowing &#8230;<\/p>\n<ul>\n<li>file_put_contents &#8230; and, we would guess, file_get_contents &#8230;<\/li>\n<li>exec or shell_exec or passthru or system<\/li>\n<li>fopen writing to any *.bat<\/li>\n<\/ul>\n<p> &#8230; and so, what we ended up with was an &#8220;as you login it starts&#8221; <i>lookfor_extravaganza.bat<\/i> we wrote that has less qualms with all these security matters happening in PHP, looking like <a target=\"_blank\" title='lookfor_extravaganza.bat' href='http:\/\/www.rjmprogramming.com.au\/Windows\/lookfor_extravaganza.bat_GETME' rel=\"noopener\">lookfor_extravaganza.bat<\/a> (where you could consider the <i>timeout<\/i> command rather than our <i>ping<\/i> means to introduce a sleep\/wait) &#8230;<\/p>\n<p><code><br \/>\nrem lookfor_extravaganza.bat<br \/>\nrem RJM Programming<br \/>\nrem November, 2025<br \/>\nrem Help out open_extravaganza.php on local Windows MAMP incarnation regarding no file_put_contents nor exec nor shell_exec allowed<br \/>\nrem Installed via ...<br \/>\nrem Win + R<br \/>\nrem shell:startup<br \/>\nrem ... copied into place via advice of ...<br \/>\nrem https:\/\/www.google.com\/search?q=continuousnning+in+background+at+login&rlz=1C5OZZY_en&oq=continuousnning+in+background++at+login&gs_lcrp=EgZjaHJvbWUyBggAEEUYOTIJCAEQIRgKGKABMgkIAhAhGAoYoAEyCQgDECEYChigAdIBCjc1MjA1ajBqMTWoAgCwAgA&sourceid=chrome&ie=UTF-8<br \/>\n@echo off<br \/>\ncd C:\\MAMP\\htdocs<br \/>\necho y > c:\\MAMP\\htdocs\\open_extravaganza.y<br \/>\n:top<br \/>\nif exist c:\\MAMP\\htdocs\\open_extravaganza.bxt rename c:\\MAMP\\htdocs\\open_extravaganza.bxt open_extravaganza.bat<br \/>\nif exist c:\\MAMP\\htdocs\\open_extravaganza.bat call c:\\MAMP\\htdocs\\open_extravaganza.bat<br \/>\nif exist c:\\MAMP\\htdocs\\open_extravaganza.bat erase c:\\MAMP\\htdocs\\open_extravaganza.bat < c:\\MAMP\\htdocs\\open_extravaganza.y\nping \/w 5000 127.0.0.1 > NUL<br \/>\ngoto top<br \/>\n<\/code><\/p>\n<p> &#8230; leaving the PHP to just arrange that <i>c:\\MAMP\\htdocs\\open_extravaganza.bxt<\/i> gets written via fopen means.  Did you read above about where to &#8220;plonk&#8221; a DOS *.bat so that it starts up on logging in, as per &#8230;<\/p>\n<blockquote><p>\nWin + R<br \/>\nshell:startup<br \/>\n &#8230; copied into place via advice of &#8230;\n<\/p><\/blockquote>\n<p><a target=\"_blank\" href='https:\/\/www.google.com\/search?q=continuousnning+in+background+at+login&#038;rlz=1C5OZZY_en&#038;oq=continuousnning+in+background++at+login&#038;gs_lcrp=EgZjaHJvbWUyBggAEEUYOTIJCAEQIRgKGKABMgkIAhAhGAoYoAEyCQgDECEYChigAdIBCjc1MjA1ajBqMTWoAgCwAgA&#038;sourceid=chrome&#038;ie=UTF-8' rel=\"noopener\">this great advice, thanks<\/a> &#8230; being, perhaps, simpler than Task Schedular thoughts?!<\/p>\n<p>No time to see what else explorer.exe File Explorer is capable of &#8230; that is for another day we&#8217;re thinking?!<\/p>\n<p>Anyway, you may want to (re-)try <a download=\"open_extravaganza.php\" target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/open_extravaganza.php--GETME\" rel=\"noopener\">download<\/a> as <a data-download=\"open_extravaganza.php\" target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/open_extravaganza.php--GETME\" rel=\"noopener\">open_extravaganza.php<\/a> filename (changed  <a data-download=\"open_extravaganza.php\" target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=https:\/\/www.rjmprogramming.com.au\/open_extravaganza.php--GETME\" rel=\"noopener\">this way<\/a>) to MAMP&#8217;s Document Root folder\/directory), and we think it is now less boring for macOS or Windows users to begin with interfacing to our public RJM Programming website <font size=1>(though if you have no Apache\/PHP\/MySql local web server, and want to install one, a right click on the dropdown below, for your non-mobile platform is a possibility for port 8888 on macOS and port 80 (ie. the default) on Windows)<\/font> or <a href='#thisiffy'>try it below<\/a> &#8230;<\/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\/local-operating-system-menu-intranet-feel-windows-tutorial\/' rel=\"noopener\">Local Operating System Menu Intranet Feel Windows Tutorial<\/a>.<\/p-->\n<hr>\n<p id='losmifmt'>Previous relevant <a target=\"_blank\" title='Local Operating System Menu Intranet Feel Multiple Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/local-operating-system-menu-intranet-feel-multiple-tutorial\/' rel=\"noopener\">Local Operating System Menu Intranet Feel Multiple Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/open_extravaganza.php\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Local Operating System Menu Intranet Feel Multiple Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/open_extravaganza_multiple.gif\" title=\"Local Operating System Menu Intranet Feel Multiple Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Local Operating System Menu Intranet Feel Multiple Tutorial<\/p><\/div>\n<p>Our normal tack regarding the <i><a target=\"_blank\" title='HTML form method attribute information from W3schools' href='https:\/\/www.w3schools.com\/tags\/att_form_method.asp' rel=\"noopener\">method<\/a><\/i> attribute to use on an HTML form element when the recipient webpage is written in PHP is &#8230;<\/p>\n<ul>\n<li>preferably use method=POST &#8230; because so much more data can be handled that way &#8230; but today we&#8217;re &#8230;<\/li>\n<li>preferring to use method=GET &#8230; for several reasons &#8230;\n<ol>\n<li>we cannot see that the data will get too long for method=GET<\/li>\n<li>we&#8217;re allowing dropdown (ie. select element) <a target=\"_blank\" title='HTML input multiple property information from W3schools' href='https:\/\/www.w3schools.com\/tags\/att_input_multiple.asp#:~:text=The%20multiple%20attribute%20is%20a,types%3A%20email%2C%20and%20file.' rel=\"noopener\"><i>multiple<\/i><\/a> selection mode and we found it easier to handle data wise for the recipient to use method=GET with a PHP recipient <font color=blue>$_SERVER[&#8216;QUERY_STRING&#8217;]<\/font> able to help better parse a method=GET <a target=\"_blank\" title='MAMP for Apache\/PHP\/MySql on Mac OS X local web server' href='http:\/\/www.mamp.info' rel=\"noopener\">MAMP<\/a> style URL like &#8230;<br \/>\n<code><br \/>\nht<font color=black>tp<\/font>:\/\/localhost:8888\/open_extravaganza.php<font color=blue>?afteropen=+https%3A%2F%2Fgoogle.com&afteropen=+https%3A%2F%2Fwikipedia.org&afteropen=+https%3A%2F%2Fwww.rjmprogramming.com.au<\/font><br \/>\n<\/code><br \/>\n &#8230; as per &#8230;<br \/>\n&lt;?php<br \/>\n<code><br \/>\n  $afteropens=[];<br \/>\n  $thisone=1;<br \/>\n  <br \/>\n  if (isset($_GET['afteropen'])) {<br \/>\n    if (sizeof(explode('afteropen=', '?' . $_SERVER['QUERY_STRING'])) &gt; 2) {<br \/>\n    for ($thisone=1; $thisone&lt;sizeof(explode('afteropen=', '?' . $_SERVER['QUERY_STRING'])); $thisone++) {<br \/>\n    array_push($afteropens, str_replace('+',' ',urldecode(explode('#',explode('&',explode('afteropen=', $_SERVER['QUERY_STRING'])[$thisone])[0])[0])));<br \/>\n    }<br \/>\n    } else {<br \/>\n    $afteropen=(trim(str_replace('+',' ',urldecode($_GET['afteropen']))) == '' ? '' : ' ' . trim(str_replace('+',' ',urldecode($_GET['afteropen']))));<br \/>\n    $afteropens=[$afteropen];<br \/>\n    }<br \/>\n  }<br \/>\n<\/code><br \/>\n?&gt;<br \/>\n &#8230; whereas method=POST loses those $_SERVER[&#8216;QUERY_STRING&#8217;] possibilities\n<\/li>\n<li>there will be method=GET URLs anyway coming from the newly arranged RJM Programming origin form elements presented now if <i><a target=\"_blank\" title='navigator.platform' href='https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Navigator\/platform' rel=\"noopener\">navigator.platform<\/a><\/i> indicates your underlying operating system is either macOS or Windows (ie. it takes a punt on the form action <i>localhost<\/i> attribute defined pointing at a local web server (eg. MAMP) &#8230; where there is no harm done just trying)<\/li>\n<\/ol>\n<\/li>\n<\/ul>\n<p>And so, improving on yesterday&#8217;s <a title='Local Operating System Menu Intranet Feel Tutorial' href='#losmift'>Local Operating System Menu Intranet Feel Tutorial<\/a> &#8230;<\/p>\n<ul>\n<li>the Execute button now means something &#8230; ie. you click it ahead of a 10 second allowance before the web application clicks it &#8230; allowing for &#8230;<\/li>\n<li>multiple operating system actions off that dropdown list can be attempted in any one foray<\/li>\n<li>the RJM Programming incarnation of it may show more functionality possibilities than it used to &#8230; all within the limitation of non-mobile platforms only<\/li>\n<\/ul>\n<p>The advice, then, becomes <a download=\"open_extravaganza.php\" target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/open_extravaganza.php-GETME\" rel=\"noopener\">download<\/a> as <a data-download=\"open_extravaganza.php\" target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/open_extravaganza.php-GETME\" rel=\"noopener\">open_extravaganza.php<\/a> filename (changed  <a data-download=\"open_extravaganza.php\" target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=https:\/\/www.rjmprogramming.com.au\/open_extravaganza.php-GETME\" rel=\"noopener\">this way<\/a>) to MAMP&#8217;s Document Root folder\/directory), and we think it is now less boring for macOS or Windows users to begin with interfacing to our public RJM Programming website <font size=1>(though if you have no Apache\/PHP\/MySql local web server, and want to install one, a right click on the dropdown below, for your non-mobile platform is a possibility for port 8888 on macOS and port 80 (ie. the default) on Windows)<\/font> or <a href='#thisiffy'>try it below<\/a> &#8230;<\/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\/local-operating-system-menu-intranet-feel-multiple-tutorial\/' rel=\"noopener\">Local Operating System Menu Intranet Feel Multiple Tutorial<\/a>.<\/p-->\n<hr>\n<p id='losmift'>Previous relevant <a target=\"_blank\" title='Local Operating System Menu Intranet Feel Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/local-operating-system-menu-intranet-feel-tutorial\/' rel=\"noopener\">Local Operating System Menu Intranet Feel Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/open_extravaganza.php\" rel=\"noopener\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Local Operating System Menu Intranet Feel Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/open_extravaganza.gif\" title=\"Local Operating System Menu Intranet Feel Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Local Operating System Menu Intranet Feel Tutorial<\/p><\/div>\n<p>Because we are fortunate enough to have the great <a target=\"_blank\" title='MAMP for Apache\/PHP\/MySql on Mac OS X local web server' href='http:\/\/www.mamp.info' rel=\"noopener\">MAMP<\/a> local Apache\/PHP\/MySql web server in our macOS MacBook Air programming life &#8230;<\/p>\n<ul>\n<li>we have a great testing platform to go to before uploading any software to the public RJM Programming domain (quite often as a web application) there<\/li>\n<li>it can be an &#8220;Intranet feeling&#8221; partner to our public RJM Programming domain<\/li>\n<\/ul>\n<p>So, what do we mean by &#8220;Intranet feeling&#8221;?  Well, have you ever been involved at a workplace that combined &#8230;<\/p>\n<ul>\n<li>a public facing website on the <strong>Internet<\/strong> &#8230; but which had a &#8230;<\/li>\n<li>members area for &#8220;office use only&#8221; that if you logged into would take you into a woooorrrrllllddd of procedures and advice and documentation and health and safety rules etcetera etcetera etcetera related to that company, the data of which is &#8220;not public&#8221; &#8230; well, that &#8220;not public&#8221; bit can sometimes be referred to as an <strong>Intranet<\/strong>\n<\/li>\n<\/ul>\n<p>?   Well &#8230; &#8230; &#8230; &#8230; <font size=1>(four holes in the ground)<\/font> &#8230; <font size=1>(make that 5 or 6)<\/font> &#8230; we did\/have.  And we are awwwwwffffuuuulllllyyy fond of the concept.  The thing is though, we are using that &#8220;non public&#8221; &#8230;<\/p>\n<blockquote><p>\nIntranet &#8220;feeling&#8221;\n<\/p><\/blockquote>\n<p> &#8230; interfacing to, by and large, offer new web application (quite often PHP) ideas because back at the MAMP local Apache\/PHP\/MySql local web server we have the freedom to install software not allowed when you host a public website (as well as macOS having some brilliantly unique command line commands such as &#8220;open&#8221; and <a target=\"_blank\" title='say command information from Apple' href='https:\/\/ss64.com\/osx\/say.html' rel=\"noopener\">&#8220;say&#8221;<\/a> <font size=1>(for which we&#8217;d ask you to <a target=\"_blank\" title='macos_say_record.php' href='https:\/\/www.rjmprogramming.com.au\/macos_say_record.php---------------------------------GETME' download='macos_say_record.php' rel=\"noopener\">download<\/a> to a macOS MAMP port 8888 Document Root folder the PHP <a target=\"_blank\" title='macos_say_record.php' href='https:\/\/www.rjmprogramming.com.au\/macos_say_record.php---------------------------------GETME' rel=\"noopener\">macos_say_record.php<\/a>)<\/font> to offer) perhaps that little bit different to the usual Intranet usage <font size=1>(hence <a target=\"_blank\" href='\/PHP\/animegif\/nala_timelapse.mp4' rel=\"noopener\">Nala<\/a>&#8216;s use of the word <strike><a target=\"_blank\" title=\"?\" href='https:\/\/www.youtube.com\/watch?v=eTHPe7wFMOY' rel=\"noopener\">fillings<\/a><\/strike>feelings)<\/font>, unless you run the hosting company, <span><a target=\"_blank\" title='?' class=\"audioytplay\" href='https:\/\/www.youtube.com\/watch?v=PtR4cWb4HNg' rel=\"noopener\">that is<\/a><\/span> &#8230; and <span><a target=\"_blank\" title='?' class=\"audioytplay\" href='https:\/\/www.youtube.com\/watch?v=PtR4cWb4HNg' rel=\"noopener\">that is<\/a><\/span><sup>n&#8217;t<\/sup><\/a> us &#8230; though if <a target=\"_blank\" href='\/HTMLCSS\/nala_downstairs.jpg' rel=\"noopener\">Nala<\/a> wants to entertain a gentleman caller one of these days &#8230; well &#8230; what are we going to say?!   Hmmmmm?!<\/p>\n<p>Now, when we presented <a target=\"_blank\" title='YouTube API Caller Radio Play Playlist Windows Local System Tutorial' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/youtube-api-caller-radio-play-playlist-windows-local-system-tutorial\/' rel=\"noopener\">YouTube API Caller Radio Play Playlist Windows Local System Tutorial<\/a> we threw down the gauntlet, <a target=\"_blank\" title='Luna' href='\/HTMLCSS\/luna_car.jpg' rel=\"noopener\">Luna<\/a> would say, venturing &#8230;<\/p>\n<blockquote><p>\n\u2026 as your starting gambit, here, where the equivalent of macOS\u2019s \u201copen\u201d is \u201cexplorer.exe\u201d on Windows (ie. the File Explorer) \u2026 <strong>almost as cute<\/strong>!\n<\/p><\/blockquote>\n<p><strong>The audacity<\/strong><sup>, <a target=\"_blank\" title='Nala' href='\/nala_praise_be.jpg' rel=\"noopener\">Nala<\/a><\/sup>?!<\/p>\n<p>Well, we don&#8217;t want to involve ourselves in a &#8220;software war&#8221; here, but the &#8220;bedside better scrutiny&#8221; of the great <a target=\"bank\" tite='https:\/\/scriptingosx.com\/2017\/02\/the-macos-open-command\/' href='\/\/scriptingosx.com\/2017\/02\/the-macos-open-command\/' rel=\"noopener\">https:\/\/scriptingosx.com\/2017\/02\/the-macos-open-command\/<\/a> advice has only enhanced respect for the macOS <a target=\"bank\" tite='https:\/\/scriptingosx.com\/2017\/02\/the-macos-open-command\/' href='\/\/scriptingosx.com\/2017\/02\/the-macos-open-command\/' rel=\"noopener\">open<\/a> command&#8217;s talents, which go far beyond just being able to open a URL from the macOS &#8220;Terminal application&#8221; command line in your default web browser.<\/p>\n<p>How do we count the ways &#8230; <a target=\"_blank\" title='Luna' href='\/HTMLCSS\/luna_vehicle.jpg' rel=\"noopener\">Luna<\/a>?!!!!   See the compartmentalization and modularization at play <font size=1>(not the command)<\/font> here, <strike>Dumbo<\/strike><strike><sub><a target=\"_blank\" title=\"?\" href='https:\/\/www.youtube.com\/watch?v=lPKjA_7MVgQ' rel=\"noopener\">web master<\/a><\/sub><\/strike>bugalugs?!<\/p>\n<p>Anyway, we&#8217;re off and running on a new project with these themes.  The first draft concentrates on ..<\/p>\n<ol>\n<li>macOS .. open &#8230; MAMP &#8230; but &#8230;<\/li>\n<li>Windows &#8230; explorer.exe &#8230; MAMP<\/li>\n<\/ol>\n<p> &#8230; is there for the popcorn and beer nuts <font size=1>(best in that order)<\/font> and as you can see below this new web application (best <a download=\"open_extravaganza.php\" target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/open_extravaganza.php_GETME\" rel=\"noopener\">downloaded<\/a> as <a data-download=\"open_extravaganza.php\" target=\"_blank\" href=\"https:\/\/www.rjmprogramming.com.au\/open_extravaganza.php_GETME\" rel=\"noopener\">open_extravaganza.php<\/a> filename to MAMP&#8217;s Document Root folder\/directory) is kind of boring to begin with interfacing to our public RJM Programming website <font size=1>(though if you have no Apache\/PHP\/MySql local web server, and want to install one, a right click on the dropdown below, for your non-mobile platform is a possibility for port 8888 on macOS and port 80 (ie. the default) on Windows)<\/font> &#8230;<\/p>\n<p><iframe id=thisiffy src='\/open_extravaganza.php' style=width:100%;height:800px;><\/iframe><\/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='#d70747' onclick='var dv=document.getElementById(\"d70747\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/open\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d70747' 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='#d70772' onclick='var dv=document.getElementById(\"d70772\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/multiple\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d70772' 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='#d70783' onclick='var dv=document.getElementById(\"d70783\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/sleep\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d70783' 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='#d70792' onclick='var dv=document.getElementById(\"d70792\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/share\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d70792' 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='#d70798' onclick='var dv=document.getElementById(\"d70798\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/operator\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d70798' 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='#d70820' onclick='var dv=document.getElementById(\"d70820\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/commentary\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d70820' 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='#d70825' onclick='var dv=document.getElementById(\"d70825\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/hashtag\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d70825' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Around here &#8230; it&#8217;s official &#8230; we&#8217;re having a morph! Please &#8230; please &#8230; no congratulations yet?! And thanks for the tomatoes &#8230; very ripe?! Anyway, yesterday&#8217;s Local Operating System Menu Intranet Feel Commentary Tutorial has struck a chord in &hellip; <a href=\"https:\/\/www.rjmprogramming.com.au\/ITblog\/text-to-speech-hashtagging-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,29,37],"tags":[3028,85,112,126,1653,3697,2829,174,4033,2127,2147,319,327,5344,1750,360,3471,380,386,400,5341,5342,5343,436,452,4387,557,3961,621,624,714,2178,744,1830,2092,4032,3987,3049,885,2269,2273,899,932,1740,950,1772,997,1761,5346,5345,1069,2350,1114,1866,1116,1133,1137,3942,2359,1159,2334,1215,1258,2027,1319,1343,1345,3214,4525,1411,1583,4483,1435],"class_list":["post-70825","post","type-post","status-publish","format-standard","hentry","category-elearning","category-event-driven-programming","category-operating-system","category-tutorials","tag-action","tag-apache","tag-attribute","tag-background","tag-base64","tag-base64_decode","tag-btoa","tag-button","tag-commentary","tag-cursor","tag-delimiter","tag-desktop","tag-did-you-know","tag-dmain","tag-document-root","tag-download","tag-dropdowm","tag-email","tag-encryption","tag-event","tag-explorer","tag-explorer-exe","tag-file-explorer","tag-finder","tag-form","tag-functionality","tag-hashtag","tag-hashtagging","tag-internet","tag-intranet","tag-local-web-server","tag-macos","tag-mamp","tag-method","tag-multiple","tag-navigator-platform","tag-oncontextmenu","tag-open","tag-operating-system-2","tag-operator","tag-option","tag-parse","tag-php","tag-ping","tag-platform","tag-port","tag-programming","tag-prompt","tag-public-domain","tag-public-website","tag-right-click","tag-say","tag-security","tag-select","tag-selection","tag-share","tag-sharing","tag-shell_exec","tag-sleep","tag-sms","tag-submit","tag-submit-button","tag-text-to-speech","tag-timeout","tag-tutorial","tag-upload","tag-url","tag-user-interaction","tag-wait","tag-web-server","tag-window","tag-window-btoa","tag-windows"],"_links":{"self":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/70825"}],"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=70825"}],"version-history":[{"count":13,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/70825\/revisions"}],"predecessor-version":[{"id":70852,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/70825\/revisions\/70852"}],"wp:attachment":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/media?parent=70825"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/categories?post=70825"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/tags?post=70825"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}