{"id":46415,"date":"2019-09-16T03:01:31","date_gmt":"2019-09-15T17:01:31","guid":{"rendered":"http:\/\/www.rjmprogramming.com.au\/ITblog\/?p=46415"},"modified":"2019-09-16T06:24:57","modified_gmt":"2019-09-15T20:24:57","slug":"c-x11-analogue-clock-timezone-tutorial","status":"publish","type":"post","link":"https:\/\/www.rjmprogramming.com.au\/ITblog\/c-x11-analogue-clock-timezone-tutorial\/","title":{"rendered":"C++ X11 Analogue Clock Timezone Tutorial"},"content":{"rendered":"<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/Mac\/get_tz.php\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"C++ X11 Analogue Clock Timezone Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/Mac\/x11_analogue_clock_timezone.jpg\" title=\"C++ X11 Analogue Clock Timezone Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">C++ X11 Analogue Clock Timezone Tutorial<\/p><\/div>\n<p>Onto yesterday&#8217;s <a title='C++ X11 Analogue Clock Animation Tutorial' href='#c++x11acat'>C++ X11 Analogue Clock Animation Tutorial<\/a> we wanted to optionally &#8230;<\/p>\n<ul>\n<li>involve, for us, what is the meeting place of &#8220;where&#8221; and &#8220;when&#8221;, that being timezones &#8230; and because we are familiar with timezone concepts with it, we &#8230;<\/li>\n<li>involve PHP as an optional &#8220;helperer outerer&#8221; of &#8230;<\/li>\n<li> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=HTTP:\/\/www.rjmprogramming.com.au\/Mac\/x1.cc--GETME\" title=\"x1.cc\">the changed<\/a> <a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/Mac\/x1.cc--GETME\" title=\"x1.cc\">x1.cc<\/a> C++ supervisor &#8230; which nows funnels functionality via taking notice of &#8230;<\/li>\n<li>command line arguments &#8230; additional ones defining &#8220;Europe\/Berlin&#8221; style timezone names<\/li>\n<\/ul>\n<p>We slunk the word &#8220;optionally&#8221; in, as it is file existence in C++ &#8230;<\/p>\n<p><code><br \/>\nbool doesFileExist(const std::string& name) { \/\/ thanks to <a target=_blank title='https:\/\/stackoverflow.com\/questions\/46292764\/check-for-file-existence-in-c-without-creating-file' href='https:\/\/stackoverflow.com\/questions\/46292764\/check-for-file-existence-in-c-without-creating-file'>https:\/\/stackoverflow.com\/questions\/46292764\/check-for-file-existence-in-c-without-creating-file<\/a><br \/>\n    if (FILE *file = fopen(name.c_str(), \"r\")) {<br \/>\n        fclose(file);<br \/>\n        return true;<br \/>\n    } else {<br \/>\n        return false;<br \/>\n    }<br \/>\n}<br \/>\n<\/code><\/p>\n<p> &#8230; and PHP&#8217;s <a target=_blank title='PHP file_exists information' href='http:\/\/php.net\/manual\/en\/function.file-exists.php'>file_exists<\/a> that directs traffic for some of this.<\/p>\n<p>Also in PHP it is the &#8220;getting back to the operating system&#8221; <a target=_blank title='PHP exec() method information' href='http:\/\/php.net\/manual\/en\/function.exec.php'><i>exec<\/i><\/a> and <a target=_blank title='PHP passthru() method information' href='http:\/\/php.net\/manual\/en\/function.passthru.php'><i>passthru<\/i><\/a> functions (and C++&#8217;s <a target=_blank title='C++ std::system' href='https:\/\/en.cppreference.com\/w\/cpp\/utility\/program\/system'>std::system<\/a>) that help out because on any one command line invocation you can go &#8230;<\/p>\n<p><code><br \/>\nTZ=Europe\/Berlin date<br \/>\n<\/code><\/p>\n<p> &#8230; on Linux or macOS (or Mac OS X), at least, to get the command line output you the current date and time in (the timezone place) Berlin (and so PHP <i>passthru<\/i> <a target=_blank title='?' href='https:\/\/www.youtube.com\/watch?v=XXSGV5wEv1o'>comes into its own<\/a>).<\/p>\n<p>This helping <a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/Mac\/get_tz.php_GETME\" title=\"get_tz.php\">get_tz.php<\/a>&#8216;s <a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/Mac\/get_tz.php\" title=\"Click picture\">live run<\/a> code caters for two modes of use, out of the three we sometimes talk about, those being &#8230;<\/p>\n<ul>\n<li>command line usage &#8230; eg. &#8220;php get_tz.php&#8221; &#8230; helping out the C++ X11 command line &#8230; as well as (and differentiated in code via &#8220;if (isset($argc)) {   } else {   }&#8221; test)  &#8230;<\/li>\n<li>surfing the net &#8230; allowing us to have that link above functional<\/li>\n<\/ul>\n<p> &#8230; and we just did not consider a use for <a target=_blank title='Linux or unix curl information from computerhope' href='http:\/\/www.computerhope.com\/unix\/curl.htm'>&#8220;Curl&#8221;<\/a> mode of use, though it may work for this too, we are not sure.<\/p>\n<hr>\n<p id='c++x11acat'>Previous relevant <a target=_blank title='C++ X11 Analogue Clock Animation Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/c++-x11-analogue-clock-animation-tutorial\/'>C++ X11 Analogue Clock Animation Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/Mac\/x11_analogue_clock_animated.jpg\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"C++ X11 Analogue Clock Animation Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/Mac\/x11_analogue_clock_animated.jpg\" title=\"C++ X11 Analogue Clock Animation Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">C++ X11 Analogue Clock Animation Tutorial<\/p><\/div>\n<p>If ever there was a benefit some additional animation functionality could make, it would be to yesterday&#8217;s <a title='C++ X11 Analogue Clock Primer Tutorial' href='#c++x11acpt'>C++ X11 Analogue Clock Primer Tutorial<\/a> of an analogue clock (only) at a snapshot of time.  Many of us need the clock for more than a snapshot.<\/p>\n<p>X11 animation strategies are not necessarily straightforward, and reviewing the Internet discussion about this, there are many and varied ways to approach this.  We decided to turn the C++&#8217;s <i>main<\/i> function into <i>redraw<\/i> function called by the new <i>main<\/i> function of <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=HTTP:\/\/www.rjmprogramming.com.au\/Mac\/x1.cc-GETME\" title=\"x1.cc\">the changed<\/a> <a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/Mac\/x1.cc-GETME\" title=\"x1.cc\">x1.cc<\/a> &#8230;<\/p>\n<p><code><br \/>\nint main() {<br \/>\n int jj=0;<br \/>\n std::string suff (\" ... Click to refresh as required\\0\");<br \/>\n while(1) {<br \/>\n   if (dsp) {<br \/>\n    XDestroyWindow( dsp, win );<br \/>\n    XCloseDisplay( dsp );<br \/>\n   }<br \/>\n   redraw(suff.substr (jj), jj);<br \/>\n   jj = ((jj + 1) % suff.length());<br \/>\n }<br \/>\n return 0;<br \/>\n}<br \/>\n<\/code> <\/p>\n<p> &#8230; for that revamped <i>redraw<\/i> function now adding a second hand (to the minute and hour hands of yesterday&#8217;s incarnation), now that we have animation.  What was the crucial <b>difference<\/b> to allow for <i>automated<\/i> animation (or with the old &#8220;click&#8221; method, as well), at the end of this C++ function &#8230;<\/p>\n<p><code><br \/>\n  eventMask = <b>ResizeRedirectMask|<\/b>StructureNotifyMask|ButtonPressMask|ButtonReleaseMask;<br \/>\n  XSelectInput(dsp,win,eventMask); \/\/ override prev<br \/>\n<br \/> <br \/>\n  int i=0;<br \/>\n<br \/> <br \/>\n  do {<br \/>\n    i++;<br \/>\n    XNextEvent( dsp, &evt );   \/\/ calls XFlush()<br \/>\n    <i>usleep(200);<br \/>\n    time_ptr2 = time(NULL);<br \/>\n    tm_local2 = localtime(&time_ptr2);<br \/>\n    seconds = difftime(time(NULL), time_ptr);<\/i><br \/>\n    <b>XResizeWindow(dsp, win, 200 + (i % 11), 200 + (i % 11));<\/b><br \/>\n  } while( evt.type != ButtonRelease<i> && seconds &lt; 1.0<\/i> );<br \/>\n<br \/> <br \/>\n  XDestroyWindow( dsp, win );<br \/>\n  XCloseDisplay( dsp );<br \/>\n  dsp = NULL;<br \/>\n<br \/> <br \/>\n  }<br \/>\n  catch (int ez) { printf(\"%i\\n\", ez); }<br \/>\n<br \/> <br \/>\n  return 0;<br \/>\n<\/code><\/p>\n<p>Thanks go to &#8230;<\/p>\n<ul>\n<li><a target=_blank title='http:\/\/www.cplusplus.com\/reference\/ctime\/difftime\/' href='http:\/\/www.cplusplus.com\/reference\/ctime\/difftime\/'>HTTP:\/\/www.cplusplus.com\/reference\/ctime\/difftime\/<\/a><\/li>\n<li><a target=_blank title='https:\/\/stackoverflow.com\/questions\/56454948\/why-does-it-matter-when-you-draw-in-xwindows' href='https:\/\/stackoverflow.com\/questions\/56454948\/why-does-it-matter-when-you-draw-in-xwindows'>https:\/\/stackoverflow.com\/questions\/56454948\/why-does-it-matter-when-you-draw-in-xwindows<\/a><\/li>\n<li><a target=_blank title='https:\/\/www.codeproject.com\/Questions\/771859\/How-to-get-Linux-machine-time-zone-using-Cplusplus' href='https:\/\/www.codeproject.com\/Questions\/771859\/How-to-get-Linux-machine-time-zone-using-Cplusplus'>https:\/\/www.codeproject.com\/Questions\/771859\/How-to-get-Linux-machine-time-zone-using-Cplusplus<\/a><\/li>\n<li><a target=_blank title='https:\/\/www.geeksforgeeks.org\/stdstringassign-in-c\/' href='https:\/\/www.geeksforgeeks.org\/stdstringassign-in-c\/'>https:\/\/www.geeksforgeeks.org\/stdstringassign-in-c\/<\/a><\/li>\n<li><a target=_blank title='https:\/\/stackoverflow.com\/questions\/17816787\/c-string-char-concatenation?rq=1' href='https:\/\/stackoverflow.com\/questions\/17816787\/c-string-char-concatenation?rq=1'>https:\/\/stackoverflow.com\/questions\/17816787\/c-string-char-concatenation?rq=1<\/a><\/li>\n<\/ul>\n<p> &#8230; for today&#8217;s work.<\/p>\n<hr>\n<p id='c++x11acpt'>Previous relevant <a target=_blank title='C++ X11 Analogue Clock Primer Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/c++-x11-analogue-clock-primer-tutorial\/'>C++ X11 Analogue Clock Primer Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/Mac\/x11_analogue_clock.jpg\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"C++ X11 Analogue Clock Primer Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/Mac\/x11_analogue_clock.jpg\" title=\"C++ X11 Analogue Clock Primer Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">C++ X11 Analogue Clock Primer Tutorial<\/p><\/div>\n<p>Continuing on with the <a target=_blank title='X112.7.5 \u2013 XQuartz' href='http:\/\/xquartz.macosforge.org\/trac\/wiki\/X112.7.5'>X11<\/a> ideas of the recent <a title='Inkscape Vector Image Editor Watermark Tutorial' href='#iviewt'>Inkscape Vector Image Editor Watermark Tutorial<\/a> blog posting thread, today we turn our attention to you creating the software &#8230;<\/p>\n<ul>\n<li>for a single snapshot analogue clock &#8230; in an &#8230;<\/li>\n<li>X11 (for us, MacBook Pro Terminal) window &#8230; via &#8230;<\/li>\n<li>C++ &#8230; compiled via GCC, the GNU compiler, as per &#8230;<\/li>\n<li>\n<code><br \/>\n<a target=_blank title='GCC,the GNU compiler' href='https:\/\/gcc.gnu.org\/'>g++<\/a> -I \/usr\/X11\/include -L \/usr\/X11\/lib -o x1 <a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/Mac\/x1.cc_GETME\" title=\"x1.cc\">x1.cc<\/a> -lX11<br \/>\n<\/code>\n<\/li>\n<li>execute via &#8230;<br \/>\n<code><br \/>\n.\/x1<br \/>\n<\/code>\n<\/li>\n<\/ul>\n<p> &#8230; as you can see in action with today&#8217;s <a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/Mac\/x11_analogue_clock.jpg\" title=\"Tutorial picture\">tutorial picture<\/a>.<\/p>\n<p>Of huge help as a resource for the basis of C++ code, thanks, was &#8230;<\/p>\n<ul>\n<li><a target=_blank title='https:\/\/www.linuxjournal.com\/article\/4879' href='https:\/\/www.linuxjournal.com\/article\/4879'>https:\/\/www.linuxjournal.com\/article\/4879<\/a> &#8230; as well as &#8230;<\/li>\n<li><a target=_blank title='HTTP:\/\/www-h.eng.cam.ac.uk\/help\/tpl\/graphics\/X\/X11R5\/node21.html' href='HTTP:\/\/www-h.eng.cam.ac.uk\/help\/tpl\/graphics\/X\/X11R5\/node21.html'>HTTP:\/\/www-h.eng.cam.ac.uk\/help\/tpl\/graphics\/X\/X11R5\/node21.html<\/a><\/li>\n<li><a target=_blank title='https:\/\/tronche.com\/gui\/x\/xlib\/display\/display-macros.html' href='https:\/\/tronche.com\/gui\/x\/xlib\/display\/display-macros.html'>https:\/\/tronche.com\/gui\/x\/xlib\/display\/display-macros.html<\/a><\/li>\n<li><a target=_blank title='https:\/\/www.geeksforgeeks.org\/localtime-function-in-c\/' href='https:\/\/www.geeksforgeeks.org\/localtime-function-in-c\/'>https:\/\/www.geeksforgeeks.org\/localtime-function-in-c\/<\/a><\/li>\n<\/ul>\n<hr>\n<p id='iviewt'>Previous relevant <a target=_blank title='Inkscape Vector Image Editor Watermark Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/inkscape-vector-image-editor-watermark-tutorial\/'>Inkscape Vector Image Editor Watermark Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/Mac\/bannerwatermark.jpg\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Inkscape Vector Image Editor Watermark Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/Mac\/bannerwatermark.jpg\" title=\"Inkscape Vector Image Editor Watermark Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Inkscape Vector Image Editor Watermark Tutorial<\/p><\/div>\n<p>It\u2019s probably a dual edge sword an uploader\u2019s attitude to watermarks.   For some it may be annoying that an image is not freeware when pretty non-specific and uncontroversial.  For others they may like watermarks for a couple of reasons &#8230; <\/p>\n<ul>\n<li>They, too, find they want to protect their content in some way &#8230; and, as is often the case with me &#8230;<\/li>\n<li>They like the aesthetics of watermarks<\/li>\n<\/ul>\n<p>And this is where we rejoin the recent <a target=_blank title='Inkscape' href='https:\/\/inkscape.org'>Inkscape<\/a> (desktop application vector image editor) discussions of recent times you can read about at <a title='Inkscape Vector Image Editor Logo Tutorial' href='#ivielt'>Inkscape Vector Image Editor Logo Tutorial<\/a> and start considering Inkscape&#8217;s talents with layers, a similar talent to that of <a target=_blank title='Gimp' href='http:\/\/gimp.org'>Gimp<\/a>.<\/p>\n<p>To research this we came upon <a target=_blank title='Excellent link' href='https:\/\/www.lifewire.com\/add-a-watermark-in-inkscape-1701913'>this excellent &#8220;Add a Watermark in Inkscape&#8221; link<\/a>, thanks.  It got us using Inkscape&#8217;s &#8230;<\/p>\n<ul>\n<li>Layer -&gt; AddLayer&#8230;<\/li>\n<li>Object -&gt; Fill and Stroke&#8230;<\/li>\n<\/ul>\n<p> &#8230; as we present ideas helped by <a target=_blank title='Excellent link' href='https:\/\/www.lifewire.com\/add-a-watermark-in-inkscape-1701913'>&#8220;Add a Watermark in Inkscape&#8221;<\/a> to help with this creation of &#8230;<\/p>\n<table>\n<tr>\n<th>(Export to) PNG result (two layers get exported to one)<\/th>\n<\/tr>\n<tr>\n<td><img decoding=\"async\" src=\"https:\/\/www.rjmprogramming.com.au\/Mac\/bannerwatermark.png\"><\/img><\/td>\n<tr>\n<tr>\n<th>(Export to) SVG result (retains the two layers)<\/th>\n<\/tr>\n<tr>\n<td><img decoding=\"async\" src=\"https:\/\/www.rjmprogramming.com.au\/Mac\/bannerwatermark.svg\"><\/img><\/td>\n<tr>\n<\/table>\n<ol>\n<li>Be in Inkscape (via XQuartz)<\/li>\n<li>File -&gt; Import (the Banner PNG)<\/li>\n<li>\n<blockquote cite='https:\/\/www.lifewire.com\/add-a-watermark-in-inkscape-1701913'><p>\nSelect Layer &gt; Add Layer. Placing the watermark on a separate layer makes it easier for you to move or alter later.\n<\/p><\/blockquote>\n<\/li>\n<li>\n<blockquote cite='https:\/\/www.lifewire.com\/add-a-watermark-in-inkscape-1701913'><p>\nSelect Add to create the new layer.\n<\/p><\/blockquote>\n<\/li>\n<li>Add some text that you have prepared ahead of time (that being website, email, phone number etcetera) via Text -&gt; Text and Font&#8230; window for Font Family and 8px size<\/li>\n<li>Select that text<\/li>\n<li>\n<blockquote cite='https:\/\/www.lifewire.com\/add-a-watermark-in-inkscape-1701913'><p>\nGo to Object &gt; Fill and Stroke.\n<\/p><\/blockquote>\n<\/li>\n<li>\n<blockquote cite='https:\/\/www.lifewire.com\/add-a-watermark-in-inkscape-1701913'><p>\nSelect the Fill tab (if it isn&#8217;t already selected), then drag the Opacity slider to the left to make the text semi-transparent.\n<\/p><\/blockquote>\n<\/li>\n<li>\n<blockquote cite='https:\/\/www.lifewire.com\/add-a-watermark-in-inkscape-1701913'><p>\nOnce satisfied, you can save the file and export the image in various formats including PNG.\n<\/p><\/blockquote>\n<p> &#8230; and we would add, to retain layers save as &#8220;Inkscape SVG&#8221;<\/li>\n<\/ol>\n<hr>\n<p id='ivielt'>Previous relevant <a target=_blank title='Inkscape Vector Image Editor Logo Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/inkscape-vector-image-editor-logo-tutorial\/'>Inkscape Vector Image Editor Logo Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/Mac\/logo_inkscape.jpg\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Inkscape Vector Image Editor Logo Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/Mac\/logo_inkscape.jpg\" title=\"Inkscape Vector Image Editor Logo Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Inkscape Vector Image Editor Logo Tutorial<\/p><\/div>\n<p>A lot of users like <i>consistency<\/i> with business related matters, such as your company&#8217;s banner, letterhead, email signature and today&#8217;s logo ideas we&#8217;re adding onto the recent <a title='Inkscape Vector Image Editor Business Card Tutorial' href='#iviebct'>Inkscape Vector Image Editor Business Card Tutorial<\/a>.<\/p>\n<p>The sad bit of the logo changeover from old &#8230;<\/p>\n<table>\n<tr>\n<th>Old<\/th>\n<th>New<\/th>\n<\/tr>\n<tr>\n<td><img alt='Old logo' title='Old logo' src='https:\/\/www.rjmprogramming.com.au\/MyBusinessUnidad\/Welcome_files\/logo_old_spider.jpg'><\/img><\/td>\n<td><img alt='Old logo' title='Old logo' src='https:\/\/www.rjmprogramming.com.au\/MyBusinessUnidad\/Welcome_files\/logo.jpg?c=r'><\/img><\/td>\n<\/tr>\n<tr>\n<td><img alt='Old logo' title='Old logo' src='https:\/\/www.rjmprogramming.com.au\/MyBusinessUnidad\/Welcome_files\/rjmhomewhite_was_okay.png'><\/img><\/td>\n<td><img alt='Old logo' title='Old logo' src='https:\/\/www.rjmprogramming.com.au\/MyBusinessUnidad\/Welcome_files\/rjmhomewhite.png?c=e'><\/img><\/td>\n<\/tr>\n<\/table>\n<p> &#8230; to new is to lose the &#8220;quirky&#8221; aspects to the &#8220;spider&#8221; and &#8220;web&#8221; connection, but a relief that now we have a much more easily recreateable logo based on shapes and linework and calligraphy that the <a target=_blank title='Inkscape' href='https:\/\/inkscape.org'>Inkscape<\/a> desktop application is so good at.<\/p>\n<p>Again, to aid with <i>consistency<\/i>, we base the logo on the previously created &#8220;banner&#8221;, <a title='Inkscape Vector Image Editor Business Card Tutorial' href='#iviebct'>much like we worked it<\/a> with the &#8220;business card&#8221;, as per &#8230;<\/p>\n<ol>\n<li>Be in Inkscape (via XQuartz)<\/li>\n<li>File -&gt; New from Template&#8230;<br \/>\n     <strike>Business Card A8 (74mm x 52mm)<\/strike> Generic canvas&#8230; set Custom Width: 102px, Custom Height: 77px &#8230; click &#8220;Create from Template&#8221; button<\/li>\n<li>File -&gt; Import (the Banner PNG)<\/li>\n<li>Fit into a <strike>Business Card<\/strike> Canvas size<\/li>\n<li>Add some <strike>text that you have<br \/>\n     prepared ahead of time (as above) &#8230;<br \/>\n     and we hope to get result<br \/>\n     like or better than at left<\/strike> &#8220;Draw Bezier curves and straight lines&#8221; work being the four black lines of an &#8220;m&#8221; that breaks the yellow ribbon calligraphy into (an imagined) &#8220;r&#8221; and &#8220;j&#8221; for the letters RJM within the company name &#8220;RJM Programming&#8221;, and use the &#8220;Rectangle&#8221; functionality to overlay a white rectangle on top of the text (we had for the &#8220;Banner&#8221;)<\/li>\n<li><b>Save As&#8230; PNG to MAMP document root<\/b><\/li>\n<li>Show Safari web browser sanity<br \/>\n     check<\/li>\n<li>Back at Inkscape (via XQuartz)<br \/>\n     use File -&gt; Print to<br \/>\n     additionally sanity check<\/li>\n<\/ol>\n<p> &#8230; and in turn, that created logo can &#8220;fit into&#8221; that second row logo, with the white background, above, in a similar fashion.<\/p>\n<p>Along the way, implementing this to the domain landing pages and blog, we noted, again, as we did at the recent <a target=_blank title='Wikipedia Flipcard Quiz Emoji Tutorial' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/wikipedia-flipcard-quiz-emoji-tutorial\/'>Wikipedia Flipcard Quiz Emoji Tutorial<\/a> &#8230;<\/p>\n<ul>\n<li>Sometimes when you involve HTML iframe elements and you have an issue with scroll bars that you do not want the CSS styling (with the iframe HTML) of &#8230;<br \/>\n<code><br \/>\n&lt;style&gt;<br \/>\n * { overflow: hidden !important; }<br \/>\n&lt;\/style&gt;<br \/>\n<\/code><br \/>\n &#8230; can resolve issues &#8230; and &#8230;\n<\/li>\n<li>\n<p><b><i>Did you know?<\/i><\/b><\/p>\n<p>When implementing many HTML img element change type of modifications, you make a change and nothing appears to happen, you (barring idiocy) may have run into an issue where the web browser you are on prefers to keep showing that image (img element) from the cache.  So might other users (who have visited your website in the past) out there.  But to force the cache to rethink itself both the &#8230;<\/p>\n<ol>\n<li>HTML iframe src= URL &#8230; and &#8230;<\/li>\n<li>HTML img src= (image) URL within that iframe&#8217;s HTML<\/li>\n<\/ol>\n<p> &#8230; could benefit, and most likely not be in any way adversely affected, by modifying the ? and\/or &amp; arguments of the URL (yes, even for image URLs)<\/p>\n<\/li>\n<\/ul>\n<p> &#8230; as we show you with today&#8217;s <a target=_blank href=\"https:\/\/www.rjmprogramming.com.au\/Mac\/logo_inkscape.jpg\" title=\"Click picture\">tutorial picture<\/a>.<\/p>\n<hr>\n<p id='iviebct'>Previous relevant <a target=_blank title='Inkscape Vector Image Editor Business Card Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/inkscape-vector-image-editor-business-card-tutorial\/'>Inkscape Vector Image Editor Business Card Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"https:\/\/www.youtube.com\/watch?v=rq58C6peG_M\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Inkscape Vector Image Editor Business Card Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/Mac\/Inkscape_Business_Card.jpg\" title=\"Inkscape Vector Image Editor Business Card Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Inkscape Vector Image Editor Business Card Tutorial<\/p><\/div>\n<p>Yesterday&#8217;s <a title='Inkscape Vector Image Editor Banner Tutorial' href='#iviebt'>Inkscape Vector Image Editor Banner Tutorial<\/a> set us to thinking that we&#8217;d like to base an A8 business card &#8230; spoiler alert &#8230;<\/p>\n<table style=\"width:100%;\">\n<tr>\n<td style='vertical-align:top;'><img decoding=\"async\" title=\"Inkscape Vector Image Editor Business Card Tutorial\" alt=\"Inkscape Vector Image Editor Business Card Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/Mac\/business_card.png\"><\/img><br \/>&#8230; on the vector graphics and even that text of the banner &#8230;<\/td>\n<td style='vertical-align:top;'><img decoding=\"async\" title=\"Inkscape Vector Image Editor Banner Tutorial\" alt=\"Inkscape Vector Image Editor Banner Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/Mac\/drawing.png\"><\/img><\/td>\n<\/tr>\n<\/table>\n<p> &#8230; created via the steps shown in the <a target=_blank title='YouTube' href='https:\/\/youtube.com'>YouTube<\/a> video below &#8230;<\/p>\n<p><iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/rq58C6peG_M\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe><\/p>\n<p>And below is that YouTube video&#8217;s transcript (<b>plus the Save As<\/b> (step) we forgot (on the actual video&#8217;s transcript)) &#8230;<\/p>\n<blockquote><p>\nWebsite: https:\/\/www.rjmprogramming.com.au<br \/>\nEmail: rmetcalfe@rjmprogramming.com.au<br \/>\nTelephone: 61 2 95163479<br \/>\nABN: 83 204 975 606<br \/>\n<br \/>\nDear Viewer,<br \/>\n<br \/>\nWelcome to macOS Inkscape (via XQuartz)<br \/>\nBusiness Card (via Banner 300x350px)<br \/>\ncreation tutorial.  We will:<br \/>\n<\/p>\n<ol>\n<li>Be in Inkscape (via XQuartz)<\/li>\n<li>File -&gt; New from Template&#8230;<br \/>\n     Business Card A8 (74mm x 52mm)<\/li>\n<li>File -&gt; Import (the Banner PNG)<\/li>\n<li>Fit into a Business Card size<\/li>\n<li>Add some text that you have<br \/>\n     prepared ahead of time (as above) &#8230;<br \/>\n     and we hope to get result<br \/>\n     like or better than at left<\/li>\n<li><b>Save As&#8230; PNG to MAMP document root<\/b><\/li>\n<li>Show Safari web browser sanity<br \/>\n     check<\/li>\n<li>Back at Inkscape (via XQuartz)<br \/>\n     use File -&gt; Print to<br \/>\n     additionally sanity check<\/li>\n<\/ol>\n<p> <br \/>\nThanks for watching.<br \/>\n<br \/>\nRJM Programming\n<\/p><\/blockquote>\n<hr>\n<p id='iviebt'>Previous relevant <a target=_blank title='Inkscape Vector Image Editor Banner Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/inkscape-vector-image-editor-banner-tutorial\/'>Inkscape Vector Image Editor Banner 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\/banner_inkscape.gif\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Inkscape Vector Image Editor Banner Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/Mac\/banner_inkscape.jpg\" title=\"Inkscape Vector Image Editor Banner Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Inkscape Vector Image Editor Banner Tutorial<\/p><\/div>\n<p>We got a job recently to create a banner for RJM Programming.  No worries, for our MacBook Pro runnning macOS Mojave 10.14.5.  Think <a target=_blank title='Apple Pages app' href='https:\/\/www.apple.com\/au\/pages\/'>Pages<\/a> or <a target=_blank title='Gimp' href='http:\/\/gimp.org'>Gimp<\/a> just for starters (or read <a target=_blank title='Useful link' href='https:\/\/www.vyond.com\/resources\/6-best-free-banner-maker-tools\/'>this useful link<\/a>).   But our specification involved a requirement for 300&#215;350 pixels, which is not a popular banner size.  Of course, you can &#8220;work&#8221; desktop graphical editors to output data in a variety of formats and sizes, but we think it might be best to decide on a method that comes from a <a target=_blank title=\"300x350 banner Google search, thanks\" href='https:\/\/www.google.com\/search?rlz=1C5CHFA_enAU832AU832&#038;biw=886&#038;bih=755&#038;ei=JMRbXb_pJenYz7sPuLOumAI&#038;q=300x350+banner&#038;oq=300x350+banner&#038;gs_l=psy-ab.3...25462.28317..29103...0.2..0.155.295.0j2......0....1..gws-wiz.......0i71j35i304i39.08By4JXpn_s&#038;ved=0ahUKEwi_i5_tl5HkAhVp7HMBHbiZCyMQ4dUDCAo&#038;uact=5'>&#8220;300&#215;350 banner&#8221;<\/a> online search.  And examining the resultant links got us to revisit the &#8220;vector graphics champion&#8221; freeware (and open source) <a target=_blank title='Inkscape' href='https:\/\/inkscape.org'>Inkscape<\/a> desktop application (added to our <a target=_blank title='The Best Things In Life Are Free ...' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/the-best-things-in-life-are-free'>The Best Things In Life Are Free &#8230;<\/a> list) we last talked about at <a title='Inkscape Vector Image Editor Primer Tutorial' href='#iviept'>Inkscape Vector Image Editor Primer Tutorial<\/a>.<\/p>\n<p>And so, with the great Inkscape, how did we create our 300&#215;350 pixel banner below?<\/p>\n<p><img style='width:300px;height:350px;' src='http:\/\/www.rjmprogramming.com.au\/Mac\/drawing.png' title='RJM Programming Banner 300x350 pixels via Inkscape'><\/img><\/p>\n<p>In broad brush terms &#8230;<\/p>\n<ol>\n<li>Click the Inkscape icon (which, after install, we arranged to reside in the Dock down the bottom of the screen)<\/li>\n<li>File -&gt; New &#8230; for blank vector graphics document &#8230; but we direct your attention to the &#8220;New from Template&#8230;&#8221; which could be really useful for you to avoid having to do the step below &#8230;<\/li>\n<li>File -&gt; Document Properties &#8230; Custom Size: Units &#8211; pixels, Width &#8211; 300, Height &#8211; 350 &#8230; Viewbox: Width &#8211; 300, Height &#8211; 350 &#8230; Close the Document Properties window via red close icon at top left<\/li>\n<li>Did the vector graphics artwork, involving, for us, Create 3d boxes,  Create and edit text objects, Draw calligraphic or brush strokes<\/li>\n<li>File -&gt; Save As&#8230; this is where we learn that Inkscape may be a vector graphics editor, but that doesn&#8217;t mean you can&#8217;t Save As another image type, and so with the Type dropdown, we choose Cairo PNG (*.png) <font size=1>(from the default Inkscape SVG (*.svg) format)<\/font> and after arranging a good path to save to, we entered Name: drawing.png &#8230; and clicked Save button<\/li>\n<li>Separately, to check the 300&#215;350 pixel requirement, we open our <a target=_blank title='MAMP for Apache\/PHP\/MySql on Mac OS X local web server' href='http:\/\/www.mamp.info'>MAMP<\/a> directory \/Applications\/MAMP\/htdocs\/drawing.png as http:\/\/localhost:8888\/drawing.png (in a Safari web browser window), open Develop -&gt; Show Web Inspector and click the Inspect button to highlight our Inkscape created PNG image to confirm its size as 300&#215;350 pixels<\/li>\n<\/ol>\n<p> &#8230; and rest assured it is possible via Inkscape&#8217;s File -&gt; Open&#8230; to open this (non-vector) PNG image that gets Imported back into the vector graphics that is Inkscape&#8217;s <strike>thang<\/strike>thing.<\/p>\n<p><img style='width:100%;' src='http:\/\/www.rjmprogramming.com.au\/Mac\/banner_inkscape.gif' title='RJM Programming Banner (300x350 pixels) creation steps via Inkscape'><\/img><\/p>\n<p><b><i>Did you know?<\/i><\/b><\/p>\n<p>We&#8217;re runnning macOS Mojave 10.14.5 here on this MacBook Pro in August, 2019.  Inkscape needs an <a target=_blank title='X112.7.5 \u2013 XQuartz' href='http:\/\/xquartz.macosforge.org\/trac\/wiki\/X112.7.5'>X11<\/a> terminal application to interface to, that being (called) XQuartz in this day and age.  But installing the 2.7.11 most recent XQuartz version, at the time of writing, caused issues with the <a target=_blank title='Inkscape' href='https:\/\/inkscape.org'>Inkscape<\/a> 0.92.2 installation.  You&#8217;d click the Inkscape icon and in the dock it would jump up and down then effectively die.  Even in Finder, Ctrl clicking to reveal Package Contents and get to the Unix executable in the Contents and then macOS folders, to click, same problem.  But, thanks to the advice at <a target=_blank title='Great link' href='http:\/\/www.inkscapeforum.com\/viewtopic.php?t=19119'>this great link<\/a>, we found that going back through the <a target=_blank title='XQuartz version releases' href='https:\/\/www.xquartz.org\/releases\/index.html'>XQuartz version releases<\/a> to its <a target=_blank title='X11 XQuartz version 2.7.9 version' href='https:\/\/www.xquartz.org\/releases\/XQuartz-2.7.9.html'>2.7.9<\/a> version cleared up all these issues.<\/p>\n<hr>\n<p id='iviept'>Previous relevant <a target=_blank title='Inkscape Vector Image Editor Primer Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/inkscape-vector-image-editor-primer-tutorial\/'>Inkscape Vector Image Editor 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\/inkscape.pdf\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Inkscape Vector Image Editor Primer Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/Mac\/inkscape-15of.jpg\" title=\"Inkscape Vector Image Editor Primer Tutorial\"  style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Inkscape Vector Image Editor Primer Tutorial<\/p><\/div>\n<p>As far as image editing goes at RJM Programming, we turn to &#8230;<\/p>\n<ul>\n<li><a target=_blank title='Paintbrush for Mac' href='http:\/\/paintbrush.sourceforge.net\/'>PaintBrush<\/a> (the Mac OS X one) for more than 90% of the simpler work &#8230; and then use &#8230;<\/li>\n<li><a target=_blank title='PreView (on a Mac) information from Apple' href='https:\/\/support.apple.com\/en-us\/HT201740'>Preview<\/a> (Mac OS X) occasionally to do with resizing tasks &#8230; but, more often, for the rest of the work we use &#8230;<\/li>\n<li><a target=_blank href='http:\/\/www.gimp.org' title='Gimp, or GIMP'>Gimp<\/a> (Mac OS X desk application as XQuartz or X11) for jobs requiring special effects or filters or opacity or colourization or hue control<\/li>\n<\/ul>\n<p>But what if you want to &#8220;Export As&#8230;&#8221; <a target=_blank title='HTML svg information from w3schools' href='https:\/\/www.w3schools.com\/html\/html5_svg.asp'>SVG<\/a>?  None of the applications above, &#8220;out of the box&#8221; &#8220;Export As&#8230;&#8221; SVG.  First off, let&#8217;s get a reason for this from <a target=_blank title='Useful link, thanks' href='https:\/\/askubuntu.com\/questions\/301540\/export-image-as-svg-in-gimp'>this very useful link<\/a>, thanks &#8230;<\/p>\n<blockquote cite='https:\/\/askubuntu.com\/questions\/301540\/export-image-as-svg-in-gimp'><p>\nGIMP is a raster graphics editor application. SVG is a form of vector graphics. If you want to edit SVG files, you should install the inkscape package and use Inkscape instead.\n<\/p><\/blockquote>\n<p>Yes, the SVG image format is a vector graphics image format, and that is the difference.  So we went along with the advice and used, for our Mac OS X system the DMG method of (free, open source) install at the <a target=_blank title='Inkscape' href='https:\/\/inkscape.org'>Inkscape<\/a> website to get things rolling along.<\/p>\n<p>Today&#8217;s PDF slideshow takes it up from that point, showing us Creating a 3D Box and dragging our way to creating a 3D Box shape that we &#8220;Save As&#8230;&#8221; (because now we are well and truly in the &#8220;vector&#8221; woooorrrrrrlllllld) \/Applications\/MAMP\/htdocs\/drawing.svg &#8230; why?  Well, it&#8217;s our way to remind you, as we so often do, that the <a target=_blank title='MAMP local Apache\/PHP\/MySql web server' href='http:\/\/mamp.info'>MAMP<\/a> local Apache\/PHP\/MySql web server document root, by default, points at \/Applications\/MAMP\/htdocs\/ and in a web browser, with MAMP activated, points at (the URL prefix) HTTP:\/\/localhost:8888\/ and so us lobbing onto &#8230;<\/p>\n<p><code><br \/>\nHTTP:\/\/localhost:8888\/<a target=_blank title='drawing.svg' href='http:\/\/www.rjmprogramming.com.au\/Mac\/drawing.svg'>drawing.svg<\/a><br \/>\n<\/code> <\/p>\n<p> &#8230; has you seeing what we saw on MAMP (and then we uploaded this to the RJM Programming website place you are accessing with the link above).  What you need to do this is a (s)ftp desktop application like <a target=_blank title='FileZilla landing page from SourceForge ... thanks' href='https:\/\/filezilla-project.org\/'>FileZilla<\/a>.  Web server maintenance 101.<\/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='#d36946' onclick='var dv=document.getElementById(\"d36946\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/image\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d36946' 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='#d46106' onclick='var dv=document.getElementById(\"d46106\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/banner\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d46106' 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='#d46132' onclick='var dv=document.getElementById(\"d46132\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/business-card\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d46132' 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='#d46148' onclick='var dv=document.getElementById(\"d46148\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/logo\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d46148' 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='#d46204' onclick='var dv=document.getElementById(\"d46204\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/watermark\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d46204' 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='#d46395' onclick='var dv=document.getElementById(\"d46395\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/terminal\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d46395' 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='#d46406' onclick='var dv=document.getElementById(\"d46406\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/animation\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d46406' 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='#d46415' onclick='var dv=document.getElementById(\"d46415\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/timezone\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d46415' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Onto yesterday&#8217;s C++ X11 Analogue Clock Animation Tutorial we wanted to optionally &#8230; involve, for us, what is the meeting place of &#8220;where&#8221; and &#8220;when&#8221;, that being timezones &#8230; and because we are familiar with timezone concepts with it, we &hellip; <a href=\"https:\/\/www.rjmprogramming.com.au\/ITblog\/c-x11-analogue-clock-timezone-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,29,37],"tags":[3084,84,176,1933,234,3082,478,505,723,725,2178,997,1252,1693,1319,1583,1469],"class_list":["post-46415","post","type-post","status-publish","format-standard","hentry","category-elearning","category-operating-system","category-tutorials","tag-analogue-clock","tag-animation-2","tag-c","tag-clock","tag-command-line","tag-g","tag-gcc","tag-gnu","tag-mac","tag-mac-os-x","tag-macos","tag-programming","tag-terminal","tag-timezone","tag-tutorial","tag-window","tag-x11"],"_links":{"self":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/46415"}],"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=46415"}],"version-history":[{"count":2,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/46415\/revisions"}],"predecessor-version":[{"id":46417,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/46415\/revisions\/46417"}],"wp:attachment":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/media?parent=46415"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/categories?post=46415"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/tags?post=46415"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}